http://www.52rd.com/Blog/more.asp?name=EEcha&id=740
[技术文章]简单的I2C协议理解!(无图) |
EEcha 发表于 2006-3-9 15:51:00 |
一、技术性能: 工作速率有100K和400K两种; 支持多机通讯; 支持多主控模块,但同一时刻只允许有一个主控; 由数据线SDA和时钟SCL构成的串行总线; 每个电路和模块都有唯一的地址; 每个器件可以使用独立电源但是必须共地 二、基本工作原理: 以启动信号START来掌管总线,以停止信号STOP来释放总线; 每次通讯以START开始,以STOP结束; 启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R./W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据; 当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号; 每个数据字节在传送时都是高位(MSB)在前; 写通讯过程: 1、 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线; 2、 发送一个地址字节(包括7位地址码和一位R/W); 3、 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK); 4、 主控收到ACK后开始发送第一个数据字节; 5、 被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束; 6、 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线; 读通讯过程: 1、 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线; 2、 发送一个地址字节(包括7位地址码和一位R/W); 3、 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK); 4、 主控收到ACK后释放数据总线,开始接收第一个数据字节; 5、 主控收到数据后发送ACK表示继续传送数据,发送NACK表示传送数据结束; 6、 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线; 三、 硬件连接及要求 |