广告

IIC协议分析

2020-08-06 梦源科技 阅读:
IIC-BUS(Inter-Integrated Circuit Bus)最早是由Philip半导体(现在被NXP收购)于1982年开发。主要是用来方便微控制器与外围器件的数据传输。它是一种半双工,由SDA(数据)和SCL(时钟)组成的两线式串行传输总线。

1.协议基础

1.1.协议简介

IIC-BUS(Inter-Integrated Circuit Bus)最早是由Philip半导体(现在被NXP收购)于1982年开发。主要是用来方便微控制器与外围器件的数据传输。它是一种半双工,由SDA(数据)和SCL(时钟)组成的两线式串行传输总线。JE2ednc

1.2.物理信号

JE2ednc

图1-1:IIC实际的波形。JE2ednc
JE2ednc

图1-2:IIC协议基本形式。JE2ednc

IIC由一条时钟线和一条数据线组成。如图1-1是示波器抓取的实际信号、1-2是IIC协议数据传输的基本形式。JE2ednc

IIC的输入输出结构采用的是开漏的结构。开漏结构不能够自主得到高电平,所以需要通过外部上拉电阻Rp来的实现IIC通信过程中的高电平。Rp的大小取决于IIC不同模式时的灌电流大小。JE2ednc

图1-3和图1-4是描述IIC获得高低电平的情景。因为一条IIC总线上面可能会同时连接上多个设备,如果IIC使用的是推挽输出的话容易引起短路。IIC设备可以通过控制N-MOS管的开关来控制输出信号的电平高低。当MOS管G极为低电平时MOS管截止IIC总线上面由于有上拉电阻的存在而为高电平;当MOS管G极为高电平时MOS管导通,IIC总线相当于直接接地为低电平。JE2ednc

IIC的输入是通过TTL肖特基触发器将数据传输到输入数据寄存器当中,再提供给处理器处理。JE2ednc
JE2ednc

图1-3JE2ednc

JE2ednc

图1-4JE2ednc

IIC的电平标准:JE2ednc

由于种类的设备都有可能连接到IIC总线上面,比如说CMOS、NMOS等,所以IIC的高电平和低电平的标准是不一定的。高电平和低电平的值分别为0.7VDD和0.3VDD。JE2ednc

JE2ednc

图1-5JE2ednc
 JE2ednc

1.3.总线连接

JE2ednc

图1-6JE2ednc

IIC的时钟线总是由主机控制,主机与从机之间的数据传输只在SDA一根线上完成,不能同时发送和接收数据,所以IIC是一种半双工的通信协议。一条IIC总线上面可以挂载多个设备,每一个设备都有其对应的设备地址,设备之间数据传送只能由一个设备传送给对应地址的设备。JE2ednc

JE2ednc

图1-7JE2ednc

IIC的总线连接可以接受多主机的模式,也就是说一条IIC总线上面可以有多个设备可以作为主机来使用,但是在一次数据的传输过程中只能有一个设备作为主机。一条IIC总线上面谁是主机取决于总线上面的时钟和数据信号由谁控制。如图1-7所示,这一条IIC总线上面挂载了多个设备,其中MCU1和MCU2都可以作为主机来使用,但是不能同时有两个主机。JE2ednc

如果两个MCU同时发起开始信号时(都试图成为主机),这时候IIC的仲裁机制会发挥作用来判定谁成为主机。JE2ednc

JE2ednc

图1-8JE2ednc

IIC的仲裁机制得益于其开漏的输入输出结构。例如如图1-8所示,当SCL线上挂载的多个设备,其中的MCU2的SCL输出低电平,那么这条IIC总线SCL就会被MCU2拉低,这也就是“与”的特性。JE2ednc

IIC上的仲裁主要是由两部分组成SCL时钟同步、SDA线仲裁。JE2ednc

JE2ednc

图1-9JE2ednc
 JE2ednc

