其他地方我都理解了,下面红 {MOD}字体的两个地方不理解。
用的是来自原子战舰板子的IIC代码
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
// SDA_IN();
IIC_SDA=1;delay_us(1); //IIC_SDA为什么要拉高?看不懂这里?
IIC_SCL=1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL=0;
return 0; //这个return 返回的0 是给那个函数的用的?
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
//IIC_SDA=1;delay_us(1);
我把它屏蔽掉 如何。
在第九时钟,拉高SDA吗?
C语言是顺序执行的。
SDA=1;
SCL=1;
我感觉这个在第九个时钟,不符合逻辑啊。
第九个使用不是应该SCL=1,再SCL=0;吗!
我理解了。经过示波器测试,在主机释放总线的瞬间,slave 就已经把SDA给拉低了。非常快。
一周热门 更多>