新闻中心

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

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

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


  工作方式

  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个字节时触发。



评论


相关推荐

技术专区

关闭