如图1-9所示CLK1和CLK2都是连接在一条SCL线上的设备同时产生的时钟信号,由于IIC总线存在“与”的特性,所以两个设备高电平相同的部分形成了SCL最终的时钟,也就是说同一条IIC总线上面的时钟都是相同的。JE2ednc

JE2ednc

图1-10JE2ednc

同样SDA仲裁也是基于“与”的特性。如图1-10所示当两个设备同时发出开始信号想要传送数据时,在第一个和第二个周期内DATA1和DATA2的数据都是相同的,然后两者继续传送数据,当在第三个时钟周期时DATA2与SDA的数据不一致,这个时候设备2就会停止发送数据,转而启动接收模式。这样SDA的数据就会与DATA1的数据保持一致,并且设备2停止发送数据也不会影响SDA的数据。JE2ednc

2.协议规范

2.1. 编码规则

起始、停止条件:IIC的起始信号为当时钟信号线(SCL)为高电平时,数据线(SDA)产生一个下降沿,停止信号为当时钟信号线(SCL)为高电平时,数据线(SDA)产生一个上升沿。JE2ednc

JE2ednc

图2-1JE2ednc

应答位、非应答位:当主机传送8位数据结束后,主机会将SDA线拉高,此时如果从机正确接收数据则会将SDA拉低并在SCL高电平时保持低电平,这个信号为ACK信号。如果在传输8位数据后从机没有将SDA拉低则该信号为NACK。如果出现NACK则表示数据传输出错。JE2ednc

JE2ednc

图2-2JE2ednc

数据有效性:当时钟信号为高电平的时候,数据线上的信号需要保持不变也就是在时钟线为高电平的时候数据线出现上升下降沿的话就会产生停止和启动信号,从而导致数据的传输出错。JE2ednc

JE2ednc

图2-3JE2ednc

byte组织:SDA上的数据传输是以8bit即一个字节为单位传输的,每一次传输的字节数没有限制,每传输完一个字节后必须跟随一个应答位。JE2ednc

我们以01001001(0X49)为例,其时序图如下:JE2ednc

JE2ednc

图2-4JE2ednc

2.2. 信号传输

IIC总线上面的每一个设备都有唯一的地址与之对应,信号传输时也是根据指定的地址找到设备来传输信号。JE2ednc

写操作:主机确定了从机的设备地址后,生成一个开始信号,然后向IIC总线上面发送设备的地址和读写方向标志。从机检测到该地址和自己设备地址相对应后,回复主机一个应答信号。主机接收到应答信号后就开始向这个设备以字节为单位发送数据,每一个字节后面都会带有从机的应答信号,直到主机发送完成最后一个数据后生成一个停止信号结束此次数据的传输。JE2ednc

JE2ednc

图2-5JE2ednc
 JE2ednc

读操作:读操作与写操作有一些类似,同样的是需要确定需要读取的从设备的地址。然后主机生成开始信号,再向IIC总线上发送从设备的地址和读数据的指令。从设备接收到地址与自己的吻合后会产生一个应答信号。就这从设备就开始向主机发送主机想要读取的数据,主机正确接收数据后会向从机回复应答信号,当主机想要结束读取操作时,主机会回复一个非应答信号,然后生成停止信号结束数据的读取。JE2ednc

JE2ednc

图2-6JE2ednc

2.3.传输示例JE2ednc

图2-7JE2ednc
JE2ednc
 JE2ednc

如图2-7所示是示波器采集的IIC信号,我们通过自己的观察得到这一段IIC包含的信息,主机向地址为0XA0的设备写入0X0C。JE2ednc

 通过示波器我们可以观察到IIC信号真实的模样,但是我们也可以体会到示波器在分析数字信号的过程中有很多不便之处。JE2ednc

(1)示波器分析通道比较少:JE2ednc

一般我们使用的示波器都是双通道,而刚好IIC总线只有两根线组成,但是当我们需要测量的数字信号时由多根线组成的话(比如说spi),用两通道的示波器就不方便我们使用。JE2ednc

