I2C协议简介
对于通讯协议,我们以分层的方式来理解,分为物理层和协议层。
简单来说物理层规定我们用嘴巴还是用肢体来交流,协议层则规定我们用中文还是英文来交流。
物理层
规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。(硬件)
I2C 通讯设备之间的常用连接方式
物理层特点:
- I2C的物理层就是一个总线,多个设备共用的数据线和时钟线。在一个I2C 通讯总线中,可连接多个I2C 通讯设备,支持多个通讯主机及多个通讯从机。
- 其中的数据线(SCL)是一个双向串行的数据线,时钟线(SDA)是串行时钟线。数据线即用来表示数据,时钟线用于数据收发同步。
- 总线上的每个设备都有自己的名字(地址)。
- 设备空闲时会输出高阻态,及与总线断开连接。当所有的设备输出高阻态时,总线会被上拉为高电平。
- 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线。
- 具有三种传输模式:标准模式传输速率为100kbit/s ,快速模式为400kbit/s ,高速模式下可达 3.4Mbit/s,但目前大多I2C 设备尚不支持高速模式。
- 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制 。
协议层
主要规定通讯逻辑,统一收发双方的数据打包、解包标准。(软件)
I2C 的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。
I2C基本读写过程
写数据
图中阴影部分表示:数据由主机传输至从机
图中空白部分表示:数据由从机传输至主机
- S:表示一个起始信号,该信号只能由主机发出
- SLAVE ADDRESS:表示主机发出的一个从机的地址 (待该地址的从机与其匹配后,即可传输数据)
- R / ~W:表示读写信号,0 表示 “写” ,及主机向从机写数据。
- A:表示从机向主机发送一个应答信号。在发送数据后的第 9 个时钟脉冲
- DATA:表示要写入的数据
- ~A:表示非应答信号,检测到该信号后表示从机不再接收数据
- P:表示停止信号,该信号只能由主机发出
读数据
图中阴影部分表示:数据由主机传输至从机
图中空白部分表示:数据由从机传输至主机
- S:表示一个起始信号,该信号只能由主机发