系列文章目录
【STM32】| 01——常用外设 | USART
【STM32】| 01——常用外设 | I2C
失败了也挺可爱,成功了就超帅。 |
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是一种主从通信 支持多主多从的总线。
如图 可以看到索引 I2C 设备都通过 SDA/SCL 连接到总线 总线接有上拉电阻(后面讲原因)
I2C特性如下:
SCL和SDA都是双向的通过上拉电阻连接电源 总线在空闲时都输出高电平 总线具有 线与功能。
该协议约定了通信的起始、停止信号以及数据有效性、响应、仲裁同步、地址广播等。
起始信号:SCL高电平时,SDA由高电平转换为低电平
停止信号:SCL高电平时,SDA由低电平转换为高电平
起始信号和停止信号一般都是主机发出,当有起始信号时,总线就会处于被占用状态,当有停止信号时,总线处于空闲状态。
SDA数据线在 SCL 的每个时钟周期传输一位数据。传输时, SCL 为高电平的时候 SDA 表示的数据有效,即此时的 SDA 为高电平时表示数据“1”,为低电平时表示数据“0”。当 SCL为低电平时, SDA 的数据无效,一般在这个时候 SDA 进行电平切换(数据位切换高/低),为下一位要传输的数据做好准备(即下一位要传1 SDA切换为高电平反之低平)。