嵌入式——IIC
·
IIC
I2C是一种串行数据通信协议(串行、同步、半双工),仅使用两根信号线SerialClock(简称SCL)和SerialData(简称SDA)。
I2C作为总线结构,采用单主单从、单主多从方式,各从设备以7位地址区分;
I2C的数据格式为:
起始信号:SCL=1,SDA由1到0,Start信号仅由主设备发送
数据信号:SCL=1,SDA八位数据(0~7)+ 应答位(ACK = 1)
SCL跳变时SDA不能改变;SCL=0,SDA可以改变
发送方发送完8位数据,释放SDA,由接收方应答(ACK/NACK)
终止信号:SCL=1,SDA由0到1,End信号仅由主设备发送
I2C总线上可挂接的设备数量受总线的最大电容400pF 限制,如果所挂接的是相同型号的器件,则还受器件地址位的限制(7位共127个)。
I2C总线数据传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。一般通过I2C总线接口可编程时钟来实现传输速率的调整,同时也跟所接的上拉电阻的阻值有关。
写数据示例
- 主设备start(1到0),7位设备地址+读写位(W=0),从设备ACK
- 主设备发送8位数据,从设备ACK
- 主设备End(0到1)

读数据示例
- 主设备start(1到0),7位设备地址+读写位(R=1),从设备ACK
- 从设备发送8位数据,主设备ACK
- 主设备End(0到1)

读写交替示例
- 主设备start(1到0),7位设备地址+读写位(R=1),从设备ACK
- 从设备发送8位数据,主设备ACK
- 主设备RS(1到0),7位设备地址+读写位(W=1),从设备ACK
- 主设备发送8位数据,从设备ACK
- 主设备End(0到1)

更多推荐


所有评论(0)