Inter-IC (I2C) 总线 4.0 版本广泛应用于嵌入式系统设计,并已在数以千计的集成电路中用于通信和控制应用。
仍然广泛使用的是手动测量和调试,部分原因是工程师认为,由于 I 2 C 已经存在很长时间,所以几乎不会出错。当需要使用手动解码来触发总线命令时,麻烦就来了。
I 2、I 2 C 或“I 平方 C”,代表内部集成电路。它初由 Philips Semiconductor 在 1980 年代初期开发,旨在提供一种将控制器连接到外围芯片的低成本方式,并已发展成为嵌入式系统中设备之间通信的标准。
这种简单的双线设计已经进入广泛的芯片领域,包括来自众多芯片制造商的 I/O、A/D、D/A、温度传感器、微控制器和微处理器,包括 Analog Devices、Atmel、Cyprus、Freescale、 Infineon、Intel、Maxim、Microchip、NXP、Silicon Labs、ST Microelectronics、Texas Instruments、Xicor 等。
I 2的物理双线接口(图 1)由双向串行时钟 (SCL) 和数据 (SDA) 线组成。I 2 C 支持总线上的多个主机和从机,但只能有一个主机处于活动状态。任何 I 2 设备都可以连接到总线,允许任何主设备与从设备交换信息。每个设备都由一个的地址识别。设备可以作为发射器或接收器运行。
2012 年 2 月发布的 I 2 规范 4.0 版为使用推挽逻辑的新串行数据和时钟线添加了 5 Mb/s 模式,并添加了指定的制造商识别表。I 2 标准规定了以下消息格式:
* 开始——表示主设备正在控制总线,随后将出现一条消息。
* 地址——一个 7 位或 10 位数字,表示将被读取或写入的设备地址。
* R/W 位——一位指示数据是从从设备读取还是写入从设备。
* Ack——来自从设备的一位确认主设备的操作。通常每个地址和数据字节都有一个确认,但并非总是如此。
* 数据——从设备读取或写入设备的整数字节数。
* Stop——表示消息已完成,主机已释放总线。
由于 I 2 使用单独的时钟和数据线,因此可以使用时钟作为参考点并手动解码数据线。然而,工程师需要找到消息的开始(时钟高电平时数据变低),手动检查并记下每个时钟上升沿的数据值,然后将这些位组织到消息结构中。
使用如图 2所示的快速参考指南,仅解码一条消息就很容易花费几分钟的时间,而且在长时间的采集中,没有办法知道它是否是您正在寻找的消息,直到您已经解码了。如果不是,那么您需要重新开始繁琐且容易出错的解码过程,直到找到正确的消息。
只触发正确的消息内容会很好,但是多年来一直在示波器和逻辑分析仪上使用的状态和模式触发器在这里对您没有任何好处。它们旨在查看跨多个渠道同时发生的模式。要在串行总线上工作,他们的触发引擎需要深入数十到数百个状态(每位一个状态)。
通过定义打开哪些通道时钟和数据,以及用于确定逻辑 1 和 0 的阈值,您可以快速使 MSO 了解通过总线传输的协议。
有了这些知识,示波器就可以触发任何指定的消息级信息,然后将生成的采集解码为有意义的、易于解释的结果。边沿触发的日子已经一去不复返了,希望示波器捕获感兴趣的事件,然后在寻找问题的同时手动解码一条条消息。
I 2 调试
例如,考虑图 3中的嵌入式系统。I 2 总线连接到多个设备,包括 CPU、EEPROM、风扇速度控制器、数模转换器 (DAC) 和几个温度传感器。
接下来要检查的是温度传感器故障。风扇速度控制器定期轮询两个温度传感器(位于仪器的不同区域)并调整风扇速度以调节内部温度。
一种可能是其中一个或两个温度传感器读数不正确。要查看传感器和风扇速度控制器之间的相互作用,步是连接到 I 2时钟和数据线,并在示波器上指定输入通道和电压电平。
在此示例中,两个传感器在 I 2 总线上的地址为 18 和 19,因此步是设置触发事件以查找对地址 18 的写入(风扇速度控制器轮询传感器以获取当前温度) . 触发采集如图 4 的屏幕截图所示。
查看采集的波形,示波器确实触发了对地址 18 的写入(显示在显示屏的左下方)。事实上,风扇速度控制器两次尝试写入地址 18,但在两次尝试写入温度传感器后都没有收到确认。(示波器用带红色边框的感叹号指示无确认条件。)控制器随后检查地址 19 处的温度传感器并接收回所需信息。
那么,为什么个温度传感器不响应风扇控制器呢?
查看电路板上的部件,发现其中一条地址线未正确焊接。温度传感器无法在总线上通信,结果导致设备过热。此示例展示了混合信号示波器如何使用 I 2 触发和总线解码功能来快速隔离潜在难以捉摸的问题。
在图 4 的示例中,系统配置为在特定地址上触发,但在使用 I 2 总线时在许多其他条件下触发也很有用。以下是一些可用的有用触发选项:
* Start—— 当 SDA 变低而 SCL 变高时触发。
* Repeated Start – 在没有先前停止条件的情况下出现开始条件时触发。这通常发生在主机发送多条消息而不释放总线时。
* 停止——当 SCL 为高时 SDA 变高时触发。
* Missing Ack—— 从设备通常配置为在地址和数据的每个字节后发送一个确认。示波器可以在从设备不生成确认位的情况下触发。
* 地址 – 在用户指定的地址(如上例所示)或任何预编程的特殊地址上触发,包括广播呼叫、起始字节、HS 模式、EEPROM 或 CBUS。寻址可以是 7 位或 10 位,并以二进制或十六进制输入。也可以指定读取或写入。
* 数据——触发多 12 个字节的用户指定的以二进制或十六进制输入的数据值。
* 地址和数据——这允许用户输入地址和数据值以及读与写以捕获感兴趣的确切事件。
这些触发器允许您隔离特定的总线流量,而解码功能可以查看采集中通过总线传输的每条消息的内容。
结论
I 2 串行总线被广泛使用,特别是在处理简单性和成本比速度更重要的传感器或人机界面的系统中。在示波器上对I 2进行解码的传统人工解码方法仍然 非常耗时且效率低下。然而,通过安装适当的应用模块,混合信号示波器可以触发、解码和搜索 I 2总线流量,从而大大提高生产率。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。