调试嵌入式系统设计中的低速串行总线

2011-12-27 10:22:45来源: 互联网
今天,嵌入式系统几乎遍布在人类社会的每个角落。嵌入式系统可以简单定义为属于大型系统或机器一部分的一种专用计算机系统,其目的是为该系统或机器提供监测和控制服务。典型的嵌入式系统在开机时会开始运行某些专用应用,直到关闭时才会停止。当前设计和生产的几乎每个电子设备都是嵌入式系统。嵌入式系统实例包括:
  • 电子闹表
  • 自动柜员机
  • 移动电话
  • 计算机打印机
  • 防抱死刹车控制器
  • 微波炉
  • 导弹使用的惯性引导系统
  • DVD 播放机
  • 个人数字助理 (PDA)
  • 工业自动化和监测使用的可编程逻辑控制器 (PLC)
  • 便携式音乐播放机
  • 可能还包括烤面包机

嵌入式系统可能包含许多不同类型的设备,包括微处理器、微控制器、DSPRAMEPROMFPGA、模数转换器、数模转换器和I/O。这些设备在传统上一直使用宽并行总线相互通信及与外部世界通信。然而今天,嵌入式系统设计中使用的越来越多的构件将用串行总线代替宽并行总线,原因如下:

  • 减少了要布线的信号数量,降低了要求的电路板空间
  • 降低了成本
  • 降低了功率要求
  • 减少了封装上的针脚数量
  • 嵌入式时钟
  • 差分信令,改善抗噪声能力
  • 采用标准串行接口的器件大量供应

尽管串行总线提供了大量的优势,但它们也给嵌入式系统设计人员带来了某些重大挑战,因为它以串行方式传送信息,而不是以并行方式传送信息。本应用指南讨论了嵌入式系统设计人员的常用挑战,及怎样使用泰克新推出的DPO4000系列示波器中提供的功能迎接这些挑战。

并行与串行比较


在并行结构中,总线的每个组件都有自己的信号路径。可能有16 条地址线、16 条数据线、一条时钟线和各种其它控制信号。通过总线发送的地址或数据值会通过所有并行线路同时传送。因此,使用大多数示波器和逻辑分析仪中的状态触发或码型触发功能触发感兴趣的事件相对简便。同时,可以简便地一目了然地了解在示波器或逻辑分析仪显示屏上捕获的数据。例如,在图1 中,我们使用逻辑分析仪从微控制器中采集时钟线、地址线、数据线和控制线。通过使用状态触发,我们隔离了我们查找的总线。为“解码”总线上发生的情况,我们需要查看每条地址线、数据线和控制线的逻辑状态。在串行总线中,所有这些信息都必须以串行方式在相同的少数导线 (有时是一条) 上发送。这意味着一个信号可能包括地址信息、控制信息、数据信息和时钟信息。例如,看一下图2 中所示的控制器区域网 (CAN) 串行信号。

这条消息包含帧头、标识符(地址)、数据长度代码、数据、CRC 和帧尾及少量其它控制位。时钟嵌入在数据中,使用填充位保证接收设备拥有数量充足的边沿锁定时钟,这使情况变得进一步复杂化。即使是经过训练的眼睛,也很难迅速了解这一消息的内容。现在想象一下这是一条有问题的消息,一天只发生一次,您需要触发采集这条消息。传统示波器和逻辑分析仪不能有效处理这类信号。


即使是比较简单的串行标准,如I2C,与并行协议相比,观察总线上传输的内容仍要明显困难得多。

I2C采用分开的时钟线和数据线,因此至少在本例中,您可以使用时钟作为参考点。但是,您仍需要找到消息开头(数据变低,时钟为高),手动检查和记下每个时钟上升沿上的数据值,然后把各bit 位整理成消息结构。在长采集中解码一条消息就会需要几分钟时间,而您不知道这是不是实际要找的消息。如果不是,您需要在下一条消息上重新开始这一麻烦的、容易出错的过程。最好只触发查找的消息内容,但多年来示波器的逻辑分析仪上使用的状态触发和码型触发并不能发挥作用。它们是为了考察多条通道中同时发生的问题设计的。为处理串行总线,其触发引擎深度必需有几千种状态(每个bit位一个状态)。即使存在这种触发功能,但为所有这些bit位逐个状态编程也不是件好玩的事。必须找到一种更好的方式!

DPO4000 系列提供了一种更好的方式。下面几节重点介绍了可以怎样在嵌入式系统设计最常用的低速串行标准中采用DPO4000 系列。

I2C背景知识

I2C 或"I squared C" 是指集成电路间总线。它最初是飞利浦公司在20世纪80年代研制的,为把控制器连接到电视机上的外设芯片提供了一种低成本方式,但之后其已经发展成为嵌入式系统设备之间通信的一项全球标准。它采用简单的两线设计,广泛用于领先芯片制造商生产的各种芯片中,如I/O、模数转换器、数模转换器、温度传感器、微控制器和微处理器,芯片制造商则包括:Analog Devices, Atmel, Infineon, Cyprus, 英特尔,Maxim, 飞利浦, Silicon Laboratories, ST Microelectronics,德州仪器, Xicor 等等。

工作方式


