摘要 介绍模拟I2C 总线的多主节点通信原理,并提出一种新的实现方法
这种采纳延时接收比较来实现仲裁的方法,可使不具有I2C 接口的普通微控制器(MCU)能够实现模拟I2C 总线的多主通信,同时对I2C 总线的推广起到了积极作用
I2C 总线(Inter IC BUS )是PHILIPS 公司推出的双向两线串行通信标准
由于它具有接口少、通信效率高等优点,现已得到广泛的应用\[1~3\]
它除了可以进行简单的单主节点通信外,还可以应用在多主节点的通信系统中
在多主节点通信系统中,假如两个或者更多的主节点同时启动数据传输,总线具有冲突检测和仲裁功能,保证通信正常进行并防止数据破坏
现在许多微控制器(MCU )都具有I2C 总线接口,能方便地进行I2C 总线设计
对于没有I2C 总线接口的MCU ,可以采纳两条I/O 接口线进行模拟\[2 ,3\]
目前,一些介绍模拟I2C 的资料主要讲的是在单主节点系统中进行的通信,这使得模拟I2C 总线的应用具有一定的局限性
本文根据总线仲裁的思想,提出一种多主节点通信的思想及实现流程
1 I2C 总线系统简介[1~3] I2C 总线系统是由SCL (串行时钟)和SDA(串行数据)两根总线构成的
该总线有严格的时序要求,总线工作时,由串行时钟线SCL 传送时钟脉冲,由串行数据线SDA传送数据
总线协议规定,各主节点进行通信时都要有起始、结束、发送数据和应答信号
这些信号都是通信过程中的基本单元
总线传送的每1 帧数据均是1 个字节,每当发送完1 个字节后,接收节点就相应给一应答信号
协议规定,在启动总线后的第1 个字节的高7 位是对从节点的寻址地址,第8 位为方向位(“0” 表示主节点对从节点的写操作;“1” 表示主节点对从节点的读操作),其余的字节为操作数据
图1 列出I2C 总线上几个基本信号的时序
图1 中包括起始信号、停止