一文详解I2C接口

接口/总线/驱动

1117人已加入

描述

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接口与该模式不兼容。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分