各位大师,帮忙看看这个程序,多谢了。
时间:10-02
整理:3721RD
点击:
- uchar read_byte()//读一个字节
- {
- uchar i,k;
- scl=0;
- delay();
- sda=1;
- delay();
- for(i=0;i<8;i++)
- {
- scl=1;//上升沿时,IIC设备将数据放在sda线上,并在高电平期间数据已经稳定,可以接收啦
- delay();
- k=(k<<1)|sda;
- scl=0;//拉低SCL,使发送端可以把数据放在SDA上
- delay();
- }
- return k;
- }
- 这个程序是关于IIC通信的一个收字节的的函数,scl=0;delay();和SDA=1;DELAY();这两句的含义是什么?
就是将IIC时钟线拉低和拉高嘛,你看一下IIC通信的时序图就明白了。DELAY是限制时钟速度
建议你仔细看下I2C通信的时序
I2C读字节的时序逻辑,
兄弟,我看了没看明白。所以才请教的,你能不能指教一二?
为什么读的时候,要拉低SCL
SDA高电平或低电平状只能在SCL为低时才能改变。
多谢了!兄弟,我还是没有看得太透。
主机向从机开始读数据时,SCL=0,表明从机可以改变SDA上的状态,在从机要控制SDA时,主机必须释放SDA线,所以有了SDA=1这句是不?
