网上关于IIC的资料有很多,今天我根据我自己的经历做一份总结
1、像51这类的不必在乎IO方向,但是像PIC一定要控制IO方向;
2、start and stop 是极其简单的:
start:在SCL高电平时,给SDA一个下降沿,然后再把SCL拉低(使之处于占用状态,下同);
stop:在SCL高电平时,给SDA一个上升沿,然后再把SCL拉低;
3、send:一共发八位数据,先理解第一次发送,先在SDA线上输出你想要的高或低电平【if(data&0x80)SDA=1;data=data<<1;】,然后给SCL一个下降沿(先置高后置低)。
4、receive:SDA方向设成输入,不再是2、3中的输出,先在SCL线上给一个上升沿(先置低后置高),然后data<<=1;data|=SDA;如此八次后,要把SCL拉低;
5、Readack:主机读应答。将SDA拉低,SDA方向设成输入,然后if(SDA == 1) {for(;;) ;//NACK},接下来给SCL一个下降沿,SDA设成输出,并拉低;
6、SendNack:主机发送非应答。在SDA高电平时,给SCL一个上升沿,然后把SCL拉低;这个函数作为中止发送的命令。
7、一定要注意某些高电平和低电平保持的时间。4.7us是必须的没有疑问。
8、我的上一篇日志中就有可用的IIC程序。
9、验证码明明对了却提示不对日志内容需要重写是几个意思???
10、提醒大家“保存发布”之前一定要先复制一下日志内容,以防不测!!!