I2C协议底层原理超详细解析!示波器,逻辑分析仪多图预警

阅读: 评论:0

I2C协议底层原理超详细解析!⽰波器,逻辑分析仪多图预警
1.协议基础
1.1. 协议简介
IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发。主要是⽤来⽅便微控制器与外围器件的数据传输。它是⼀种半双⼯,由SDA(数据)和SCL(时钟)组成的两线式串⾏传输总线。
⽬前最新的协议版本是2014版,官⽅链接如下:
p/docs/en/user-guide/UM10204.pdf
1.2. 物理信号
图1-1 IIC实际的波形
图1-2 IIC协议基本形式
IIC由⼀条时钟线和⼀条数据线组成。如图1-1是⽰波器抓取的实际信号、1-2是IIC协议数据传输的基本形式。
IIC的输⼊输出结构采⽤的是开漏的结构。开漏结构不能够⾃主得到⾼电平,所以需要通过外部上拉电阻Rp来的实现IIC通信过程中的⾼电平。Rp的⼤⼩取决于IIC不同模式时的灌电流⼤⼩。
图1-3和图1-4是描述IIC获得⾼低电平的情景。因为⼀条IIC总线上⾯可能会同时连接上多个设备,如果IIC使⽤的是推挽输出的话容易引起短路。IIC设备可以通过控制N-MOS管的开关来控制输出信号的电平⾼低。当MOS管G极为低电平时MOS管截⽌IIC总线上⾯由于有上拉电阻的存在⽽为⾼电平;当MOS管G极为⾼电平时MOS管导通,IIC总线相当于直接接地为低电平。
IIC的输⼊是通过TTL肖特基触发器将数据传输到输⼊数据寄存器当中,再提供给处理器处理。仿生
图1-3
图1-4
IIC的电平标准:
由于种类的设备都有可能连接到IIC总线上⾯,⽐如说CMOS、NMOS等,所以IIC的⾼电平和低电平的标准是不⼀定的。⾼电平和低电平的值分别为0.7VDD和0.3VDD。
图1-5
1.3. 总线连接
图1-6
IIC的时钟线总是由主机控制,主机与从机之间的数据传输只在SDA⼀根线上完成,不能同时发送和接收数据,所以IIC是⼀种半双⼯的通信协议。⼀条IIC总线上⾯可以挂载多个设备,每⼀个设备都有其对应的设备地址,设备之间数据传送只能由⼀个设备传送给对应地址的设备。
图1-7
IIC的总线连接可以接受多主机的模式,也就是说⼀条IIC总线上⾯可以有多个设备可以作为主机来使⽤,但是在⼀次数据的传输过程中只能有⼀个设备作为主机。⼀条IIC总线上⾯谁是主机取决于总线上⾯的时钟和数据信号由谁控制。如图1-7所⽰,这⼀条IIC总线上⾯挂载了多个设备,其中MCU1和MCU2都可以作为主机来使⽤,但是不能同时有两个主机。
如果两个MCU同时发起开始信号时(都试图成为主机),这时候IIC的仲裁机制会发挥作⽤来判定谁成为主机。
fmc公司图1-8
IIC的仲裁机制得益于其开漏的输⼊输出结构。例如如图1-8所⽰,当SCL线上挂载的多个设备,其中的MCU2的SCL输出低电平,那么这条IIC总线SCL就会被MCU2拉低,这也就是“与”的特性。
IIC上的仲裁主要是由两部分组成SCL时钟同步、SDA线仲裁。
图1-9
如图1-9所⽰CLK1和CLK2都是连接在⼀条SCL线上的设备同时产⽣的时钟信号,由于IIC总线存在“与”的特性,所以两个设备⾼电平相同的部分形成了SCL最终的时钟,也就是说同⼀条IIC总线上⾯的时钟都是相同的。
图1-10
同样SDA仲裁也是基于“与”的特性。如图1-10所⽰当两个设备同时发出开始信号想要传送数据时,在
第⼀个和第⼆个周期内DATA1和DATA2的数据都是相同的,然后两者继续传送数据,当在第三个时钟周期时DATA2与SDA的数据不⼀致,这个时候设备2就会停⽌发送数据,转⽽启动接收模式。这样SDA的数据就会与DATA1的数据保持⼀致,并且设备2停⽌发送数据也不会影响SDA的数据。
协议规范
2.1. 编码规则
起始、停⽌条件:IIC的起始信号为当时钟信号线(SCL)为⾼电平时,数据线(SDA)产⽣⼀个下降沿,停⽌信号为当时钟信号线(SCL)为⾼电平时,数据线(SDA)产⽣⼀个上升沿。
东海县海陵路小学
图2-1
应答位、⾮应答位:当主机传送8位数据结束后,主机会将SDA线拉⾼,此时如果从机正确接收数据
则会将SDA拉低并在SCL⾼电平时保持低电平,这个信号为ACK信号。如果在传输8位数据后从机没有将SDA拉低则该信号为NACK。如果出现NACK则表⽰数据传输出错。中国同性恋者
图2-2
数据有效性:当时钟信号为⾼电平的时候,数据线上的信号需要保持不变也就是在时钟线为⾼电平的时候数据线出现上升下降沿的话就会产⽣停⽌和启动信号,从⽽导致数据的传输出错。
图2-3
byte组织:SDA上的数据传输是以8bit即⼀个字节为单位传输的,每⼀次传输的字节数没有限制,每传输完⼀个字节后必须跟随⼀个应答位。
我们以01001001(0X49)为例,其时序图如下:
图2-4
2.2. 信号传输
IIC总线上⾯的每⼀个设备都有唯⼀的地址与之对应,信号传输时也是根据指定的地址到设备来传输信号。
写操作:主机确定了从机的设备地址后,⽣成⼀个开始信号,然后向IIC总线上⾯发送设备的地址和读写⽅向标志。从机检测到该地址和⾃⼰设备地址相对应后,回复主机⼀个应答信号。主机接收到应答信号后就开始向这个设备以字节为单位发送数据,每⼀个字节后⾯都会带有从机的应答信号,直到主机发送完成最后⼀个数据后⽣成⼀个停⽌信号结束此次数据的传输。
时间膨胀
图2-5
读操作:读操作与写操作有⼀些类似,同样的是需要确定需要读取的从设备的地址。然后主机⽣成开始信号,再向IIC总线上发送从设备的地址和读数据的指令。从设备接收到地址与⾃⼰的吻合后会产⽣
⼀个应答信号。就这从设备就开始向主机发送主机想要读取的数据,主机正确接收数据后会向从机回复应答信号,当主机想要结束读取操作时,主机会回复⼀个⾮应答信号,然后⽣成停⽌信号结束数据的读取。
图2-6
2.3. 传输⽰例
图2-7
如图2-7所⽰是⽰波器采集的IIC信号,我们通过⾃⼰的观察得到这⼀段IIC包含的信息,主机向地址为0XA0 的设备写⼊0X0C。
通过⽰波器我们可以观察到IIC信号真实的模样, 但是我们也可以体会到⽰波器在分析数字信号的过程中有很多不便之处。
(1) ⽰波器分析通道⽐较少:颈部肿块的鉴别诊断
⼀般我们使⽤的⽰波器都是双通道,⽽刚好IIC总线只有两根线组成,但是当我们需要测量的数字信号时由多根线组成的话(⽐如说spi),⽤两通道的⽰波器就不⽅便我们使⽤。
(2) ⽰波器的存储深度⽐较⼩:⼀般来讲⽰波器的存储深度有限,有与存储深度和采样率采样时长有很⼤的联系:
存储深度=采样率X显⽰时间
那么在上⾯的公式的原则下,⽰波器的存储深度是⼀定的,我们想要设置较⾼的采样率的话就⽆法显⽰较长的波形,如图2-8所⽰,想要的到⾜够长的波形的话采样率则会不⾜,如图2-9所⽰。
图2-8
图2-9低采样率
(3) 没有协议解码功能:
如图2-7所⽰,⽰波器抓取到的波形只有光秃秃的波形,我们需要⾃⼰将波形放⼤去仔细辨认才能得到其中的信息。
图2-10逻辑分析仪解码结果
⽽相⽐于⽰波器逻辑分析仪能更好的辅助⼯程师抓取,识别数字信号。如图2-10所⽰逻辑分析仪带有解码功能,它可以⾃动帮助⼯程师读取出其中数据。逻辑分析仪的通道数量⼀般都在16个以上,并且在存储深度这⽅⾯,逻辑分析仪要远远⼤于⽰波器,因此他可以记录很长的数据。
逻辑分析仪准备
逻辑分析仪使⽤详情可参考:www.dreamsourcelab/doc/DSView_User_Guide.pdf
3.1. 设备连接和状态检查
逻辑分析仪带有⼀个type-c的接⼝,使⽤正确的连接线价格逻辑分析仪接⼊电脑的USB接⼝(如果逻辑分析仪是⽀持USB 3.0 接⼝的话接⼊USB 2.0接⼝会影响其最⾼速率)。⼀定要等到逻辑分析仪指⽰灯显⽰为绿灯和软件上显⽰为正确的仪器设备,此时才能正确地操作和使⽤逻辑分析仪。
图3-1

本文发布于:2023-06-27 12:56:19,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/136917.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信号   设备   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图