(2)示波器的存储深度比较小:一般来讲示波器的存储深度有限,有与存储深度和采样率采样时长有很大的联系:JE2ednc

存储深度 = 采样率 x 显示时间JE2ednc

那么在上面的公式的原则下,示波器的存储深度是一定的,我们想要设置较高的采样率的话就无法显示较长的波形,如图2-8所示,想要的到足够长的波形的话采样率则会不足,如图2-9所示。JE2ednc

JE2ednc

图2-8JE2ednc

JE2ednc

图2-9:低采样率。JE2ednc

(3)没有协议解码功能:JE2ednc

如图2-7所示,示波器抓取到的波形只有光秃秃的波形,我们需要自己将波形放大去仔细辨认才能得到其中的信息。JE2ednc

JE2ednc

图2-10:逻辑分析仪解码结果。JE2ednc

而相比于示波器逻辑分析仪能更好的辅助工程师抓取,识别数字信号。如图2-10所示逻辑分析仪带有解码功能,它可以自动帮助工程师读取出其中数据。逻辑分析仪的通道数量一般都在16个以上,并且在存储深度这方面,逻辑分析仪要远远大于示波器,因此他可以记录很长的数据。JE2ednc

3.逻辑分析仪准备

3.1.设备连接和状态检查

逻辑分析仪带有一个type-c的接口,使用正确的连接线价格逻辑分析仪接入电脑的USB接口(如果逻辑分析仪是支持USB3.0接口的话接入USB2.0接口会影响其最高速率)。一定要等到逻辑分析仪指示灯显示为绿灯和软件上显示为正确的仪器设备,此时才能正确地操作和使用逻辑分析仪。JE2ednc

JE2ednc

图3-1JE2ednc

3.2.被测信号连接

正常连接好USB后,逻辑分析仪会亮绿灯,再将排线插入逻辑分析仪的检测通道。排线四个通道分为一组,基础版设备4个通道配一根地线,增强版每一个通道都配有地线,由于一般情况下的IIC速率都比较小,所以我们只需要连接两个通道和一根公共地线就行了。JE2ednc

JE2ednc

图3-2JE2ednc

4.波形抓取和协议分析

4.1.采集设置

采集时长、采样率:关于采样率和采样时长,我们需要明白的一点是他们都和存储深度有关。存储深度=采样率*窗口显示时长JE2ednc

IIC总线的传输速率一般是几百KHZ,我们的传输速率设置为几MHz就行。这里我们采用4MHz的采样率对IIC进行采样。这里不同的采样率下逻辑分析仪的最长采样时长是不一样的,DSView会根据你设置的采样率来计算出最长的采集时长。你可以根据自己的数据量选择相应的采样时长。JE2ednc

JE2ednc

图4-1JE2ednc

运行模式和阈值:DSView中逻辑分析仪抓取信号的运行模式有stream和buffer模式。stream模式下不同通道数有不同的最高采样率,而buffer模式下最高采样率是固定的。另外就是由于stream模式采用的是PC的内存所以有很长的采样深度。DSView的电压阈值可以设置的范围是0~5V之间。通常的3.3V数字系统,我们设置阈值电压为1.0V就可以,如果设置太低或者太高会导致信号不精准。JE2ednc

JE2ednc

图4-2JE2ednc

这里需要注意的是stream模式下DSView无法进行高级触发,只能进行一些简单触发,如果需要用逻辑分析仪抓取特定的数据的话需要将运行模式调整到buffer模式下。JE2ednc

JE2ednc

图4-3JE2ednc

4.2.触发条件设置和采集

简单触发:简单触发只需要通过设置某个通道的触发条件就可以实现信号的抓取。如图4-4所示我们设置触发条件为当通道1产生边沿信号,当通道1产生上升沿或者下降沿的时候就会触发。JE2ednc

JE2ednc

图4-4JE2ednc

采集:DSView能够实现立即和正常捕获。立即捕获可以理解为立即抓取当前的IIC信号,不会顾及触发条件。当你的IIC信号比较短,并且你设置的采样时长比较短时可能会抓取不到波形。JE2ednc

