实际应用中只需要三根线来进行通信。在SPI是串行通讯协议下,数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线在时钟上升沿或下降沿时改变,完成一位数据传输。输入也使用同样原理。在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据(一个字节数据)的传输。下面是项目中所涉及的SPI通信协议的时序图为16位数据。
这是我初次尝试失败了的例子,使用LOTO的USB示波器OSCA02采集到的对应波形如下图所示。
地线过长导致这个信号的噪声比较大,但其实失败的根本原因是,我的示波器只有两个输入通道,所以只能看主要的 时钟和一路数据的对应关系,远远做不到解码,大家可以直观的感受下实际的SPI信号的样子,后面有彩蛋。
在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停。当没有时钟跳变时,从设备不采集或传送数据。主设备通过对SCLK时钟线的控制可以完成对通讯的控制。因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式有所不同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义。
SPI接口不需要进行寻址操作,且为全双工通信,简单高效。硬件上比I2C系统要稍微复杂一些。由于SPI没有指定的流控制,没有应答机制确认是否接收到数据。
在自己的项目中只用到数据输出模式,因此SPI可串行3线方式进行通信:一条时钟线SCLK,一条输出控制线CS,一条数据输出线SDO;
SPI 模块为了和外设进行数据交换,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致
主设备配置SPI接口时钟的时要弄清楚从设备的时钟要求,因为主设备的时钟极性和相位都是以从设备为基准的。因此在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿还是下降沿接收数据,是在时钟的下降沿还是上升沿输出数据。
现在,我的示波器升级成了OSCA02L,是示波器加逻辑分析仪一体的了,所以这次完全有机会做到测4线SPI和解码,
上一篇:示波器应用:小探头有讲究
下一篇:Loto实践干货(5)单片机的上电复位故障用示波器检测
推荐阅读最新更新时间:2024-11-12 14:34
- L78L05C正压稳压器Edit boost电路的典型应用
- LTC1261LIS8-4.5 5V 输入、-4V 输出 GaAs FET 偏置发生器的典型应用电路
- 使用STWLC68的基于Qi的无线功率接收器,适用于最高5W的低功率标准(BPP)应用
- Mini51 无传感器 BLDC 电机驱动器、高性能、高集成度、低成本的无传感器电机驱动解决方案参考设计
- DC1962C-KIT,使用 LTC3880 双输出多相降压 DC-DC 控制器和数字电源系统管理的演示板
- 【立创开发板】基于立创梁山派的游戏机扩展板
- EV1HMC349AMS8G,HMC349AMS8G 100 MHz 至 4 GHz SPDT 开关评估板
- 【立创开发板】明哥游戏机
- NCP3063SMDBCKEVB,表面贴装降压稳压器评估板
- DER-822 - 60 W USB PD 3.0,采用 3.3 V-21 V PPS 电源,使用 InnoSwitch3-Pro PowiGaN 和 MinE-CAP