SPI总线测试解决方案 SPI总线简介
扫描二维码
随时随地手机看文章
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。其现已发展成为一种工业标准,目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,EEPROM,FlashROM,A/D(D/A)转换器、LED显示驱动器、I/O接口芯片、实时时钟、UART收发器等等,为用户的外围扩展提供了极其灵活而经济的选择。这也使得对SPI信号的测试分析需求更加广泛。
SPI总线包含四种输出方式(SPI0,SPI1,SPI2,SPI3),SPI0和SPI3方式比较常用。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降沿)数据即被采样;如果CPHA=1,在串行同步时钟的第二个(上升或下降沿)数据才被采样。
图1 SPI信号四种输出方式时序图
SPI总线测试需求
工程师对SPI总线测试和分析的需求主要涵盖以下两个方面:
1.了解总线正在发生什么:软件工程师设计SPI主设备发出的消息内容,硬件工程师则需要确定消息是不是被准确无误的传送到从设备上。传统的方法是使用示波器把信号捕获下来,然后根据高低电平特点转换成“1”或“0”,然后再去对比SPI协议,将其还原成有意义的消息帧。显然这种方式费时费力,在转换的过程中还容易出错。SDS3000X系列智能示波器支持SPI总线解码功能,可以直接对总线传输信号进行触发解码。并以不同的方式动态显示在示波器屏幕上。不同的显示方式可以更好地适应不同的分析需求:比如硬件工程师可能希望以二进制的方式查看SPI消息内容,底层驱动工程师希望以16进制方式分析波形,而应用软件工程师则希望以ASCII码的方式去了解总线上实际运行的数据内容。
2.调试总线上有故障的节点:SPI设备可以实现一个主设备连接多个从设备的需求,通过片选信号(SS/CS)来选择需要操作的从设备。当主设备切换传输对象的时候,我们需要关注总线所发送的信息是否与所选择的从设备一致。有可能出现所发送的信息与当前所选择的从设备并不一致的状况。
SPI总线模拟测试方法
本例中我们使用SDS3000X系列智能示波器以及STB-3信号演示板进行单向SPI总线测试模拟。
图2 实验连接图
单向的SPI总线信号包括一根时钟线SCLK、一根片选信号线CS和一根数据线SDA,可由鼎阳的STB-3板模拟输出,其输出信号速率为1Mbps,数据内容为:(XX为随机字符)96'h53_49_47_4C_45_4E_54_5F_XX_XX_XX_XX。
SPI触发
SPI 总线是为芯片间的数据通信而设计的,因此,在大多数情况下,由于传输数据的不同使得信号并非周期性信号。这就要求在对该总线进行测试时,要能准确地触发到数据帧的“头”,并将其“稳定”显示在仪器上,便于观察和分析。
SDS3000X系列智能示波器支持串行总线触发功能,按下前面板上侧菜单栏区域的“触发–触发设置”唤出触发设置对话框,设定好信号对应的探头(本例设置为CH1:SDA;CH2: SCLK;CH3:CS),就可以直接对SPI信号进行触发。
图3 SPI信号触发功能
在模拟测试前,我们已知STB-3演示板所输出的SPI信号输出方式为SPI3(在实际测试中,SPI从设备的工作模式也会在数据手册里标明,或者在时序图中给出)。因此我们在触发的时候就要进行相应的配置。SDS3000X智能示波器支持在触发和解码时对SPI输出方式进行选择。
图4 SPI触发信号设置
PS:SDS3000X系列智能示波器支持串行总线触发解码功能,支持的协议有IIC、IIS、SPI、UART/RS232、LIN、CAN、CAN-FD、FlexRay、MIL 1553、USB 2.0。
SPI解码
在成功捕获到待测试的SPI总线信号后,接下来我们关注的问题是对SPI总线信号进行解码。
如图5所示,选择“分析-串行解码”选项,进行相应设置,即可获得解码的结果,并可以列表显示出来,便于查看。(解码的结果可以二进制、16进制以及ASCALL码的形式显示)
图5 SPI解码设置
图6 SPI解码结果(十六进制)
解码的结果与输入信号一致。
以上只是简单的使用SDS3000X系列智能示波器对SPI信号进行触发和解码。在实际应用中,SDS3000X系列智能示波器的串行总线触发解码功能可以快速的使我们获得“总线上正在发生什么”;并可根据示波器界面所呈现的解码结果分析总线所传输的的信息是否和我们预想的一致,从而精准快速地发现故障点并进行调试。