I2C通信序列的典型特征
时间:2024-11-15
I2C(Inter-Integrated Circuit)是一种广泛使用的串行总线通信协议,主要用于短距离的设备间通信(如传感器、EEPROM、显示器等)。I2C通信协议有一些典型的特征和规则,以下是其通信序列的关键特征:
1. 总线结构
双线制通信:I2C总线只有两条信号线:
SCL(Serial Clock Line):时钟线,用于同步数据传输。
SDA(Serial Data Line):数据线,用于传输数据。
多主机、多从设备:I2C支持多个主机(Master)和多个从机(Slave)在同一总线上通信。
2. 通信序列
I2C通信的基本序列包括以下几个步骤:
起始信号(Start Condition,S):
主设备通过拉低SDA线(数据线)而SCL线保持高电平发出起始信号。起始信号标志着总线通信的开始。
在I2C总线上,通信序列的开始总是以起始信号为标志。
地址传输(Addressing):
主机发送7位或10位的从机地址,并附带一个读/写标志位(R/W)。地址通常是7位(高7位),而位则表示读/写操作(0为写,1为读)。
从设备根据匹配的地址来识别是否是该设备来进行通信。
读/写操作:
如果是写操作(R/W = 0),主机向从机发送数据。
如果是读操作(R/W = 1),主机从从机接收数据。
应答信号(Acknowledge,ACK):
每一位数据传输完成后,接收方(无论是主机还是从机)都会发出一个应答信号,即将SDA线拉低,表示数据已正确接收。如果接收方不发出应答(NACK,No Acknowledge),表示数据未成功接收或者通信结束。
每次发送一个字节的数据后,都会有一个ACK/NACK信号。
数据传输(Data Transfer):
数据传输是按字节进行的,每个字节由8位数据组成。每个字节后面都会有一个ACK信号,表示接收方已经收到数据。
停止信号(Stop Condition,P):
通信结束时,主机发送停止信号,停止信号是通过将SDA线从低电平拉高至高电平时,SCL线保持高电平状态下发送的。
停止信号标志着当前通信的结束,设备之间可以开始新的通信。
3. 时序和同步
同步传输:I2C是同步协议,数据的传输是由时钟(SCL线)同步的。时钟线的上升沿或下降沿控制数据的读取与写入。
位传输时序:每个数据位的传输都是在时钟信号的每个周期内进行的。通常在时钟的上升沿(或下降沿,取决于实现)进行数据读取或写入。
4. 数据传输格式
每个I2C数据字节(8位数据)后,都会有一个ACK/NACK信号。
数据传输格式:每8位数据后,接收方(从机或主机)都会发出ACK信号,告知发送方数据已正确接收。如果发送的数据没有接收到ACK信号,发送方会判断数据传输失败。
ACK/NACK:
ACK:如果接收设备(主机或从机)接收到数据后发出ACK,表示接收成功。
NACK:如果接收设备没有接收到数据或者发生了错误,则发出NACK,表示传输失败或结束。
5. 多主模式和从设备的地址选择
多主模式:I2C协议支持多个主设备在同一总线上进行通信,主设备之间通过总线争用来决定哪个设备可以控制总线。
从设备地址:每个从设备都有一个的地址。7位地址(高7位)是由制造商指定的,而位是R/W位,标志着操作是读取还是写入。
6. 总线速率
I2C总线的速度通常有几种不同的标准:
标准模式(Standard mode):100 kbps。
快速模式(Fast mode):400 kbps。
高速模式(High-speed mode):3.4 Mbps(用于更高速度的设备)。
超高速模式(Ultra-fast mode):用于一些特定的应用,速度可达到5 Mbps或更高。
I2C通信的典型时序图:
SDA: | S | A | A | A | A | P |
| | | | | | |
SCL: | | | | | | |
↑ ↑ ↑ ↑ ↑ ↑ ↑
↑ ↑ ↑ ↑ ↑ ↑ ↑
Start Address Data Stop
S = Start Condition(起始信号)
A = Acknowledge(应答信号)
P = Stop Condition(停止信号)
总结
I2C通信序列的典型特征包括:
通过SDA和SCL两条线路进行数据传输;
每次通信以起始信号(Start)开始,以停止信号(Stop)结束;
使用7位地址来识别设备,并通过R/W位决定是读取还是写入;
每个字节的传输后都会有一个ACK信号,用于确认数据是否接收成功;
支持多主机和多个从机,适合多设备之间的低速通信。