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
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630278

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    是德DSOX4034A示波器I2C总线信号分析

    。然而,随着系统复杂度的提升,I2C总线信号完整性和时序分析变得愈发重要。是德科技(Keysight Technologies)推出的DSOX4034A示波器凭借其高性能和先进的分析
    的头像 发表于 03-19 13:47 935次阅读
    是德DSOX4034A<b class='flag-5'>示波器</b><b class='flag-5'>I2C</b><b class='flag-5'>总线</b><b class='flag-5'>信号</b>分析

    I2C总线复用

    帝晶智慧屏I2C总线复用
    的头像 发表于 03-11 17:20 1853次阅读

    是德示波器混合信号调试

    在现代电子设计与调试中,测试设备的选择至关重要,尤其是在处理复杂的混合信号时,传统的示波器往往面临诸多局限性。随着电子技术的快速发展,越来越多的设计需要同时处理模拟
    的头像 发表于 02-12 17:58 662次阅读
    是德<b class='flag-5'>示波器</b><b class='flag-5'>混合</b><b class='flag-5'>信号</b><b class='flag-5'>调试</b>

    I2C总线通信原理 如何设计I2C总线电路

    高效的通信接口标准。I2C总线通信原理主要包括以下要点: 总线结构 : I2C总线仅使用两条
    的头像 发表于 01-31 15:01 1879次阅读

    基于I2C总线的智能家居应用

    高效的特点,在智能家居领域扮演着重要角色。 I2C总线简介 I2C总线是一种多主机、多从机的串行通信协议,由Philips Semicon
    的头像 发表于 01-17 16:21 1010次阅读

    I2C总线的优缺点分析

    I2C总线作为一种广泛使用的串行通信协议,以其简单性和高效性在嵌入式系统中占据着重要地位。 I2C总线的优点 1. 简单性和低成本
    的头像 发表于 01-17 15:50 1763次阅读

    I2C总线数据包结构详解

    。以下是I2C总线数据包结构的详解: 一、I2C总线数据包的基本组成 I2C总线上的数据传输以数
    的头像 发表于 01-17 15:46 1391次阅读

    如何选择I2C总线拉电阻

    I2C总线是一种广泛使用的串行通信协议,它允许多个设备通过两条线(数据线SDA和时钟线SCL)进行通信。为了确保数据信号的稳定性和减少反射,I2C
    的头像 发表于 01-17 15:43 1097次阅读

    I2C总线与Arduino的接口示例

    基础 I2C总线由两条线组成:数据线(SDA)和时钟线(SCL)。SDA用于传输数据,而SCL用于同步数据传输。I2C设备可以是主设备或从设备。主设备生成时钟信号并启动数据传输,从设备
    的头像 发表于 01-17 15:34 2359次阅读

    I2C总线的工作模式介绍

    在现代电子系统中,I2C总线作为一种多主机、多从机的串行通信协议,扮演着至关重要的角色。它允许多个设备共享同一总线进行数据传输,从而简化了系统设计并降低了成本。
    的头像 发表于 01-17 15:32 1635次阅读

    I2C总线协议详细解析

    1. I2C总线简介 I2C总线由Philips Semiconductor(现为NXP Semiconductors)在1980年代初期开发。它是一种多主机
    的头像 发表于 01-17 15:22 1571次阅读

    I2C总线故障排除技巧

    I2C总线是一种广泛使用的串行通信协议,它允许多个设备在两条线上(数据线SDA和时钟线SCL)进行通信。由于其简单性和灵活性,I2C总线在嵌
    的头像 发表于 01-17 15:20 3864次阅读

    I2C总线与单片机的连接

    在现代电子系统中,单片机(MCU)是核心控制单元,而I2C总线作为一种多主机、多从机的串行通信协议,因其简单、高效和节省引脚的特性而被广泛应用于各种电子设备中。 I2C
    的头像 发表于 01-17 15:18 1969次阅读

    I2C总线应用实例分析

    在现代电子系统中,I2C总线因其简单、灵活和高效的特点而被广泛应用于各种设备之间的通信。 I2C总线概述
    的头像 发表于 01-17 15:09 1242次阅读

    I2C总线上拉电阻阻值如何确定?

    导读I2C总线在产品设计中被广泛应用,尽管其结构简单,但经常发生上拉电阻设计不合理的问题。本文将对I2C上拉电阻的选择进行简要分析。一根信号
    的头像 发表于 12-27 11:34 2397次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>上拉电阻阻值如何确定?