接口/总线/驱动
I2C
I2C与SPI类似,I2C常用来为电路板层次的集成电路、传感器等元件的连接提供短程接口。
多个并联的I2C器件
I2C只使用两条双向信号线:串行数据线(SDA)和串行时钟线(SCL)。没有选择线,而且因为I2C是半双工接口,所以它只需要一条数据线。数据线都是漏极开路,即器件内部的FET的漏极与SDA和SCL引脚相连接。这也意味着I2C接口被强制接到外部上拉电阻。上拉电压一般为3.3V~5.0V,由元件的I2C接口规范决定。当一件设备作为电流主设备,将两个总线信号调整到“开始”状态时,I2C总线上的数据交换就开始了,同时其它I2C设备也收到信号,知道主设备需要通信。当“开始”状态一开始,所有的I2C设备都会做好等待总线传输数据的准备。
在“开始”状态出现后,主设备发送一个设备的地址以及要进行的操作的命令(读或写)。当其它I2C设备都接收到地址后,它们将接收到的地址与自己的地址比较,如果不匹配,就一直保持在等待状态,直到总线被“停止”状态释放为止。如果地址与一个I2C设备匹配,该设备将产生一个应答响应发送给主设备。
主设备接收到应答响应后,就会开始传送数据,或者等待响应的从设备返回数据,这取决于先前传送的地址是读地址还是写地址。在读入数据时,主设备对从设备传回的每个字节都发送一个响应信号。在数据传输完成时,主设备释放I2C总线,把它设置为“停止”状态。
7位I2C地址格式
I2C支持7位或10位地址,由所使用的器件决定。上图所示中的原始的7位设计类型中,最低有效位(LSB)表明该地址是用来从主设备读取数据还是向主设备写入数据。剩下的7位构成了总线上特定I2C外围设备的实际地址。
一个10位地址包含2字节,该地址分两步发送,如下图所示。最高有效字节首先发送,然后是最低有效字节。注意,当使用10位地址时,从设备为这两个地址字节各发送一个应答信号(ACK)。
10位I2C地址格式
在设备制造生产时,它就被分配了一个地址。对于大容量元件,通常使用的方法是向NXP请求地址分配。如果需要连接两个微控制器,可以给它们分配你想要的任何地址,但是选择要慎重。
下图列出的一些地址值是由NXP指定并保留的。
I2C保留的7位地址
下图为I2C技术参数为I2C接口规定的四种不同的速度(比特率)。
I2C比特率
还有一种“超快模式”,使用单向总线时,最大传输速率5MB/s,但是传统的I2C接口与该模式不兼容。
全部0条评论
快来发表一下你的评论吧 !