IIC协议学习总结(HAL库编程)
一、概述
I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。
I2C总线有两条线,分别是数据线SDA,时钟线SCL。I2C的开始、数据传输、结束和应答都是用SDA和SCL的高低电平来实现,即时序。
二、I2C协议时序
I2C时序如下:
1、开始信号(发送方)
I2C的数据传输开始信号是 SCL=1 SDA下降沿 ,完成开始信号后的状态应该是 SCL=1 SDA=0 。
2、数据传输(发送方)
I2C数据传输时,SDA数据线只能在SCL=0时产生变化,SCL=1时发送该位数据(实际上是上升沿期间发送数据)。
3、应答信号(接收方)
接收方接受完8位数据后,可以产生应答信号,也可以不产生应答信号。先拉低SCL=0;若产生应答信号,则SDA=0,若不产生应答信号,则SDA=1;使SCL=1。
4、结束信号(发送方)
使SCL=1 SDA上升沿,完成结束信号。
三、代码实现
写了一个小时忘保存了T^T,还是直接看源代码吧...