嵌入式硬件通信接口协议:SPI(一)协议基础

掘芯
关注

对比不难发现,时序图的规范,定义了各个信号线输出电平的顺序和时延,还定义了时钟信号跳变沿与数据信号的“对齐”,这里的“对齐”实际上就是数据的输出和采样。

同样的,这个时序规范了SPI器件所呈现的SPI接口信号线特性,包括:时钟上升、下降沿时长;片选与时钟跳变沿之间的时延;时钟边缘与数据线保持的时长…

这些时序特性,都在明确了SPI主机与其通信时,要求不超出其定义的范围,否则从机器件响应不及时而导致通信异常。

不同的器件,对SPI接口的信号时序要求也会不同。第一张简明的时序图,而基于这样的时序图,SPI接口又可以配置不同的接口配置参数。

接口配置项

一般在开发时,接口的可选配置有:接口模式(实际配置的是单、双工模式选择)、设备主从模式、数据宽度、时钟极性(CPOL:)、时钟相位(CPHA)、时钟速率、数据bit位大小端选择。

接口模式

标准的四线SPI接口,使用的场景是主从机进行数据交互的通信,两方都有数据的收发过程,而在LCD/OLED这样的SPI接口作为从设备的器件中,就不需要数据返回给主机,只需要接收来自主机的控制信息和显示的数据。

基于这样的使用场景,就可以配置成三线的单工通信,即仅需要从机选择SS、时钟SCLK、数据输出MOSI即可。

设备主从模式

这个配置一般需要看芯片是否支持,可将芯片配置成SPI主机或者从机,能更好地集成在项目的系统中。

数据宽度

顾名思义,就是发送数据可以配置成8bit、16bit等,这也是根据芯片而定。

时钟极性、时钟相位

这两者分别是CPOL(Clock Polarity)CPHA(Clock Phase),极性就是指高低电平,这个定义了SPI总线在空闲状态下,时钟保持高电平还是低电平,因为这个关系到了SPI通信时第一个时钟跳变沿是上升还是下降沿;相位指的是时钟的跳变沿,指定了数据信号的输出和采样如何与时钟对齐。

这两个配置,在Wiki和百度百科上都做了非常清晰的解释,这里截图引用如下:

时钟速率

速率选择定义了时钟信号线在数据传输是的翻转速率,这体现到每个芯片定义的接口时序图中,即可承受的速率范围,如果主机设的速率太快,而从机响应过慢会导致通信失败。

数据bit位大小端选择

数据的发送优先bit可配置,从上篇的UART协议可以知道,UART规定了数据优先发bit0,而这个SPI是可配置优先发送bit的,可设置最低位或者最高位。

从FLASH型号为GD25Q32和OLED型号为QG-2832TLBFG04的时序截图可看到,这两个器件都是优先发MSB,也就是最高位优先。

再对比一款字库芯片型号为GT21L16S2W的读取指令:

可见SPI器件普遍采用MSB的发送优先顺序。

总结SPI通信接口,一主多从的通信架构,标准模式有四根信号线、依靠选择信号SS开始通信、时钟信号SCLK进行逐bit输出和采样、可配置的采样时刻和可选择的优先发出bit。

参考资料:

《SPI》@百度百科

《SPI》@Wiki

★★★★★推荐文章

《嵌入式硬件通信接口-使用RingBuffer处理数据(二)详细设计过程》

《嵌入式硬件通信接口-使用RingBuffer处理数据(一)》

《快速开发MQTT(一)电子工程师眼中的MQTT》

《快速开发MQTT(二)初识MQTT》

《MQTT客户端搭建-最清晰的MQTT协议架构》

《MQTT服务端搭建-最快方式验证自己开发的客户端》

★★★★★相似文章

《嵌入式硬件通信接口协议-UART(五)数据包设计与解析》

《嵌入式硬件通信接口协议-UART(四)设计起止式的应用层协议》

《嵌入式硬件通信接口协议-UART(三)快速使用串口及应用》

《嵌入式硬件通信接口协议-UART(二)不同电气规范下的标准》

《嵌入式硬件通信接口协议-UART(一)协议基础》

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存