一、STM32专栏目录
二、Linux专栏目录
三、Android专栏目录
概述:
该文主要描述I2C总线的概念、I2C总线特征、I2C协议术语介绍、I2C协议(含代码)、I2C不同模式下的配置步骤。
误区介绍:
1、主机不等于发送器,从机不等于接收器。实际上是从机、主机都可以做发送器和接收器。
2、应答信号只由接收器发送,发送器接收。
1、I2C总线的概念
I2C总线是PHLIPS公司在20世纪80年代推出的一种串行总线。具有引脚少,硬件实现简单,可扩展性强的优点。
2、I2C总线特征
①、I2C物理连线上只需要两根线,一条串行数据线SDA,一条串行时钟线SCL,当总线空闲时,这两条线路都是高电平 。
②、I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址。
③、串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。
④、片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。
⑤、连接到相同总线的IC 数量只受到总线的最大电容400pF限制,如果所挂接的是相同型号的器件,则还受器件地址位的限制。
3、I2C协议术语介绍
术语 | 描述 |
---|---|
发送器 | 发送数据到总线的器件接收器 |
接收器 | 从总线接收数据的器件 |
主机 | 初始化发送 产生时钟信号和终止发送的器件 |
从机 | 被主机寻址的器件 |
多主机 | 同时有多于一个主机尝试控制总线,但不破坏报文 |
应答信号 | 接收器已经收到数据,继续请求发送数据 |
非应答信号 | 接收器已经收到数据,无需再发数据 |
4、I2C协议
4.1、位传输
由于连接到I2C总线的器件有不同种类的工艺,逻辑“0”低和“1”高的电平不是固定的,它由VDD的相关电平决定,每传输一个数据位就产生一个时钟脉冲。
4.2、数据的有效性
SDA 线上的数据必须在时钟的高电平周期保持稳定;数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变 。
简单的说SCL=0时写,SCL=1时候读。