前面我们概述过一些常见的通讯协议,本文着重讲讲关于IIC协议。
IIC(Inter-Integrated Circuit)的硬件连接
1. 对于IIC主机总线上是可以挂1个或者多个从机设备。
2. 每个从机是通过其各自的地址来识别。
IIC的数据和控制线(SDA和SCL)
1. SCL(Serial clock),时钟线,用于同步数据传输时序,是一个方波,由主机来驱动,其决定了数据传输的快慢。
2. SDA(Serial data),数据线,用于传输数据,
IIC寻址
1. 通常对于一个7bit的地址,包含1个额外的读写位。
2. 对于IIC总线上的每一个设备都有一个独立的地址。
3. 重复的地址会导致通讯错误。
4. 对于一些设备会有PIN管脚用来配置不同的IIC地址。
IIC通讯
START,起始位,由主机初始化,SCL高的时候拉低SDA。
STOP,停止位,SCL高的时候,主机释放SDA PIN脚。
ACK(acknowledge),每一次传输一个单字节或者8bits之后,会跟一个SCL的脉冲,这个acknowledge信号是从机应答主机的信号,表示ACK信号之前的那个字节通讯是成功的。
如下是一个标准的IIC写时序:
启动>MSB->...LSB->ACK->停止
对于有效数据传输:
1. 在时钟信号SCL为高的整个脉宽内SDA必须保持稳定。
2. 只有在SCL脉冲为低的时候,SDA才被允许高低切换,如果SDA在SCL为高的时候变化,则会被认为是Start/Stop。
IIC的电路设计
1. 对于3.4Mbps速率以下的IIC,是漏极开路(Open Drain)的结构,此时需要外部上拉电阻,上拉电阻的选择需要考虑上拉之后的rise/fall的时间是否满足其时序要求同时也需要考虑功耗。 上拉电阻越大,功耗越小,但rise/fall时间越长,会影响通讯; 上拉电阻越小,功耗越大,但rise/fall时间短,会降低通讯的误码率。
2. 对于3.4Mbps速率以上的IIC,其是推挽(Push Pull)的结构,其rise/fall的时间就完全取决于主机/从机设备内部的push/pull的能力。 需要注意的是,不同设备之间的通讯需要选择同样结构的IIC。
全部0条评论
快来发表一下你的评论吧 !