嵌入式系统.pdf
《嵌入式系统.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统.pdf(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、调试嵌入式系统设计中的串行总线调试嵌入式系统设计中的串行总线应用指南应用指南2 自动柜员机 移动电话 计算机打印机 防抱死刹车控制器 微波炉 导弹使用的惯性引导系统 DVD播放机 个人数字助理(PDA)工业自动化和监测使用的可编程逻辑控制器(PLC)便携式音乐播放机 可能还包括烤面包机嵌入式系统可能包含许多不同类型的设备,包括微处理器、微控制器、DSP、RAM、EPROM、FPGA、模数转换器、数模转换器和I/O。这些设备在传统上一直使用宽并行总线相互通信及与外部世界通信。然而今天,嵌入式系统设计中使用的越来越多的构件将用串行总线代替宽并行总线,原因如下:减少了要布线的信号数量,降低了要求的电
2、路板空间 降低了成本 降低了功率要求 减少了封装上的针脚数量 嵌入式时钟 差分信令,改善抗噪声能力 采用标准串行接口的器件大量供应尽管串行总线提供了大量的优势,但它们也给嵌入式系统设计人员带来了某些重大挑战,因为它以串行方式传送信息,而不是以并行方式传送信息。本应用指南讨论了嵌入式系统设计人员的常用挑战,及怎样使用下述系列示波器中的功能迎接这些挑战:DSA/DPO70000D、MSO/DPO70000C、DPO7000C、MSO/DPO5000、MSO4000、MSO/DPO4000B、MSO/DPO3000和MSO/DPO2000 系列。图1.逻辑分析仪采集的微控制器的时钟、地址总线、数据总
3、线和控制线。调试嵌入式系统设计中的串行总线 3并行结构与串行结构比较在并行结构中,总线的每个组件都有自己的信号路径。可能有16条地址线、16条数据线、一条时钟线和各种其它控制信号。通过总线发送的地址或数据值会通过所有并行线路同时传送。因此,使用大多数示波器和逻辑分析仪中的状态触发或码型触发功能触发关心的事件相对简便。同时,可以简便地一目了然地了解在示波器或逻辑分析仪显示屏上捕获的数据。例如,在图1中,我们使用逻辑分析仪从微控制器中采集时钟线、地址线、数据线和控制线。通过使用状态触发,我们隔离了我们查找的总线。为“解码”总线上发生的情况,我们需要查看每条地址线、数据线和控制线的逻辑状态。在串行总
4、线中,所有这些信息都必须以串行方式在相同的少数导线(有时是一条)上发送。这意味着一个信号可能包括地址信息、控制信息、数据信息和时钟信息。例如,看一下图 2 中所示的控制器区域网(CAN)串行信号。这条消息包含帧头、标识符(地址)、数据长度代码、数据、CRC 和帧尾及少量其它控制位。时钟嵌入在数据中,使用填充位保证接收设备拥有数量充足的边沿锁定时钟,这使情况变得进一步复杂化。即使是经过训练的眼睛,也很难迅速了解这一消息的内容。现在想象一下这是一条有问题的消息,一天只发生一次,您需要触发采集这条消息。传统示波器和逻辑分析仪不能有效处理这类信号。图3.从I2C总线中采集的一条消息。图 2.从 CAN
5、总线中采集的一条消息。即使是比较简单的串行标准,如I2C,与并行协议相比,观察总线上传输的内容仍要明显困难得多。I2C采用分开的时钟线和数据线,因此至少在本例中,您可以使用时钟作为参考点。但是,您仍需要找到消息开头(数据变低,时钟为高),手动检查和记下每个时钟上升沿上的数据值,然后把各个位整理成消息结构。在长采集中解码一条消息就会需要几分钟时间,而您不知道这是不是实际要找的消息。如果不是,您需要在下一条消息上重新开始这一麻烦的、容易出错的过程。最好只触发查找的消息内容,但多年来示波器的逻辑分析仪上使用的状态触发和码型触发并不能发挥作用。它们是为了考察多条通道中同时发生的问题设计的。为处理串行总
6、线,其触发引擎深度必需有几千种状态(每个 bit位一个状态)。即使存在这种触发功能,但为所有这些bit位逐个状态编程也不是件好玩的事。必须找到一种更好的方式!现在有一种更好的方式。下面几节重点介绍了怎样使用泰克示波器1,测试嵌入式系统设计中使用的最常用的低速串行标准。注 1 支持的串行总线标准视示波器型号变化。如需了解不同泰克示波器支持的总线,请参阅附录 A或访问 。应用指南4 或 10位 1位 1位 8位 1位 8位 1 位 1 位 8位 1位开始 地址 R/W 确认 数据0 确认0 数据 1 确认1 .数据 N 确认N 结束I2C背景知识I2C或“I squared C”是指集成电路间总线
7、。它最初是飞利浦公司在20世纪80年代研制的,为把控制器连接到电视机上的外设芯片提供了一种低成本方式,但之后其已经发展成为嵌入式系统设备之间通信的一项全球标准。它采用简单的两线设计,广泛用于领先芯片制造商生产的各种芯片中,如I/O、模数转换器、数模转换器、温度传感器、微控制器和微处理器,芯片制造商则包括:Analog Devices,Atmel,Infineon,Cyprus,英特尔,Maxim,飞利浦,Silicon Laboratories,ST Microelectronics,德州仪器,Xicor等等。工作方式I2C的物理两线接口由双向串行时钟(SCL)和数据(SDA)线组成。I2C支
8、持总线上多个主从设备,但一次只能激活一个主设备。任何I2C设备可以连接到总线上,允许任何主设备与从设备交换信息。每台设备都使用唯一的地址识别,它可以作为发射机或接收机操作,具体取决于设备功能。在开始时,I2C只使用7位地址,但随着时间推移,它演变成也支持10位地址。它支持三种位速率:100 kb/s(标准模式)、400 kb/s(快速模式)和3.4 Mb/s(高速模式)。最大设备数量取决于 400 pf的最大容量,或大约支持20-30台设备。I2C标准规定了下述格式,如图4 所示:Start表明设备控制总线,一条消息将开始传送 Address7位或10位数字,表示将要读取或写入的设备地址 R/
9、W Bit1位,表明是否将从设备中读取数据或向设备写入数据 Ack1位,来自从设备,确认主设备的操作。通常每个地址和数据字节有一个确认位,但不总是有确认位 Data 从设备中读取或写入设备的字节的整数 Stop表明消息结束,主设备已经释放总线有两种方式对I2C分组、以进行解码:7位+读或写(R/W)位方案,8 位(1字节)、其中作为地址的一部分包括R/W位。7位地址方案是固件和软件设计工程师遵守的指定方案。但是,许多其它工程师使用8位地址方案。泰克示波器可以在任一方案中解码数据。调试嵌入式系统设计中的串行总线 5处理I2C通过 DPOxEMBD 串行触发和分析应用模块或 SR-EMBD应用软件
10、,泰克示波器为处理I2C总线的嵌入式系统设计人员提供了强大的工具。前面板有多个Bus按钮,允许用户把到示波器的输入定义为一条总线。I2C总线的设置菜单如图 5 所示。通过简单地定义时钟和数据位于哪条通道上及用来确定逻辑1和0的门限,示波器可以理解通过总线传输的协议。有了这些知识,示波器可以触发任何指定的消息级信息,然后把得到的采集数据解码成有意义的、容易理解的结果。边沿触发已经过了好多天了,希望您已经采集到关心的事件,然后逐条消息手动解码消息,同时查找问题。例如,考虑一下图6 中的嵌入式系统。I2C总线连接到多台设备上,包括CPU、EEPROM、风扇速度控制器、数模转换器和大量的温度传感器。这
11、部仪器被退回工程部分析故障,该产品持续过热,自动关机。要检查的第一件事是风扇控制器和风扇本身,但似乎一切正常。然后要检查温度传感器是否有问题。风扇速度控制器定期轮询两个温度传感器(位于仪器中不同的区域),调节风扇速度,稳定内部温度。我们怀疑其中一个或两个温度传感器读数不正确。为查看传感器与风扇速度控制器之间的交互。我们只需连接到I2C时钟和数据线,设置总线。我们知道,两个传感器在I2C总线上的地址分别是18和19,因此我们决定设置触发事件,查找地址18上的写入操作(风扇速度控制器轮询图5.I2C总线设置菜单。总线定义输入 门限显示为总线总线解码十六进制图6.I2C总线实例。温度传感器#1温度传
12、感器#2SCLK(时钟)SDA(数据)风扇速度控制器传感器的当前温度)。触发的采集结果如图7中的屏幕图所示。图7.I2C地址和数据总线波形解码。应用指南6 用垂直绿条表示。在显示另一个开始、而没有上一个Stop 时,会发生重复开始。地址用黄框显示,W表示写入,R表示读取。地址值可以用十六进制显示,也可以用二进制显示。数据用青框显示。数据值可以用十六进制显示,也可以用二进制显示。Missing Acks用红框内的感叹号表示。Stops 用红色竖条表示。表1.总线条件。际部件,我们发现其中一条地址线焊接不当。温度传感器不能在总线上通信,结果导致设备过热。由于示波器的I2C触发和总线解码功能,我们只
13、需几分钟时钟,就成功地隔离了这个潜在的难检问题。在图7所示的实例中,我们触发了写入操作,但示波器强大的 I2C 触发还包括许多其它功能。Start 在SDA变低、SCL为高时触发。Repeated Start 在没有上一个停止条件下发生开始条件时触发。这通常是主设备发送多条消息、而没有释放总线时发生的情况。Stop SDA为高、SCL 为高时触发。Missing Ack从设备通常配置成在每个地址和数据字节后发送确认。在从设备没有生成确认位的情况下示波器可以触发采集。Address触发用户指定的地址或任何预先编程的专用地址,包括全呼、开始字节、HS模式、EEPROM或 CBUS。地址可以是 7
14、位或10位地址,以二进制或十六进制输入。数据触发二进制或十六进制输入的最多12字节的用户指定数据值 地址和数据-可以输入地址数据值及读写,捕获确切的关心的事件这些触发可以隔离您关心的特定总线业务,解码功能则可以即时查看采集中总线上传输的每条消息的内容。调试嵌入式系统设计中的串行总线 7SPI背景知识串行外设接口总线(SPI)最初是摩托罗拉在20世纪80年代末为其 68000 系列微控制器研制的。由于该总线简单、流行,许多其它制造商也已经采用这一标准。它现在用于嵌入式系统设计常用的各种器件中。SPI主要用于微控制器和直接外设之间。它通常用于移动电话、PDA和其它移动设备中,在CPU、键盘、显示器
15、和内存芯片之间通信。工作方式SPI总线是一种主/从结构的4线串行通信总线。4个信号是时钟(SCLK),主输出/从输入(MOSI),主输入/从输出(MISO)和从选择(SS)。在两台设备通信时,一台设备称为“主设备”,另一台设备称为“从设备”。主设备驱动串行时钟。它同时收发数据,因此是一种全双工协议。SPI使用 SS 线路指明与哪台设备传送数据,而不是总线上的每台设备都有一个唯一的地址。这样,总线上的每台唯一的设备都需要从主设备提供自己的SS信号。如果有3台从设备,那么主设备有3条SS引线,每条引线都连接到每台从设备上,如图8 所示。在图8 中,每台从设备只与主设备通话。但是,SPI 可以串联多
16、台从设备,每台从设备依次进行操作,然后把结果发回主设备,如图9 所示。因此您可以看到,SPI实现方案没有“标准”。在某些情况下,在不要求从设备向回到主设备通信时,MISO信号可以完全省略。在其它情况下,只有一台主设备和一台从设备,SS信号捆到接地上,这通常称为 2 线 SPI。在SPI数据传送发生时,8位数据字移出MOSI,不同的8位数据字移入MISO。这可以视为16位循环位移寄存器。在传送发生时,这个16位位移寄存器位移8个位置,从而在主设备和从设备之间交换8位数据。一对寄存器-时钟极性(CPOL)和时钟相位(CPHA)决定着驱动数据的时钟边沿。每个寄存器有两种可能的状态,支持四种可能的组合
17、,所有这些组合互不兼容。因此,主/从设备对必须使用相同的参数值进行通信。如果使用多个固定在不同配置的从设备,那么每次需要与不同的从设备通信时,主设备必须重新进行配置。图9.串联SPI 配置。图8.常用的SPI配置。应用指南8 SPIDPOxEMBD串行触发和分析应用模块或SR-EMBD应用软件可以解码和触发SPI总线。我们可以再次使用前面板的 Bus 按钮,简单地输入总线基本参数,包括SCLK,SS,MOSI和MISO位于哪条通道上、门限和极性,来定义一条SPI 总线(参见图 10)。例如,考虑一下图 11中的嵌入式系统。一条SPI总线连接到一个合成器、一个DAC及某个I/O上。合成器连接到V
18、CO上,VCO为其余系统提供一个2.5 GHz时钟。在启动时,CPU应该对合成器编程。但是不知道哪里出了问题,VCO在产生3 GHz的信号。调试这个问题的第一步是考察CPU和合成器之间的信号,确定存在信号,没有物理连接问题,但我们找不到发生了什么问题。然后,我们决定看一下SPI总线上传送的合成器编程使用的实际信息。为捕获这些信息,我们把示波器设成在合成器 Slave Select 信号激活时触发采集,并对DUT通电,捕获启动编程命令。采集结果如图 12所示。通道1(黄色)是SCLK,通道2(青色)是MOSI,通道3(洋红色)是SS。为确定我们是否对设备正确编程,我们看一下合成器的产品资料。总线
19、上的前三个消息假设是初始化合成器、加载分路器比率、锁存数据。根据技术数据,前三个传送中最后半个字节(一个十六进制字符)应该分别是 3,0和 1,但我们看到的是 0,0和 0。图11.通过SPI 控制的合成器。8 位 CPU(主设备)合成器图12.采集SPI 总线之外的合成器配置消息。调试嵌入式系统设计中的串行总线 9在消息末尾全是0时,我们认识到,我们在SPI中犯了一个最常见的错误,即在软件中以相反的顺序在每个24 位字中对各个位编程。在迅速改变软件配置后,得到下面的采集,VCO正确锁定在2.5 GHz,如图13所示。图 13.正确的合成器配置消息。在上面的实例中,我们使用简单的SS Acti
20、ve触发。泰克示波器完整的SPI 触发功能包括下述类型:SS Active 在从设备选择行对从设备变真时触发。MOSI-在从主设备到从设备用户指定最多 16 个字节时触发。MISO在从设备到主设备用户指定最多16个字节时触发。MOSI/MISO 在主设备到从设备及从设备到主设备用户指定最多 16个字节时触发。这些触发也可以隔离关心的特定总线业务,解码功能则可以立即查看采集中总线传送的每条消息的内容。应用指南10 USB 2.01.5 Mbps667 ns全速 USB 2.012 Mbps83.3 ns高速 USB 2.0480 Mbps2.8 nsSuperSpeed USB 3.05 Gbp
21、s200 ps表2.USB 速度。USB背景通用串行总线(USB)已经成为当前个人电脑上的主要接口,代替了以前使用的许多外部串行总线和并行总线。自其1995年问世以来,USB的用途已经不再局限于最初的个人电脑,而是成为许多电子设备中广泛使用的接口。2000年发布的USB 2.0规范涵盖了目前使用的大多数USB设备。USB 2.0代替了USB 1.1规范,在 USB 1.1规范的低速接口和全速接口中增加了一个高速接口(参见表 2)。USB 已经不再局限于系统间通信。例如,芯片间USB(IC_USB)和高速芯片间(HSIC)USB已经用于芯片到芯片通信。IC_USB、HSIC 和其它增强技术完善了
22、 USB2.0 规范。2008年,USB 3.0规范发布。USB 3.0称为SuperSpeedUSB,其速度比高速USB 2.0快了10倍。SuperSpeedUSB 可以向下兼容 USB 2.0 设备。USB 3.0 是一种附加规范,与 USB 2.0 规范一起使用,而不是代替USB2.0。SuperSpeed USB设备必须实现USB 2.0设备框架命令和描述符。USB实现者论坛(USB-IF)负责管理和推广USB标准和USB技术。USB规范可以参阅USB-IF网站:www.usb.org。工作方式USB配置采用一个主控制器带1-127台设备。USB采用分级星形拓扑,选配多个集线器,扩展
23、了总线(图14)。主机是唯一的主设备,控制着所有总线业务。主机发起到各个设备的所有通信,各个设备不能中断主机。表 2 显示了 4 种 USB 速度。高速设备先以全速开始操作,然后转换到高速。USB 2.0总线的速度受到与主控制器相连的速度最低的设备限制。SuperSpeed USB 使用两个主控制器:一个用于SuperSpeed USB 设备,一个用于 USB 2.0 设备。与USB 2.0系统一样,包括USB 2.0设备的总线速度受到最低速度的限制。图14.USB分层星形拓扑采用集线器,扩展了总线。主控制器集线器集线器集线器设备设备设备设备设备设备设备设备设备设备调试嵌入式系统设计中的串行总
24、线 11图15.USB端点是设备的数据源和数据接收端,拥有到应用软件的逻辑管道。主控制器源端管道接收端管道设备地址0-127端点0数据源端点0数据接收端端点15数据源端点15数据接收端图16.USB 4线电缆在上行端口采用“A”连接器,在下行端口采用“B”连接器。主控制器A 连接器上行端口USB电缆下行端口B 连接器设备设备端点设备端点是设备中的数据源和接收端。每台设备最多可以有16个数据端点(图 15)。端点0 是必须的,主机使用它与设备通信。管道是主机中的应用软件与设备端点之间的逻辑连接。枚举枚举是开机或设备热插拔时发生的配置过程。主机检测到USB总线上存在设备,然后主机借助SETUP令牌
25、轮询设备,令牌使用地址0和端点0。然后,主机为设备分配一个唯一的地址,范围为1-127。此外,主机还识别设备速度和数据传送类型。在枚举过程中,会确定设备的种类。设备种类定义设备的功能,如打印机、海量存储器、视频、音频、人机接口、等等。电气配置主机使用上行“A”连接器,设备使用下行“B”连接器。每个连接器有三个版本:标准型,迷你型,微型。USB 2.0电缆有四条线,如图16所示。两条线用来从主机供电:5 V电源(红线)和接地(黑线)。这些连接器的设计是先连接电源引脚和接地引脚,然后再连接数据数据引脚。主机提供 100 mA-500 mA的电流,并拥有智能电源管理功能。例如,可以由主机或集线器监测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统
限制150内