没有合适的资源?快使用搜索试试~ 我知道了~
(完整word版)模拟I2C总线多主节点通信原理及实现方法.doc
需积分: 5 0 下载量 144 浏览量
2022-10-24
01:37:50
上传
评论
收藏 234KB DOC 举报
温馨提示
试读
13页
(完整word版)模拟I2C总线多主节点通信原理及实现方法.doc
资源推荐
资源详情
资源评论
(完整 word 版)模拟 I2C 总线多主节点通信原理及实现方法
不得用于商业用途
摘要 介绍模拟 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
(完整 word 版)模拟 I2C 总线多主节点通信原理及实现方法
不得用于商业用途
图 1 I2C 总线上基本信号的时序
图 2 表示了一个完整的数据传送过程。在 I2C 总线发送起始信号后,发送从机的 7 位寻址地址和 1 位表示这次操作性质
的读写位,在有应答信号后开始传送数据,直到发送停止信号。数据是以字节为单位的。发送节点每发送 1 个字节就要检测
SDA 线上有没有收到应答信号,有则继续发送,否则将停止发送数据。
图 2 一次完整的数据传送过程
2 I2C 总线的仲裁
在多主的通信系统中。总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可
以作为主节点向其他的节点发送控制字节和传送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传
送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是 I2C 总线上的仲裁。
I2C 总线上的仲裁分两部分:SCL 线的同步和 SDA 线的仲裁。SCL 同步是由于总线具有线“与”的逻辑功能,即只要
有一个节点发送低电平时,总线上就表现为低电平。当所有的节点都发送高电平时,总线才能表现为高电平。正是由于线“与”
逻辑功能的原理,当多个节点同时发送时钟信号时,在总线上表现的是统一的时钟信号。这就是 SCL 的同步原理。
(完整 word 版)模拟 I2C 总线多主节点通信原理及实现方法
不得用于商业用途
SDA 线的仲裁也是建立在总线具有线“与”逻辑功能的原理上的。节点在发送 1 位数据后,比较总线上所呈现的数据
与自己发送的是否一致。是,继续发送;否则,退出竞争。图 3 中给出了两个节点在总线上的仲裁过程。SDA 线的仲裁可
以保证 I2C 总线系统在多个主节点同时企图控制总线时通信正常进行并且数据不丢失。总线系统通过仲裁只允许一个主节点
可以继续占据总线[1]。
图 3 是以两个节点为例的仲裁过程。DATA1 和 DATA2 分别是主节点向总线所发送的数据信号,SDA 为总线上所呈现
的数据信号,SCL 是总线上所呈现的时钟信号。当主节点 1、2 同时发送起始信号时,两个主节点都发送了高电平信号。这
时总线上呈现的信号为高电平,两个主节点都检测到总线上的信号与自己发送的信号相同,继续发送数据。第 2 个时钟周期,
2 个主节点都发送低电平信号,在总线上呈现的信号为低电平,仍继续发送数据。在第 3 个时钟周期,主节点 1 发送高电平
信号,而主节点 2 发送低电平信号。根据总线的线“与”的逻辑功能,总线上的信号为低电平,这时主节点 1 检测到总线上
的数据和自己所发送的数据不一样,就断开数据的输出级,转为从机接收状态。这样主节点 2 就赢得了总线,而且数据没有
丢失,即总线的数据与主节点 2 所发送的数据一样,而主节点 1 在转为从节点后继续接收数据,同样也没有丢掉 SDA 线上
的数据。因此在仲裁过程中数据没有丢失。
图 3 两个主节点的仲裁过程
3 多主通信的原理及其实现流程
剩余12页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3614
- 资源: 59万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功