新闻中心

EEPW首页>嵌入式系统>设计应用> 调试嵌入式系统设计中的低速串行总线

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

作者: 时间:2012-06-02 来源:网络 收藏


  工作方式

  I2C的物理两线接口由双向串行时钟(SCL)和数据(SDA)线组成。I2C支持总线上多个主从设备,但一次只能激活一个主设备。任何I2C设备可以连接到总线上,允许任何主设备与从设备交换信息。每台设备都使用唯一的地址识别,可以作为发射机或接收机操作,具体取决于设备功能。在开始时,I2C只使用7位地址,但随着时间推移,它演变成也支持10位地址。它支持三种位速率:100 kbps (标准模式), 400 kbps (快速模式)和3.4 Mbps (高速模式)。最大设备数量取决于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字节的用户指定数据值
  – 地址和数据 – 可以输入地址数据值及读写,捕获确切的感兴趣的事件

  这些触发可以隔离您感兴趣的特定总线业务,解码功能则可以即时查看采集中总线上传输的每条消息的内容。

  SPI

  背景知识

  串行外设接口总线(SPI)最初是摩托罗拉在20世纪80年代末为其68000系列微控制器研制的。由于该总线简单、流行,许多其它制造商也已经采用这一标准。它现在用于设计常用的各种器件中。SPI主要用于微控制器和直接外设之间。它通常用于蜂窝手机移动电话、PDA和其它移动设备中,在CPU、键盘、显示器和内存芯片之间通信。



评论


相关推荐

技术专区

关闭