0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用混合信号示波器进行高效 I2C 总线调试

FPGA设计论坛 来源:未知 2023-06-01 01:20 次阅读

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、IntelMaximMicrochipNXPSilicon Labs、ST Microelectronics、Texas Instruments、Xicor 等。

I 2的物理双线接口(图 1)由双向串行时钟 (SCL) 和数据 (SDA) 线组成。I 2 C 支持总线上的多个主机和从机,但只能有一个主机处于活动状态。任何 I 2 设备都可以连接到总线,允许任何主设备与从设备交换信息。每个设备都由一个的地址识别。设备可以作为发射器或接收器运行。




图 1. 标准 I 2 消息结构。


初,I 2 仅使用 7 位地址,但演变为也允许使用 10 位寻址。现在支持四种比特率:100 kb/s(标准模式)、400 kb/s(快速模式)、3.4 Mb/s(高速模式)和 5 Mb/s(超快模式)。设备的数量由 400 pF 的电容或大约 20-30 个设备决定。


2012 年 2 月发布的 I 2 规范 4.0 版为使用推挽逻辑的新串行数据和时钟线添加了 5 Mb/s 模式,并添加了指定的制造商识别表。I 2 标准规定了以下消息格式:

* 开始——表示主设备正在控制总线,随后将出现一条消息。
* 地址——一个 7 位或 10 位数字,表示将被读取或写入的设备地址。
* R/W 位——一位指示数据是从从设备读取还是写入从设备。
* Ack——来自从设备的一位确认主设备的操作。通常每个地址和数据字节都有一个确认,但并非总是如此。
* 数据——从设备读取或写入设备的整数字节数。
* Stop——表示消息已完成,主机已释放总线。

由于 I 2 使用单独的时钟和数据线,因此可以使用时钟作为参考点并手动解码数据线。然而,工程师需要找到消息的开始(时钟高电平时数据变低),手动检查并记下每个时钟上升沿的数据值,然后将这些位组织到消息结构中。

使用如图 2所示的快速参考指南,仅解码一条消息就很容易花费几分钟的时间,而且在长时间的采集中,没有办法知道它是否是您正在寻找的消息,直到您已经解码了。如果不是,那么您需要重新开始繁琐且容易出错的解码过程,直到找到正确的消息。

只触发正确的消息内容会很好,但是多年来一直在示波器和逻辑分析仪上使用的状态和模式触发器在这里对您没有任何好处。它们旨在查看跨多个渠道同时发生的模式。要在串行总线上工作,他们的触发引擎需要深入数十到数百个状态(每位一个状态)。


图 2. 参考指南用于手动解码 I 2 数据包,这是一个耗时的过程。


幸运的是,有更好的方法。借助适当的串行触发和分析应用模块,混合信号示波器成为使用 I 2总线的嵌入式系统设计人员的强大工具。典型的混合信号示波器包括 4 个模拟通道和多达 16 个数字通道,所有通道都完全时间相关。


通过定义打开哪些通道时钟和数据,以及用于确定逻辑 1 和 0 的阈值,您可以快速使 MSO 了解通过总线传输的协议。

有了这些知识,示波器就可以触发任何指定的消息级信息,然后将生成的采集解码为有意义的、易于解释的结果。边沿触发的日子已经一去不复返了,希望示波器捕获感兴趣的事件,然后在寻找问题的同时手动解码一条条消息。

I2调试
例如,考虑图 3中的嵌入式系统。I 2 总线连接到多个设备,包括 CPU、EEPROM、风扇速度控制器、数模转换器 (DAC) 和几个
温度传感器

图 3. I 2总线示例图示。


现在假设其中一个产品被送回工程部门进行故障分析,因为该产品持续变得过热并自行关闭。首先要检查的是风扇控制器和风扇本身,但它们似乎都在正常工作。


接下来要检查的是温度传感器故障。风扇速度控制器定期轮询两个温度传感器(位于仪器的不同区域)并调整风扇速度以调节内部温度。

一种可能是其中一个或两个温度传感器读数不正确。要查看传感器和风扇速度控制器之间的相互作用,步是连接到 I 2时钟和数据线,并在示波器上指定输入通道和电压电平。

在此示例中,两个传感器在 I 2 总线上的地址为 18 和 19,因此步是设置触发事件以查找对地址 18 的写入(风扇速度控制器轮询传感器以获取当前温度) . 触发采集如图 4 的屏幕截图所示。


图 4. 屏幕截图显示 I 2 地址和数据总线波形解码。


在这种情况下,通道 1(黄色)连接到 SCLK,通道 2(青色)连接到 SDA。紫色波形显示屏底部的迹线显示解码后的 I 2 总线。显示屏的上半部分显示了整个采集过程。在这种情况下,示波器捕获了中间有突发活动的大量总线空闲时间。显示屏下方较大的部分放大了该部分。示波器已对通过总线的每条消息的内容进行解码。


