免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IIC通信协议一 概述IIC总线的优点:I2C总线是各种总线中使用信号线最少,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。二 硬件结构 I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。 SDA数据线:设备上的串行数据线SDA接口电路应该是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。 SCL时钟线:而串行时钟线也应是双向的,作为控制总线数据传送的主机,一方面要通过SCL输出电路发送时钟信号;另一方面还要检测总线上的SCL电平,以决定什么时候发送下一个时钟脉冲电平,作为接受主机命令的从机,要按总线上的SCL信号发出或接收SDA上的信号,也可以向SCL线发出低电平信号以延长总线时钟信号周期。 空闲时候总线的状态:总线空闲时,因各设备都是开漏输出,上拉电阻Rp使SDA和SCL线都保持高电平。任一设备输出的低电平都将使相应的总线信号线变低,也就是说:各设备的SDA是“与”关系,SCL也是“与”关系。 主机:总线的运行(数据传输)由主机控制。所谓主机是指启动数据的传送(发出启动信号)、发出时钟信号以及传送结束时发出停止信号的设备,通常主机都是微处理器。 从机:被主机寻访的设备称为从机。为了进行通讯,每个接到I2C总线的设备都有一个唯一的地址,以便于主机寻访。三:数据的传输开始和停止条件的确定:在I2C总线传输过程中,将两种特定的情况定义为开始和停止条件(见图3):当SCL保持“高”时,SDA由“高”变为“低”为开始条件;当SCL保持“高”且SDA由“低”变为“高”时为停止条件。开始和停止条件均由主控制器产生。使用硬件接口可以很容易地检测到开始和停止条件,没有这种接口的微机必须以每时钟周期至少两次对SDA取样,以检测这种变化。 传输注意事项:1. SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。因此在IIC总线上胡数据传输过程中,数据信号线SDA的变化只能发生在SCL为低电平的期间内。从上图中可以清楚的看到这一点。响应信号ACK宽度为1位,紧跟在8个数据位后面,所以发送1字节的数据需要9个SCL时钟脉冲。响应时钟脉冲也是由主机产生的,主机在响应时钟脉冲期间释放SDA线,使其处在高电平(见图163上面的信号)。而在响应时钟脉冲期间,接收方需要将SDA拉低,使SDA在响应时钟脉冲高电平期间保持稳定的低电平(见图163中间结束的信号)。低电平用ACK表示,代表有应答;高电平用nACK表示,代表无应答。应答信号在I2C总线的数据传输过程中起着非常重要的作用,它将决定总线及连接在总线上设备下一步的状态和动作。一旦在应答信号上发生错误,例如接收方不按规定返回或返回不正确的应答信号,以及发送方对应答信号的误判,都将造成总线通信的失败。2. 输出到SDA线上的每个字节必须是8位,高位在前,低位在后。每次传输的字节不受限制,但每个字节必须要有一个应答ACK。如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线SCL为低,以促使发送器进入等待状态;当接收器准备好接受数据的其它字节并释放时钟SCL后,数据传输继续进行。3. 数据传送具有应答是必须的。与应答对应的时钟脉冲由主控制器产生,发送器在应答期间必须下拉SDA线。4. 当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。5. 在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允许主控器产生停止条件。开始传输:I2C总线在开始条件后的首字节决定哪个被控器将被主控器选择,例外的是“通用访问”地址,它可以在所有期间寻址。当主控器输出一地址时,系统中的每一器件都将开始条件后的前7位地址和自己的地址进行比较。如果相同,该器件即认为自己被主控器寻址,而作为被控接收器或被控发送器则取决于R/W位。四例子(用GMS97C2051的通用I/O口来作为I2C总线接口,并由软件控制实现数据传送)接I2C总线规定:SCL线和SDA线是各设备对应输出状态相“与”的结果,任一设备都可以用输出低电平的方法来延长SCL的低电平时间,以迫使高速设备进入等待状态,从而实现不同速度设备间的时钟同步。因此,即使时钟脉冲的高、低电平时间长短不一,也能实现数据的可靠传送,可以用软件控制I/O口做I2C接口。 传输的整个过程:前面已经介绍过I2C总线是支持多机通信的数据总线,每一个连接在总线上的从机设备或器件都有一个唯一独立的地址,以便于主机寻访。I2C总线上的数据通信过程是由主机发起的,以主机控制总线,发出起始信号作为开始。在发送起始信号后,主机将发送一个用于选择从机设备的地址字节,以寻址总线中的某一个从机设备,通知其参与同主机之间的数据通信。地址字节的格式如下:地址字节的高7位数据是主机呼叫的从机地址,第8位用于标示紧接下来的数据传输方向:“0”表示要从机准备接收主机下发数据(主机发送从机接收);而“l,则表示主机向从机读取数据(主机接收从机发送)。当主机发出地址字节后,总线上所有的从机都将起始信号后的7位地址与自己的地址进行比较:如果相同,则该从机确认自己被主机寻址;而那些本机地址与主机下发的寻呼地址不匹配的从机,则继续保持在检测起始信号的状态,等待下一个起始信号的到来。被主机寻址的从机,必须在第9个SCK时钟脉冲期间拉低SDA,给出ACK回应,以通知主机寻址成功。然后,从机将根据地址字节中第8他的指示,将自己转换成相应的角色(0从机接收器;1从机发送器),参与接下来的数据传输过程。图164所示为在I2C总线上一次数据传输的示例,它实现了简单的操作:主机向从机读取1字节。图中描述了整个数据传输的全部过程,给出了I2C总线上的时序变化,SDA上的数据情况、以及发送、接收双方相互转换与控制SDA的过程。主机控制SDA。在I2C总线上产生起始信号,同时控制SCL,发送时钟脉冲。在整个传输过程中,SCL都是由主机控制的。主机发送器发送地址字节。地址字节的第8位为“1”。表示准备向从机读取数据。主机在字节发送完成后,放弃对5DA的控制,进入接收检测ACK的状态。所有从机在起始信号后为从机接收器,接收地址字节,与自己地址比对。被寻址的从机在第9个SCL时钟脉冲期间控制SDA将其拉低,给出ACK应答。主机检测到从机的ACK应答后、转换成主机接收器。准备接收从机发出的数据。从机则根据第8位“1”的设定,在第2个字节的8个时钟脉冲期间作为从机发送器控制SDA。发送1字节的数据。发送完成后放弃对SDA的控制,进入接收检测ACK的状态。在第2个字节的8个传输时钟脉冲期间,主机接收器接收从机发出的数据。当接收到d0位后,主机控制SDA,将其拉低,给出ACK应答。从机接收检测主机的ACK应答c如果是ACK,则难备发送1个新的字节数据;如果是nACK,则转入检测下一个起始信号的状态。在这个示例中,主机收到l字节数据后,转成主机发送器控制SDA,在发出ACK应答信号后,马上发出停止信号,通知本次数据传输结束。从机检测到停止信号,转入检测下一个起始信号的状态。以上介绍了I2C总线基本的特性、操作时序和通信规范,这些概念对了解、掌握、应用I2C总线尤为重要。这是因为I2C总线在硬件连接上非常简单,只要将所有器件和设备的SDA、SCL并在一起就可以了,但复杂的通信规范的实现,往往需要软件的控制。尽管AVR的TWI接口在硬件层面上实现了更多的I2C底层协议和数据传送与接收的功能,但对于什么时间发出起始信号、停止信号,如何返回应答信号,以及主从机之间的发送接收器的相互转换,还是需要程序员根据实际情况,编写相应的、正确的系统程序才能实现。关于I2C总线更多的特性,例如多主机的总线竞争与仲裁等,本书将不做介绍,有兴趣的读者可以通过本书所附光盘中的参考资料I2C总线规范进一步地深入学习。使用C语言在C51的环境下对IIC的编程范例/ IIC开始void Start()SDA=1;SCL=1;NOP4();SDA=0;NOP4();SCL=0;/ IIC 结束void Stop()SDA=0;SCL=0;NOP4();SCL=1;NOP4();SDA=1;/ IIC 读取应答void RACK()SDA=1;NOP4();SCL=1;NOP4();SCL=0;/ IIC 发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教科版小学科学模拟试卷分类汇编四年级下册期末复习试卷100
- 【语文】大连市一年级下册期末复习试卷(含答案)
- 冬季管道保温维修合同
- 购房装修委托合同
- 外墙氟碳漆承包施工合同
- 2025年湖南省常德市石门县保安员招聘考试题库附答案解析
- 招商信用卡合同
- 外墙真石漆低价出售合同
- 大型货车劳动合同
- 2026年管道工(高级-操作技能)自测试题及答案
- 2025年郑州水务集团有限公司招聘80人笔试模拟试卷带答案解析
- 创伤急救模拟教学的团队协作模拟演练
- 2025年国有企业管理专员岗位招聘面试参考题库及参考答案
- 无纺布袋采购合同范本
- 2025年铁路安全教育培训考试试题及答案
- 2025 年中国互联网助贷业务发展研究报告
- 专题10 立体图形的表面展开图的四类综合题型(压轴题专项训练)数学人教版2024七年级上册(解析版)
- 2025年上海公务员考试(城市建设管理)历年参考题库含答案详解(5套)
- 生猪屠宰兽医卫生检验人员理论考试题库及答案
- 13.Arnold(阿诺德)渲染器
- 婚姻法教学精品课件
评论
0/150
提交评论