正常捕获只需要点击开始按钮(或者按键盘S键)就可以进入正常捕获模式。正常捕获可以响应触发条件,并且可以设置采集模式。JE2ednc

JE2ednc

图4-5JE2ednc

DSView运行单次采集和重复采集。单次采样只允许你采集一次便会停止采集。重复采集是完场一次采集后等待响应的时间间隔后又会重新开始采集并不断这样的循环。如图4-6所示我们可以设置间隔采集的时间,设置范围为1~10S。JE2ednc

JE2ednc

图4-6JE2ednc

4.3.波形查看和测量

缩放:波形的缩放通过鼠标滚轮就能够实现波形的缩放。也可以通过键盘上的左右键来缩放波形。还可以通过鼠标右键框选住波形来将波形细节放大(右键框选只可以放大不能缩小波形)。JE2ednc

JE2ednc

图4-7:右键框选放大。JE2ednc

移动:按住鼠标左键能够实现波形的左右移动。JE2ednc

频率测量:直接将鼠标移动到波形的中央,就可以计算这个信号的频率,周期等信息。JE2ednc

JE2ednc

图4-8:鼠标检测频率。JE2ednc

光标运用:当你的波形比较长窗口无法完全显示的时候,我们可以使用光标标记你想观察的地方然后根据光标实现波形位置的跳转。在波形的上双击就能添加光标,光标的可添加数量不受限制。当你想要实现位置跳转的时候直接鼠标右击光标就会出现相应的序号,然后直接点击序号跳转到相应的光标。JE2ednc

JE2ednc

 JE2ednc

图4-9:光标跳转GIF图。JE2ednc
 JE2ednc

4.4.协议添加和解码分析

我们采集到的IIC总线上面的信号是两条波形图,比较生硬不利于我们了解其中包含的信息。这个时候我们就需要使用到DSView中所包含的解码功能。解码功能可以将IIC协议中包含的内容以直观的形式表现出来,方便我们分析。JE2ednc

步骤一:点击菜单栏上面的解码DSView界面右侧就会出现添加解码协议的窗口。JE2ednc

JE2ednc

图4-10JE2ednc

步骤二:在右侧出现的窗口中选择IIC协议,在点击这个加号添加协议。JE2ednc

JE2ednc

图4-11JE2ednc

步骤三:点击完加号后下方就会出现一个IIC的协议,点击左侧的设置按钮(齿轮)进入解码设置的窗口。JE2ednc

JE2ednc

图4-12JE2ednc

步骤四:首先设置显示的内容,我们可以根据自己的需求设置,然后最重要的是需要将采集IIC的通道与SCL和SDA相对应,从机地址可以显示为包不包含读写位,最后解码区域可以设置为开始到结束,这样采集到的所有数据都会被解码,如果想要解码特定的区域可以添加两条光标,解码区域设置为这两条光标之间。JE2ednc

JE2ednc

图4-13JE2ednc

步骤五:结果分析JE2ednc

JE2ednc

图4-14JE2ednc

如图4-14所示我们设置了解码区间为光标1和光标2之间的区域。这一段IIC时序表达的意思就是从地址为1010000的设备之中的0X15的内部地址当中读取数据,读出的数据位0X54。JE2ednc

5.进阶分析

5.1.采集技巧

循环采集:当你遇到需要观察一个特定的信号时采用单次可能会不方便操作。比如不同按键代表不同的信息,我们可以设置循环采集抓取按键的信息。JE2ednc

JE2ednc

图5-1JE2ednc

触发定位:如果我们想观察一段完整的波形,可以将触发位置尽量调到最前(1%)或最后(90%)。这样就能观察到触发前和触发后的波形,如图5-3所示。JE2ednc

JE2ednc

图5-2JE2ednc

JE2ednc

图5-3JE2ednc

5.2.高级触发

DSView中可以使用高级触发来分析传输的内容。JE2ednc

