IIC(Inter-Integrated Circuit)协议,又称为二线制接口总线,是一种由Philips公司(现为NXP半导体)开发的简单、高效的串行通信协议,常用于微控制器与各种外部设备如传感器、LCD显示器、实时时钟等之间的通信。这个协议允许通过仅两根线(SCL和SDA)进行多设备通信,极大地减少了硬件资源的需求。
IIC协议的核心在于它的同步串行数据传输方式。以下将详细解释IIC协议的关键要素:
1. **开始信号**:IIC通信开始于一个开始信号。当数据线SDA在时钟线SCL为高电平时由高变低,而SCL保持高电平,即构成了开始信号。这告诉总线上的所有设备,接下来的数据传输即将开始。
2. **地址位**:开始信号后,发送方会发送7位设备地址,其中最高位表示读写方向。如果为0,表示写操作;如果是1,则表示读操作。接着发送一个应答位,等待接收方确认。
3. **应答信号**:每个数据传输之后,接收方都需要给出一个应答信号。如果接收方正确接收到数据,它会在SCL为高电平时将SDA拉低,表示“应答”。反之,如果接收方无法接收或有错误,它会保持SDA为高电平,表示“非应答”。
4. **数据传输**:在开始信号和地址位之后,数据被一位一位地传输。每次数据传输,都是先发送最高位(MSB)。每个数据位传输后,接收方同样需要给出应答信号。如果需要连续传输多个字节,接收方在每个字节后都需应答,但在最后一个字节后,发送方不等待应答直接发送停止信号。
5. **停止信号**:IIC通信的结束由停止信号标志。当SDA在SCL为高电平时由低变高,同时SCL保持高电平,形成停止信号。这表明当前的数据传输已经结束,总线恢复正常状态,其他设备可以开始新的通信。
6. **时钟同步**:IIC协议中的时钟是由主设备(通常为微控制器)控制的,确保了所有设备以相同的速度传输数据。SCL线上的时钟脉冲是同步的,允许不同速度的设备在总线上有效通信。
7. **仲裁机制**:IIC总线上可以连接多个设备,当多个设备尝试同时发送数据时,仲裁机制避免了冲突。仲裁发生在每个时钟周期内,如果一个设备在SDA线上检测到的数据与其要发送的不同,它会立即停止发送,让其他设备继续。这样,总线上的数据始终是正确设备发出的。
8. **多主设备**:IIC协议允许多个主设备,这意味着系统中可以有多个设备启动通信,提高了系统的灵活性。
9. **扩展性**:IIC协议的简洁性和低硬件需求使其成为扩展系统的理想选择。只需要两根线就可以连接多个从设备,使得系统设计更加紧凑和高效。
总结,IIC协议是一种高效的串行通信协议,适用于微控制器与外部设备的通信,其独特的开始和停止信号、应答机制、时钟同步以及多设备仲裁等特点,使得它在嵌入式系统设计中广泛应用。了解并掌握IIC协议对于进行嵌入式系统开发至关重要。