系列文章目录
【STM32】| 01——常用外设 | USART
【STM32】| 01——常用外设 | I2C
失败了也挺可爱,成功了就超帅。 |
文章目录
- 1. 简介
- 2. I2C协议
- 2.1 I2C物理连接
- 2.2 I2C通信协议
- 2.2.1 起始和停止信号
- 2.2.2 数据有效性
1. 简介
I2C是一种常用的串行通信总线,由串行数据线SDA 和串线时钟线SCL组成。I2C是一种多主机控制总线,由飞利浦公司为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I2C 通讯协议(Inter-Integrated Circuit)是由于它引脚少,硬件实现简单,可扩展性强,不需要外部收发设备,被广泛地使用在系统内多个集成电路(IC)间的通讯。
I2C支持 0KHZ-5MHZ设备通信(hz相当于bps)。有如下几种模式
-
普通模式 ——100kHz
-
快速模式——400kHz
-
快速模式——1MHz
-
高速模式——3.4MHz
-
超高速模式——5MHz
我们常用400KHZ 在此基础上 Inter提出了SMBUS系统总线管理 该规范限制了通信速率10K-100KHZ.
I2C是一种主从通信 支持多主多从的总线。
2. I2C协议
2.1 I2C物理连接
如图 可以看到索引 I2C 设备都通过 SDA/SCL 连接到总线 总线接有上拉电阻(后面讲原因)
I2C特性如下:
- 总线只需两条线路:一条串行数据线 SDA 一条串行时钟线 SCL并利用电阻将电位上拉
- 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器
- 它是一个真正的多主机总线 如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁机制可防止数据被破坏
- 串行的 8位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速模式下可达 3.4Mbit/s 单向传输可以高达5Mbit/s
- 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整
- 连接到相同总线的 IC 数量只受到总线的最大电容 400pF 限制
SCL和SDA都是双向的通过上拉电阻连接电源 总线在空闲时都输出高电平 总线具有 线与功能。
2.2 I2C通信协议
该协议约定了通信的起始、停止信号以及数据有效性、响应、仲裁同步、地址广播等。
2.2.1 起始和停止信号
起始信号:SCL高电平时,SDA由高电平转换为低电平
停止信号:SCL高电平时,SDA由低电平转换为高电平
起始信号和停止信号一般都是主机发出,当有起始信号时,总线就会处于被占用状态,当有停止信号时,总线处于空闲状态。
2.2.2 数据有效性
SDA数据线在 SCL 的每个时钟周期传输一位数据。传输时, SCL 为高电平的时候 SDA 表示的数据有效,即此时的 SDA 为高电平时表示数据“1”,为低电平时表示数据“0”。当 SCL为低电平时, SDA 的数据无效,一般在这个时候 SDA 进行电平切换(数据位切换高/低),为下一位要传输的数据做好准备(即下一位要传1 SDA切换为高电平反之低平)。