IIC的原理
IIC是一种通信方式,使用两根线SDA\SCL可以实现主机和多从机的数据交互。IIC从机设备通过SDA\SCL两根线并联,可以实现最多128个IIC设备相互通信(128个设备由IIC的7位地址决定最大挂载量)。
IIC的通信时序
IIC的通信过程包括通信信号开始、数据交互、数据应答、通信信号结束。
1.IIC的通信信号开始:
1.首先把SDA\SCL信号拉高,并通过延时函数,让SDA在切换之前保持高电平一段时间(如图红色方框的1us)。
2.延时时间到达之后,然后操作SDA的信号电平从原来的高电平状态切换到低电平(如本文字上方图)SDA的斜坡)。
3.当SDA拉低之后,还需要延时一段时间,然后再让SCL的电平变为低电平(如本文字上方图)。
2.IIC的通信数据交互:
1.在信号开始发出之后,SDA\SCL的电平默认变为低电平。根据发送数据的电平,控制SDA的电平,先发送SDA电平再发送SCL的电平。
2.在SDA电平发送之后,SCL拉高电平,并持续一段时间,产生脉冲波形(如本文字上方图)。
脉冲信号处于高电平状态,数据发送出去。延时时间到,SCL变为低电平。
3.当SCL处于低电平的时候,SDA的数据切换,数据不发生。
3.数据应答
上方通信交互过程发送8位SDA信号之后,发送端的SDA信号默认变为高电平,此时发送端需要产生第9个SCL信号,SCL信号从低电平延时1us变为高电平,在SCL处于高电平的时候,数据接收端会返回一个答应的高低电平。此时,数据发送端需要检测返回的应答信号。(发送端接收答应信号,先拉高SCL信号,切换SDA信号再拉低SCL信号)(接收端发送答应信号先拉高SDA信号,再产生SCL高低电平)
4.IIC的通信信号结束:
通信开始信号,并经过数据交互的过程,需要使用结束信号结束通信。
1.停止信号,首先需要把SCL变为高电平(无论结束信号发生之前SCL信号电平是什么,现在都要变为高电平)。
2.当SCL变为高电平之后,SDA变为低电平(无论结束信号发生之前SDA信号电平是什么,现在都要变为低电平),并延时一段时间(如本文字上方图片,方框中的1us)。延时一段时间之后,切换SDA的电平变为高电平。
根据上方的通信开始信号、通信交互、通信应答、通信结束信号,可以组合数据发送和接收方式。