查看采集的波形,示波器确实触发了对地址 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总线流量,从而大大提高生产率。





有你想看的精彩




至芯科技-FPGA就业培训来袭!你的选择开启你的高薪之路!5月30号西安中心开课、欢迎咨询!
FPGA 实现线性相位 FIR 滤波器的注意事项
基于ARM的FPGA嵌入式系统实现





扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!


点个在看你最好看






原文标题:使用混合信号示波器进行高效 I2C 总线调试

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21648

    浏览量

    601473

原文标题:使用混合信号示波器进行高效 I2C 总线调试

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解I2C总线与SPI总线的区别

    I2C(Inter-Integrated Circuit)表示集成电路互连,是一种用于线路板内部芯片之间通信的总线
    的头像 发表于 10-16 15:16 1814次阅读
    详解<b class='flag-5'>I2C</b><b class='flag-5'>总线</b>与SPI<b class='flag-5'>总线</b>的区别

    了解I2C总线

    电子发烧友网站提供《了解I2C总线.pdf》资料免费下载
    发表于 10-08 11:13 1次下载
    了解<b class='flag-5'>I2C</b><b class='flag-5'>总线</b>

    I2C总线上拉电阻计算

    电子发烧友网站提供《I2C总线上拉电阻计算.pdf》资料免费下载
    发表于 10-08 09:54 1次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>上拉电阻计算

    物联网嵌入式软件中的I2C总线设计详解

    基本概念、特点、通信协议,以及在不同场景下的高级应用和最佳实践。I2C接口只有2信号线,总线上可以连接多个设备,硬件实现简单,可扩展性强。I2C
    的头像 发表于 09-29 16:21 250次阅读
    物联网嵌入式软件中的<b class='flag-5'>I2C</b><b class='flag-5'>总线</b>设计详解

    优秀实践:I3C共享总线上的I2C器件

    电子发烧友网站提供《优秀实践:I3C共享总线上的I2C器件.pdf》资料免费下载
    发表于 09-06 09:49 0次下载
    优秀实践:<b class='flag-5'>I3C</b>共享<b class='flag-5'>总线</b>上的<b class='flag-5'>I2C</b>器件

    如何调试I2C

    电子发烧友网站提供《如何调试I2C.pdf》资料免费下载
    发表于 08-27 10:38 0次下载
    如何<b class='flag-5'>调试</b><b class='flag-5'>I2C</b>

    I2C总线协议的工作原理和寻址格式

    I2C(Inter-Integrated Circuit)总线协议,即集成电路总线协议,是一种用于连接微控制器及其外围设备的串行总线协议。I2C
    的头像 发表于 05-27 15:47 1533次阅读

    蓝牙串口通讯总线——I2C/SPI/UART

    嵌入式工程师在做串口通信调试工作的时候,会经常用到I2C、SPI、UART这3条总线I2C、SPI、UART这三种通信总线在嵌入式领域很常
    的头像 发表于 01-22 09:41 1426次阅读
    蓝牙串口通讯<b class='flag-5'>总线</b>——<b class='flag-5'>I2C</b>/SPI/UART

    关于I2C总线的6个问题分析

    I2C总线上的上拉电阻范围是多少? 回答: 总线电容是走线部分、连接部分、管脚部分的电容的总和。总线电容限制了上拉电阻(Rp) 的最大值,因为
    发表于 12-25 09:19 1430次阅读

    I2C地址跳变问题的调试案例

    引言:I2C作为使用最为广泛的通讯接口,调试各类I2C器件,大家应该都很轻车熟路。一般对于外挂电阻配置器件的I2C地址,例如电阻上拉之后,器件的地址就会固定下来不再变动,但是今天给大家
    的头像 发表于 11-22 10:51 1527次阅读
    <b class='flag-5'>I2C</b>地址跳变问题的<b class='flag-5'>调试</b>案例

    I2C总线信号与测试案例(二)

    前面一章讲解了I2C总线的基本原理,那么在电路设计完成打板回来,肯定要做信号测试来验证设计
    的头像 发表于 11-20 15:49 3227次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b><b class='flag-5'>信号</b>与测试案例(二)

    I2C总线信号与测试案例(一)

    I2C bus是Inter-IC bus的缩写,意思是IC器件之间的通讯总线I2C 总线的特点如下
    的头像 发表于 11-20 15:45 1845次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b><b class='flag-5'>信号</b>与测试案例(一)

    分享I2C总线规范

    电子发烧友网站提供《分享I2C总线规范.pdf》资料免费下载
    发表于 11-18 10:49 0次下载
    分享<b class='flag-5'>I2C</b><b class='flag-5'>总线</b>规范