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;






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。