关于I2C传输协议的一些问题

2019-07-15 18:27发布

I2C关于开始和结束是这么说的SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
我在编程的时候这么写
void start()                //开始信号
{
        scl=1;
        delay();
        sda=1;
        delay();
        sda=0;
        delay();
}
void stop()                        //结束信号
{
        scl=1;
        delay();
        sda=0;
        delay();
        sda=1;
        delay();
}

这么写不能实现功能。而改成下面这样就可以了:
void start()  //开始信号
{       
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        delay();
}
void stop()   //停止
{
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();
}

感觉时序上是一样的啊,求助!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
狂客
2019-07-17 00:32
本帖最后由 狂客 于 2014-9-25 18:55 编辑

我试了 一下,好像P181那样做,就是在SCL=1的期间SDA变几次是没问题的哦,我之前的说法有误,你继续试一下。你可以再找找原因,我迟点再回来一起研究。像我这种半桶水的来帮人,果然有点坑,搞得新手有错误的观念,惨了惨了,你要重新思考不要我的观点,我的观点有错!。。。再认真检查一下程序。。。。

一周热门 更多>