调试嵌入式系统设计中的低速串行总线
– 数据 – 触发二进制或十六进制输入的最多12字节的用户指定数据值
– 地址和数据 – 可以输入地址数据值及读写,捕获确切的感兴趣的事件
这些触发可以隔离您感兴趣的特定总线业务,解码功能则可以即时查看采集中总线上传输的每条消息的内容。
SPI
背景知识
串行外设接口总线(SPI)最初是摩托罗拉在20世纪80年代末为其68000系列微控制器研制的。由于该总线简单、流行,许多其它制造商也已经采用这一标准。它现在用于嵌入式系统设计常用的各种器件中。SPI主要用于微控制器和直接外设之间。它通常用于蜂窝手机移动电话、PDA和其它移动设备中,在CPU、键盘、显示器和内存芯片之间通信。
工作方式
SPI (串行外设接口)总线是一种主/从结构的4线串行通信总线。4个信号是时钟(SCLK), 主输出/从输入(MOSI), 主输入/从输出(MISO)和从选择(SS)。在两台设备通信时,一台设备称为“主设备”,另一台设备称为“从设备”。主设备驱动串行时钟。它同时收发数据,因此是一种全双工协议。SPI使用SS线路指明与哪台设备传送数据,而不是总线上的每台设备都有一个唯一的地址。这样,总线上的每台唯一的设备都需要从主设备提供自己的SS信号。如果有3台从设备,那么主设备有3条SS引线,每条引线都连接到每台从设备上,如图8所示。
在图8中,每台从设备只与主设备通话。但是,SPI可以串联多台从设备,每台从设备依次进行操作,然后把结果发回主设备,如图9所示。因此您可以看到,SPI实现方案没有“标准”。在某些情况下,在不要求从设备向回到主设备通信时,MISO信号可以完全省略。
在SPI数据传送发生时,8位数据字移出MOSI,不同的8位数据字移入MISO。这可以视为16位循环位移寄存器。在传送发生时,这个16位位移寄存器位移8个位置,从而在主设备和从设备之间交换8位数据。一对寄存器 - 时钟极性(CPOL)和时钟相位(CPHA)决定着驱动数据的时钟边沿。每个寄存器有两种可能的状态,支持四种可能的组合,所有这些组合互不兼容。因此,主/从设备对必须使用相同的参数值进行通信。如果使用多个固定在不同配置的从设备,那么每次需要与不同的从设备通信时,主设备必须重新进行配置。
处理SPI
DPO4EMBD串行触发和分析应用模块还可以为SPI总线实现类似的功能。我们可以再次使用前面板B1或B2按钮,简单地输入总线基本参数,包括SCLK, SS, MOSI和MISO位于哪条通道上、门限和极性,来定义一条SPI总线 (参见图10)。
例如,考虑一下图11中的嵌入式系统。一条SPI总线连接到一个合成器、一个DAC及某个I/O上。合成器连接到VCO上,VCO为其余系统提供一个2.5 GHz时钟。假设在启动时,由CPU应该对合成器编程。但是不知道哪里出了问题,在VCO固定在轨道上生成在产生3 GHz的信号时,发生了某个问题。调试这个问题的第一步是考察CPU和合成器之间的信号,确定存在信号,没有物理连接问题,但我们找不到发生了什么问题。然后,我们决定看一下SPI总线上传送的合成器编程使用的实际信息。为捕获这些信息,我们把示波器设成在合成器Slave Select信号激活时触发采集,并对DUT通电,捕获启动编程命令。采集结果如图12所示。
通道1 (黄色)是SCLK,通道2 (青色)是MOSI,通道3 (洋红色)是SS。为确定我们是否对设备正确编程,我们看一下合成器的产品资料。总线上的前三个消息假设是初始化合成器、加载分路器比率、锁存数据。根据技术数据,前三个传送中最后半个字节(一个十六进制字符)应该分别是3, 0和1,但我们看到的是0, 0和0。在消息末尾全是0时,我们认识到,我们在SPI中犯了一个最常见的错误,即在软件中以相反的顺序在每个24位字中对各个位编程。在迅速改变软件配置后,得到下面的采集,VCO正确锁定在2.5 GHz,如图13所示。
在上面的实例中,我们使用简单的SS Active触发。DPO4000系列中完整的SPI触发功能包括下述类型:
– SS Active – 在从设备选择行对从设备变真时触发。
– MOSI – 在从主设备到从设备用户指定最多16个字节时触发。
– MISO – 在从设备到主设备用户指定最多16个字节时触发。
– MOSI/MISO – 在主设备到从设备及从设备到主设备用户指定最多16个字节时触发。
这些触发也可以隔离感兴趣的特定总线业务,解码功能则可以立即查看采集中总线传送的每条消息的内容。
CAN
背景知识
CAN (控制器区域网)总线是博世公司在20世纪80年代专门研制的一种分层串行数据通信协议,以在电气噪声环境中作为设备之间的通信总线。1992年,梅塞德兹-奔驰率先在其汽车系统中采用CAN。今天,几乎每个汽车制
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
- WinCE下光电编码器的驱动程序设计(04-12)
- 为什么嵌入式开发人员要使用FPGA(05-13)
- VxWorks几种常用的延时方法介绍(05-16)