步骤一:首先需要在触发设置里面选择高级触发选项。JE2ednc

JE2ednc

图5-4JE2ednc

步骤二:设置触发位置,触发位置可以根据自己的需要设置在任意位置。触发的位置决定了你要抓取的信号位于你抓取的全部信号的百分比位置。设置时只需要填入数值或者用鼠标拖动位置条。JE2ednc

JE2ednc

图5-5JE2ednc

步骤三:选择串行触发,IIC是一种串行的通信方式,所以我们选择的是串行触发,上面的总触发等级只在多级触发的时候使用。JE2ednc

JE2ednc

图5-6JE2ednc

步骤四:设置开始停止条件、时钟设置。JE2ednc

首先需要将通道与你测试的IIC线对应,例如通道0对应的是SCL,通道1对应的是SDA。IIC的开始条件为当SCL为高电平时SDA产生一个下降沿,停止条件为当SCL为高电平时SDA产生一个低电平,所以开始条件和停止条件设置为图5-7左侧所示。时钟设置用来定义时钟采样的时刻,一般情况我们可以设置为上升沿采样。JE2ednc

JE2ednc

图5-7JE2ednc

步骤五:设置数据通道、数据位宽、数据值JE2ednc

数据通道指的是SDA连接的是哪个通道,这里我们连接的是1通道。由于IIC协议中每传送1字节数据就需要一个应答位,所以数据位宽设置为9。例如我设置在出现0X57这个数据时触发,设置的数据值应该为010101110,最后一位为应答位。JE2ednc

当然如果我们不需要抓取特定的数据时,数据值、数据位宽、数据通道三项可以不用设置。JE2ednc

JE2ednc

图5-8JE2ednc

 步骤六:查看数据JE2ednc

逻辑分析仪抓取的结果会显示在主界面上面,触发的位置就是我们想要获得的数据的位置。JE2ednc

我们还可以通过列表查询的方式来来抓取的这一串数据中的位置。如图5-10所示,输入要查询的数据再点击该数据就能在主界面中快速定位该数据。JE2ednc

JE2ednc

图5-9JE2ednc

JE2ednc

图5-10JE2ednc

5.3.Stack高阶协议解析

稍微复杂一点的协议都会采用分层的结构,例如使用IIC对EEPROM的读写操作,其协议是基于传统的IIC,但是在这其中还包含了更多的含义。JE2ednc

我们以对EEPROM操作展示Stack高阶协议解析过程JE2ednc

操作步骤:JE2ednc

(1)选择“1:IIC”。IIC协议添加“1:IIC”不能添加“0:IIC”,“0:IIC”不能显示多层协议。JE2ednc

JE2ednc

图5-11JE2ednc

(2)点击“多层协议”JE2ednc

JE2ednc

图5-12JE2ednc

(3)添加对应的EEPROM协议JE2ednc

JE2ednc

图5-13JE2ednc

(4)得到结果JE2ednc

从结果可以看出,这5层的解码将IIC协议通讯的从每一位到整体的意义描述的很详细。JE2ednc

JE2ednc

