用示波器+逻辑分析仪练习干货(6) SPI解码

用示波器+逻辑分析仪练习干货(6) spi解码
spi是一种高速、全双工、同步的通信总线,只占用芯片管脚上的四条线,节省了芯片的管脚。串行接口广泛应用于主从模式的电路系统中。我根据自己的项目情况分析了spi协议,并对loto虚拟示波器采集的数据波形进行了比较和分析,方便大家理解。
一般来说,spi通信协议只需要四条线来连接主芯片和从芯片,其中四条线是:
(1)sdo–主设备数据输出和从设备数据输入
(2)sdi–主设备数据输入和从设备数据输出
(3)主设备产生的sclk时钟信号
(4)控制系统——从设备的使能信号,由主设备控制
其中cs用于控制芯片是否被选择,也就是说,只有当芯片选择信号是预定义的使能信号(高电位或低电位)时,该芯片的操作才有效。这使得在同一总线上连接多个串行接口设备成为可能。
实际上,通信只需要三条线路。在串行接口是一种串行通信协议下,数据是一点一点地传输的。这就是sclk钟线存在的原因。sclk提供时钟脉冲,sdo基于该脉冲完成数据传输。数据输出通过sdo线在时钟的上升沿或下降沿发生变化,从而完成一位数据传输。输入也使用相同的原则。8位数据(一个字节的数据)的传输可以在时钟信号的至少8次改变之后完成(上沿和下沿各一次)。以下是项目中涉及的16位数据的spi通信协议的时序图。
这是我第一次尝试失败的例子。loto的通用串行总线示波器osca02采集的相应波形如下图所示。
较长的接地线导致该信号的噪声相对较大,但实际上,故障的根本原因是我的示波器只有两个输入通道,所以只能看到主时钟和所有数据之间的对应关系,远远不能解码,每个人都可以直观地感受到背后有彩蛋的实际spi信号。
在基于串行接口的设备中,至少有一个主控制设备。这种传输的特点:与普通串行通信不同,普通串行通信一次至少连续传输8位数据,而spi允许数据逐位传输,甚至暂停传输。当没有时钟跳变时,从设备不收集或传输数据。主设备可以通过控制sclk时钟线来控制通信。由于串行接口的数据输入和输出线是独立的,因此允许同时完成数据输入和输出。不同的spi器件有不同的实现方法,主要是因为数据变化和采集的时间不同,对时钟信号采集的上沿或下沿有不同的定义。
spi接口不需要寻址操作,是全双工通信,简单高效。硬件比i2c系统稍微复杂一些。因为spi没有指定的流控制,所以没有响应机制来确认是否接收到数据。
在它自己的项目中只使用数据输出模式,所以spi可以以串行三线模式通信:一条时钟线sclk,一条输出控制线cs和一条数据输出线sdo
为了与外设交换数据,可以配置spi模块输出串行同步时钟的极性和相位,时钟极性(cpol)对传输协议没有明显影响。如果cpol=0,串行同步时钟的空空闲状态为低电平;如果cpol=1,串行同步时钟的空空闲状态为高电平。时钟相位(cpha)可以配置为选择两种不同的数据传输协议之一。如果cpha=0,则在串行同步时钟的第一个跳变沿(上升或下降)对数据进行采样;如果cpha=1,则在串行同步时钟的第二英雄无敌之穷途末路最新章节个跳变沿(上升或下降)对数据进行采样。串行接口主模块和与之通信的外部设备的时钟相位和极性应该一致。
当主设备配置spi接口时钟时,有必要了解从设备的时钟要求,因为主设备的时钟极性和相位基于从设备。因此,在时钟极性配置中,必须找出从设备是在时钟的上升沿还是下降沿接收数据,还是在时钟的下降沿或上升沿输出数据。
现在,我的示波器已经升级到osca02l,它是示波器和逻辑分析仪的组合,所以这次我有一个充分的机会来测量4线spi并解码它。
在以上基础上,我用usb虚拟示波器+逻辑分析仪拍摄了spi测试和解码过程的视频,比图形和文本更直观,如下图所示:
/video/bv1na4y1e72c
文章来源:www.atolchi修罗武神最新章节na.com