示波器调试嵌入式串行总线

Alex Klimaj阐述利用内置解码进行手工单帧解码已经是过去式了。先进的串行触发可以更轻松、准确地抓取帧。

在电子行业,为了缩小产品尺寸、降低功耗和成本,串行总线被越来越多地用于嵌入式设备。串行总线虽然可以减少数据传输所需的引脚数、功耗和空间,但也带来了更高的设计复杂度。因此,串行总线工程师需要一种调试和验证其设计的快速方法。多种串行标准的异步特性给抓取和解码带来了挑战。虽然协议分析仪是排查串行总线的功能及时序问题的极佳工具,但示波器还可以隔离噪声源,捕捉瞬变,执行物理层符合性测试,以及测量功耗。具有内置串行触发器和解码功能的示波器是嵌入式硬件工程师的一体化工具。

抓取与解码

在内置串行解码器的示波器出现之前,工程师必须对串行帧进行手动解码。这需要非常了解串行总线的规范,在抓取特定帧时还需要一点运气。如图1所示,示波器的通道1连接串行时钟线(SCL)、通道2连接串行数据线(SDA),我在该示波器上抓取了一个I2C帧。为了对其进行手来解码,我必须执行以下操作:
• 在示波器上抓取一个帧。
• 截图。
• 用计算机打开它,为每一个时钟信号的上升沿添加线条。
• 根据对应的信号电平,将每一个SCL上升沿的SDA信号转换为1或0。
• 基于I2C总线规范,将二进制值转换为十六进制。对时钟边沿计数,从而确定I2C总线规范使用一个启动脉冲、7位地址位、读/写位、应答位、8位数据位、另一个应答位,以及最后一个停止位,由此我确定了其十六进制值。因此,这是一个具有0x29地址和0x04数据的写入帧。

这是一个可行的方法,但非常耗时,而且得到的可能不是所需的帧。如果工程师需要解码多个串行帧,需要相当长的时间。因此,内置串行解码和触发器的示波器具有明显优势。如图2所示,我打开了示波器的内置I2C解码器。此外,我利用串行触发器功能快速查找准确的数据包。你可以看到示波器标线底部的蓝色解码帧和顶部的橙色触发点。利用这一功能,工程师无需深入了解串行规范就能快速查找总线的准确数据。

采用分段内存捕捉罕见的串行事件

例如,设计中包含多个集成电路(IC),它们通过I2C与一个单片机通讯,而我希望看到所有被写入特定IC的数据。在IC的写入地址设置一个触发器可以轻松实现这一点。我可以设置示波器在发现该地址时触发,但仍然很难从示波器默认的单道波形显示中获得传输数据的全局视图。这时分段内存就派上用场了。分段内存会让示波器等待,当达到触发条件时将波形保存至内存,并为其添加时间标记,然后重置触发器等待下一次触发。如图3所示,我已经设置示波器在数据每一次被写入16进制地址为64的IC时触发,然后开启分段内存捕捉1000个触发事件。工程师使用该工具可以看到哪些数据被写入IC,写入频率如何,还可以查看每一帧的物理信号。如果一个或多个帧包含意外数据,工程师可以在列表中选择该帧,检查物理信号的完整性。噪音或瞬变可能导致错误。

分离耦合的瞬变

罕见的瞬变与串行总线产生耦合可能会导致错误或者随机重置嵌入式处理器。使用传统的示波器触发方式很难进行分离。当出现更罕见的瞬变时,包含罕见事件的数字串行信号使其更加难以触发。识别是否出现瞬变信号的方法是采用无限持久化。无限持久化设置不会清除之前抓取信号的显示内容。显示内容不断更新,新的信号会显示在之前信号的上方。采用串行触发器来显示所有的发送帧以及无限持久化会填满显示屏的每一个位。如果出现瞬变,你会很快发现它。

一旦发现瞬变,你希望触发它。就像我之前提到的,使用传统的触发方式很难进行捕捉。触摸屏示波器的出现带来了新的触发方式。利用被称为区域触发器的功能可以轻松捕捉瞬变。图4显示了一个包含罕见瞬变的通用串行总线(USB)信号。

要触发该瞬变,我只需要在触摸屏上画一个方框,然后选择“区域1必须相交”。示波器已经开始触发任何USB帧头。开启区域触发器指示示波器只在发现一个USB帧头以及指定区域内的信号时触发。如图5所示。一旦成功触发瞬变,你就可以对其进行测量并找出来源。

查找噪声源

当串行总线没有遭遇瞬变却出现恒定的耦合噪声时应该怎么办呢?由于无法为噪声设置触发,因此必须使用其他方法来查找噪声源。示波器的快速傅立叶变换(FFT)数学函数是一个强大的工具。FFT将时域信号转换为频域显示。使用FFT能识别耦合噪声的频率分量。图6显示了一个包含耦合噪声的USB信号。

从一个USB帧头包的截图(图6)可以看出噪声的峰峰电压约为150mV。为了找出该噪声的来源,我使用了FFT函数,同时开启了峰值标记。我第一次开启FFT时并没有发现类似噪声的明显频率分量。这说明噪声的频率比USB信号的频率低得多。

为了找出主要的频率分量,我不得不将区域缩小到10ms。这时FFT可以检测到低频信号。如图7所示,噪声频率约为61Hz。其实这是USB信号耦合了来自于美制交流电源线的噪声。

嵌入式串行总线的另一个常见噪声源是以兆赫频率运行的时钟信号。图8显示了一个在USB信号中运行的FFT,该USB信号耦合了来自于16MHz时钟的噪声。内置无线局域网的物联网设备也可能遭遇来自于无线电的噪声。图9显示了一个包含2.4GHz(常见的无线局域网频率)频率峰值的USB信号。

总结

嵌入式硬件工程师不断接受挑战,力图创造出更小、更省电、成本更低的设备。这就需要更高效的调试与测量解决方案。内置串行触发器与解码的现代数字存储示波器是完成这一任务的理想工具。利用内置解码进行手工单帧解码已经是过去式了。先进的串行触发可以更轻松、准确地抓取帧。串行触发器和解码与分段内存相结合可以长时间捕捉大量的特定数据传输。触摸屏带来的新型触发方式可以轻而易举地分离罕见的瞬变。最后,示波器的FFT功能可以识别噪声源。对嵌入式系统工程师而言,拥有一台现代示波器就等于拥有一个完整的调试工具箱。

Alex Klimaj是Keysight科技有限公司示波器与协议部的产品营销工程师。

评价!您认为该篇文章:

非常好          一般           没有价值

无需注册,直接提交,定期抽奖,祝您好运!

  • 转发至:
  • 收藏到QQ书签

相关报导