图5-14JE2ednc

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • “中国IC设计成就奖”提名产品简介:SLMi33x优势 国内首款带DESAT保护功能并兼容光耦驱动的IGBT/SiC隔离驱动器,5kVrms隔离电压和高达10kV的隔离浪涌电压,CMTI超过100kV/us
  • “中国IC设计成就奖”提名产品简介:车规级数字通讯隔离 Chipways汽车级电池组隔离器XL8820系列产品是同时满足AEC-Q100汽车可靠性标准和ISO 26262汽车功能安全标准的车规级隔离式通讯接口芯片。
  • “中国IC设计成就奖”提名产品简介:数字隔离器Pai122M3 荣湃数字隔离器产品采用自主知识产权的智能分压技术开发设计而成,相比同类隔离产品,该专利技术可以实现更低的功耗,更高的速率和更优的时序特性。智能分压技术相比传统隔离传输技术,采用更简洁的电路架构实现更优的隔离传输性能,采用智能分压锁存放大模块电路,替代传统架构中的高频发生电路,高频调制电路和高频解调三部分电路,因此芯片面积只有传统架构芯片面积的1/2~1/3。
  • “中国IC设计成就奖”提名产品简介:集成隔离电源的隔离 CA-IS3062W是川土微电子在2020年12月推出的一款隔离式控制区域网络(CAN)物理层收发器,同时内部集成隔离式DC-DC转换器。符合ISO11898-2标准的技术规范。此器件采用片上二氧化硅(SiO2)电容作为隔离层,在CAN协议控制器和物理层总线之间创建一个完全隔离的接口,配合内部集成的隔离式DC-DC,可隔绝噪声和干扰并防止损坏敏感电路。
  • “中国IC设计成就奖”提名产品简介:Type-C全接口综合保 传统上,需要采用多个OVP保护芯片与TVS等器件,为Type-C接口提供可靠的保护。维安采用”All-IN-One”的技术方案,在单芯片上实现了4个通道的短路与热插拔,和8个通道的系统级静电综合防护。
  • 新的10BASE-T1L标准有哪些变化? 本文介绍了10BASE-T1L的基础知识,并展示了与选择各种应用适用连接器相关的产品。通过数据线实现各种互连设备的电力传输在10BASE-T1L中也发挥着至关重要的作用。
  • 扫除车辆电动化的障碍 未来是电动化的世界。事实上,在无数的工业和消费环境中,产品、系统和流程的电动化进程正加速发展。先进的电子技术替代了液压和气动等传统方法,驱动着这些转变。
  • 更高、更快伴生更强要求,迎接DDR5内存验证和调试挑战 DDR5带来了一系列全新的挑战,在实现和检验时必须克服这些挑战。更高的数据速率会扩大要求的测试设备带宽,要求新的流程来测量之前的方法测量不了的抖动,要求接收机均衡形式的全新DDR单元,甚至要引入新的采用夹具的标准化测试,这些都是DDR5验证面临的重大挑战。
  • 聚酰亚胺薄膜应用于数字隔离器 与传统的光耦合器相比,数字隔离器在高速、低功耗、高可靠性、小尺寸、高集成度和易用性方面更具优势。数以十亿计的使用微变压器的数字隔离器已广泛用于许多市场,包括汽车、工业自动化、医疗和能源。这些数字隔离器之所以具有高压性能,主要原因在于:在堆栈式绕组变压器的顶部螺旋绕组和底部螺旋绕组之间使用了聚酰亚胺膜。本文将介绍数字隔离器的结构,其中使用聚酰亚胺膜作为隔离层。为了满足多种安全标准,例如UL和VDE,数字隔离器需要具有承受短时耐受电压、浪涌电压、工作电压等各种高压性能。研究了聚酰亚胺在交流或直流等各种高压波形下的老化行为,并通过聚酰亚胺寿命模型推算出隔离器的工作电压。此外,还将讨论通过改进结构来改善聚酰亚胺的高压使用寿命。
  • Verizon 45W USB-PD快充充电器采用英飞凌EZ-PD PAG 英飞凌宣布其EZ-PD PAG1 AC-DC电源解决方案在最近推出的Verizon USB-PD快充充电器上成功商用。
  • 抓住JESD204B接口功能的关键问题 本文阐释JESD204B标准的ADC与FPGA的接口,如何判断其是否正常工作,以及可能更重要的是,如何在有问题时排除故障。文中讨论的故障排除技术可以采用常用的测试与测量设备,包括示波器和逻辑分析仪,以及Xilinx的ChipScope或Altera的SignalTap等软件工具。同时阐明了接口信号传输,以便能够利用一种或多种方法实现信号传输的可视化。
  • 大联大友尚集团推出基于Diodes产品的HDMI 2.0双向切 大联大控股宣布,其旗下友尚推出基于达尔科技(Diodes)PI3WVR12412芯片的HDMI2.0双向切换器方案。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了