I2C的物理两线接口由双向串行时钟(SCL)和数据(SDA)线组成。I2C 支持总线上多个主从设备,但一次只能激活一个主设备。任何I2C设备可以连接到总线上,允许任何主设备与从设备交换信息。每台设备都使用唯一的地址识别,可以作为发射机或接收机操作,具体取决于设备功能。在开始时,I2C 只使用7 位地址,但随着时间推移,它演变成也支持10 位地址。它支持三种位速率:100 kbps (标准模式), 400 kbps (快速模式)和3.4Mbps (高速模式)。最大设备数量取决于400 pf 的最大容量,或大约支持20-30 台设备。I2C 标准规定了下述格式,如图4 所示:

  • Start - 表明设备控制总线,一条消息将开始传送
  • Address -7 位或10 位数字,表示将要读取或写入的设备地址
  • R/W Bit - 1 位,表明是否将从设备中读取数据或向设备写入数据
  • Ack - 1 位,来自从设备,确认主设备的操作。通常每个地址和数据字节有一个确认位,但不总是有确认位
  • Data - 从设备中读取或写入设备的字节的整数
  • Stop - 表明消息结束,主设备已经释放总线

处理I2C


通过DPO4EMBD串行触发和分析应用模块,DPO4000系列成为处理I2C总线的嵌入式系统设计人员的强大工具。前面板有两个总线按钮(B1 和B2),允许用户把到示波器的输入定义为一条总线。I2C 总线的设置菜单如图5 所示。

通过简单地定义时钟和数据位于哪条通道上及用来确定逻辑1和0的门限,示波器可以理解通过总线传输的协议。有了这些知识,示波器可以触发任何指定的消息级信息,然后把得到的采集数据解码成有意义的、容易理解的结果。边沿触发已经过了好多天了,希望您已经采集到感兴趣的事件,然后逐条消息手动解码消息,找到问题。

例如,考虑一下图6中的嵌入式系统。I2C总线连接到多台设备上,包括CPU、EEPROM、风扇速度控制器、数模转换器和大量的温度传感器。

这部仪器被退回工程部分析故障,该产品持续过热,自动关机。要检查的第一件事是风扇控制器和风扇本身,但似乎一切正常。然后要检查温度传感器是否有问题。风扇速度控制器定期轮询两个温度传感器 (位于仪器中不同的区域),调节风扇速度,稳定内部温度。您怀疑其中一个或两个温度传感器读数不正确。为查看传感器与风扇速度控制器之间的交互。我们只需连接到I2C时钟和数据线,在DPO4000 上设置总线。我们知道,两个传感器在I2C 总线上的地址分别是18 和19,因此我们决定设置触发事件,查找地址18上的写入操作 (风扇速度控制器轮询传感器的当前温度)。触发的采集结果如图7 中的屏幕图所示。

在这种情况下,通道1 (黄色) 连接到SCLK,通道2 (青色)连接到SDA。紫色波形是我们向示波器中输入一些简单的参数定义的I2C总线。显示器的上方部分显示了整个采集。在这种情况下,我们已经捕获了大量的总线空闲时间,中间是我们放大的突发活动。显示屏下方的较大部分是缩放窗口。您可以看出,示波器已经解码了经过总线的每条消息的内容。DPO4000 系列上的总线使用表1 中的颜色/ 标记,表明消息中的重要部分。

看一下采集的波形,我们可以看到,示波器触发地址18上的写入操作 (如显示屏左下方所示)。事实上,风扇速度控制器试图写入地址18两次,但在这两种情况下,在试图写入温度传感器时它没有收到确认。然后它检查地址19 上的温度传感器,收回希望的信息。因此,为什么第一个温度传感器没有对风扇控制器作出响应呢?看一下电路板上的实际部件,我们发现其中一条地址线焊接不当。温度传感器不能在总线上通信,结果导致设备过热。由于DPO4000系列的I2C触发和总线解码功能,我们只需几分钟时钟,就成功地隔离了这个潜在的难检问题。

在图7 所示的实例中,我们触发了写入操作,但DPO4000 强大的I2C 触发还包括许多其它功能。

  • Start - 在SDA 变低、SCL 为高时触发。
  • Repeated Start - 在没有上一个停止条件下发生开始条件时触发。这通常是主设备发送多条消息、而没有释放总线时发生的情况。
  • Stop - SDA 为高、SCL 为高时触发。
  • Missing Ack - 从设备通常配置成在每个地址和数据字节后发送确认。在从设备没有生成确认位的情况下示波器可以触发采集。
  • Address - 触发用户指定的地址或任何预先编程的专用地址,包括全呼、开始字节、HS模式、EEPROM或CBUS。地址可以是7 位或10 位地址,以二进制或十六进制输入。
  • 数据 - 触发二进制或十六进制输入的最多12 字节的用户指定数据值
  • 地址和数据 - 可以输入地址数据值及读写,捕获确切的感兴趣的事件这些触发可以隔离您感兴趣的特定总线业务,解码功能则可以即时查看采集中总线上传输的每条消息的内容。
    [1] [2]

    关键字:嵌入式系统  低速串行总线

    编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2011/1227/article_4277.html
    本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
嵌入式系统
低速串行总线

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved