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

掘芯
关注

本节继续讲嵌入式硬件通信接口协议中的另外一个串行通信接口-SPI。相比于UART串口协议,SPI又有着其独特之处。

简介

SPI(全称SerialPeripheral Interface),串行外设接口。

SPI是串行外设接口(SerialPeripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,比如AT91RM9200。

--from 百度百科

该接口由摩托罗拉在20世纪80年代中期开发,并已成为事实标准。

--from Wiki

从维基百科查阅的的“事实标准”,在这来科普一下知识盲点:

事实标准是指非由标准化组织制定的,而是由处于技术领先地位的企业、企业集团制定(有的还需行业联盟组织认可,如DVD标准需经DVD论坛认可),由市场实际接纳的技术标准。

--from 百度百科

SPI接口定义了一主多从这样的一个通信架构,在同一SPI总线上只有一个主机,可以有多个从机。这样的架构就限制了通信的主动权只能在主机端,主机发起一次通信,从机做出想要。

信号线

SPI被称为四线串行总线,其信号线分别有:

SCLK:串行时钟(主机输出)

MOSI:主输出从机输入或主机输出从机输入(主机输出的数据)

MISO:主输入从输出或主输入从输出(从输出的数据输出)

SS:从机选择(通常为低电平有效,主机输出)

信号线命名也是五花八门,以下的命名也是会遇见的:

串口时钟

SCLK:SCK

主输出--->从输入(MOSI):

SIMO,MTSR - 对应主设备和从设备上的MOSI,相互连接

SDI,DI,DIN,SI - 在从设备上; 连接到主设备上的MOSI,或连接到下面的连接

SDO,DO,DOUT,SO - 在主设备上; 连接到从站上的MOSI,或连接到上面的连接

主输入<---从输出(MISO):

SOMI,MRST - 对应主设备和从设备上的MISO,相互连接

SDO,DO,DOUT,SO - 在从设备上; 连接到主设备上的MISO,或连接到下面的连接

SDI,DI,DIN,SI - 主设备; 连接到奴隶上的MISO或上面的连接

从机选择:

SS:SSEL,CS,CE,nSS,/ SS,SS#

以上容易让人混淆的名字是SDO、SDI、DOUT、DIN等,这些都需要看具体印在主设备还是从设备上单独讨论。但是一般的还是尽量写清写规范,这样不容易产生歧义。

SPI作为同步串行接口,可以认为有两个同步信号,第一个是从机选择SS信号,告知被选中的从机,准备开始进行SPI通信,第二个是同步时钟信号SCLK,收发双方进行数据的交互时,都是基于SCLK的跳变进行逐bit输出和采样的

四根信号线并非全部都需要,根据工作模式,可以配置成两线、三线。

在STM32CubeMX工具的配置页面,可以很清楚看到,配置不同的工作模式时,对应被使能的芯片管脚有何不同:

对比发现,全双工的四线和三线的区别是从机选择信号NSS。这种情况一般是因为SPI总线上只有一主一从的通信架构,从机的NSS信号一直接低电平,不需要做从机选择。

信号时序

四线SPI接口的时序一般的总是先拉低从机选择信号线SS,然后输出SCLK,带着数据MOSI,此时MISO为高阻态。大致如下如:

一般有SPI接口的器件,在Spec上都会有对应的时序图,这里分别截取SPI接口FLASH型号为GD25Q32C、SPI接口OLED型号为QG-2832TLBFG04,这两器件的Spec内关于SPI时序部分的介绍,如下两张截图:

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

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

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