i2c读数据程序理解
从上图知道,sda的数据要在scl低电平期间跳变,在scl高电平期间采样sda的数据。
下面分析代码:在一次通信中,数据位有8个,那么读一个byte的数据,要采8次sda上的数据,故代码中用了8次循环,每次循环采样一次数据。
在每次循环中,scl设为高电平,将读入数据;temp用来存储读入的数据,对其左移1位,就可以存放本次读入的数据;如果sda此时为高那么将temp与0x01做或运算将最后一位置1,否则不用管,本来就是零;然后用将scl设置为0,并用_nop_();做一次空操作等待sda上的数据变化。
sda上的数据变化是在scl为低的时候发生,上面的代码中语句_nop_();就是为了等待sda的变化而用。
51单片机写iic时读数据为什么用uchar
I2C总线是PHLIPS公司推出的一种串行总线,I2C总线只有两根双向信号线。
其中一根是数据线SDA,另一根是时钟线SCL。
(1)基本过程:1.主机发出开始信号2.主机接着发出一字节的从机地址信息,其中最低位为读写控制码(1为读、0为写)高七位为从机器件地址3.从机发出认可信号4.主机开始发送信号,每发完一字节后,从机发出认可信号给主机5.主机发出停止信号
I2C总线如何直接搭载数据写数据读数据
展开全部I2C总线是PHLIPS公司推出的一种串行总线,I2C总线只有两根双向信号线。
其中一根是数据线SDA,另一根是时钟线SCL。
(1)基本过程:1.主机发出开始信号2.主机接着发出一字节的从机地址信息,其中最低位为读写控制码(1为读、0为写)高七位为从机器件地址3.从机发出认可信号4.主机开始发送信号,每发完一字节后,从机发出认可信号给主机5.主机发出停止信号...
I2C总线读取数据问题
展开全部 SDA总线是双向数据线,是单片机的I/O脚,单片机输出时是单片机控制SDA的高低。
但是读数据,即单片机输入时,数据是从I2C器件送来的。
如果在读之前SDA=0,即不拉高,则SDA线就一直处于低电平状态,被拉低了。
I2C不论送什么数据,都是0,即单片机只能读到全0了。
所以,必须先拉高,这样,SDA总线上才能受I2C器件控制,送出数据,单片机也才能读到正确的数据。
...
我的I2C可以写数据但是读数据还是没有实现
看到两个竖着的游标了吗,标有红色a, b字样,线是蓝色的,调两线位移,两线之间就可以测所有与时间相关的参数;另外水平还有两条蓝色游标线(虚的),上面线上有个方框,下面线上有个小圆,调这两根线到所需要的地方,就可以测试波形在垂直方向的所有参数。
另外这些参数可以显示在右上角的这个白色方框内。