I2C通讯实时监测
时间:10-02
整理:3721RD
点击:
老大要我做一个I2C实时监测的工具,具体要求如下:1.通过UART将信息实时在PC上显示
2.通讯频率显示;
3.起始、停止信号显示;
4.有无ACK显示;
5.器件地址显示;
6.通讯数据显示;
我是一个做硬件的,单片机基本都忘了,现在我卡在了频率测试这了,I2C通讯频率100K到400K,用一般的单片机能检测出来吗?我用定时器测了一下,我定时10uS,发现有几uS的误差,单片机晶振是22M的,是我程序的问题,还是其他什么问题,请大神指点!
2.通讯频率显示;
3.起始、停止信号显示;
4.有无ACK显示;
5.器件地址显示;
6.通讯数据显示;
我是一个做硬件的,单片机基本都忘了,现在我卡在了频率测试这了,I2C通讯频率100K到400K,用一般的单片机能检测出来吗?我用定时器测了一下,我定时10uS,发现有几uS的误差,单片机晶振是22M的,是我程序的问题,还是其他什么问题,请大神指点!
1 400K=2.5us,如果是1T的话,22.1184M也凑合。
2 clk接中断脚,用以触发
3 data接任意IO,DATA和CLK都设置为IO高阻状态
4 中断后,启动定时器和再次中断关闭定时器需要花时间,这里需要软件补偿
5 先把频率测准了再说,其他的都是浮云。
今天测了一下I/O反应速度,不知道这样测是否准确,就是将IO打高再打低,最快380KHz,IO读写速度应该差不多吧。
用的单片机是单周期指令,22M的晶振就算是2T,400K也应该能应付,“400K=2.5us,如果是1T的话,22.1184M也凑合”不知是如何理解的,还请指点?
不是这样测试。
1T是指1个时钟1个指令,以前老的51是12个时钟,这样你的处理速度就会比较快。
我之前让你CLK接在中断上,因为判断你个下降沿或者上升沿,至少需要两个时钟周期:1个时钟周期读高,下个时钟周期读低,就判断为下降沿。理论上测量频率只要大于2倍的被测时钟即可,但是为了处理需要,需要远大于。
小编,在不?我对你的项目比较感兴趣,也请你每天更新一点嘛,好让我也学习学习。下面我在网上找到个你需要的东东,你参考一下
http://www.51hei.com/mcu/2046.html
串口打印监测感觉更方便 ,做成产品就算了 ……
sorry,到现在才看到你的回复,这I2C检测的东西没做了,弄坏了两块开发板,老大就让我停了,我就写了两句话,就是把一个IO打高然后再打低,开发板就再也烧录不了了,也不能擦除。还有我们总监的想法一天一个,经不起他折腾,就没弄了.
