摘要 介绍模拟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 中包括起始信号、停止信号、应答信号、非应答信号以及传输数据“0” 和数据“1” 的时序。起始信号就是在SCL 线为高时SDA线从高变化到低;停止信号就是在SCL 线为高时SDA线从低变化到高;应答信号是在SCL 为高时SDA为低;非应答信号相反,是在SCL 为高时SDA为高。传输数据“0” 和数据“1” 与发送应答位和非应答位时序图是相同的。For personal use only in study and research; not for commercial use 图1 I2C 总线上基本信号的时序 图2 表示了一个完整的数据传送过程。在I2C 总线发送起始信号后,发送从机的7 位寻址地址和1 位表示这...