IIC的应答信号疑问

2019-10-15 05:30发布

u8 IIC_Wait_Ack(void)
{
        u8 ucErrTime=0;
        SDA_IN();      //SDA设置为输入  
        IIC_SDA=1;delay_us(1);         //释放数据线  
        IIC_SCL=1;delay_us(1);
        while(READ_SDA)
        {
                ucErrTime++;
                if(ucErrTime>250)
                {
                        IIC_Stop();
                        return 1;
                }
        }
       
        IIC_SCL=0;//时钟输出0           
        return 0;


加红字体SCL先置1在设置为0,是什么意思,,,按照IIC的时序应答信号,在地9个时钟周期是SDA数据线应保持低电平,,,应该改为下面程序
才合理
u8 IIC_Wait_Ack(void)
{
        u8 ucErrTime=0;
        SDA_IN();      //SDA设置为输入  
        IIC_SDA=1;delay_us(1);         //释放数据线  
       
        while(READ_SDA)
        {
                ucErrTime++;
                if(ucErrTime>250)
                {
                        IIC_Stop();
                        return 1;
                }
        }
        IIC_SCL=1;delay_us(1);
        IIC_SCL=0;//时钟输出0           
        return 0;






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zhu83453958
1楼-- · 2019-10-15 07:21
我想这个问题应该不是很大吧,应该都可以正常使用吧,书上对于STOP的写法我也觉得有点不太对,然后用自己的理解把SCL的顺序改了一下也能正常使用,然后我理解的是应该所有有用的信号都必须在SCL为高电平的状态下才能被识别,相当与SCL是一个片选的信号吧,也不知道理解的对与不对
正点原子
2楼-- · 2019-10-15 12:10
没错的哦
鑫鑫12
3楼-- · 2019-10-15 13:43
原来是这样的
鑫鑫12
4楼-- · 2019-10-15 14:12
 精彩回答 2  元偷偷看……
鑫鑫12
5楼-- · 2019-10-15 17:45
正点原子 发表于 2017-1-29 22:47
没错的哦

好的,我明白了

一周热门 更多>