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,还是直接看源代码吧...

猜你喜欢

转载自www.cnblogs.com/sovagxa/p/9161674.html