- 硬件接口
SPI接口共有4根信号线,分别是:片选线、时钟线、串行输出数据线、串行输入数据线,SPI总线模型是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其主要是在sck的控制下,两个双向移位寄存器进行数据交换。
MOSI(masterout slave input)简称MO:主器件数据输出,从器件数据输入
MISO(masterinput slave output)简称MI:主器件数据输入,从器件数据输出
SCLK简称CLK:CLK时钟信号,由主器件产生
SS:从器件使能片选信号,由主器件控制
2)SPI CLK
由于信号有高低之分和相位之分,所以SPI有四种工作模式
CPOL:SPI空闲时的时钟信号电平(1:高电平, 0:低电平)
CPHA:SPI在时钟第几个边沿采样(1:第二个边沿开始, 0:第一个边沿开始)
MODE0和MODE3最常用。
- MOSI
如字面意思,master output slave input,就是主机向从机发送指令的过程,通常来说,这个发送的信号由sensor的主控发送来获取sensor中的数据。
4) MISO
这里就是主控数据采集的过程了。从机向主机发送获取到的数据,由主机去处理数据的过程。
5) SS也称CS
Cs如字面意思,片选信号,通常来说我们一款平台不止支持一路的spi,OEM芯片设计方可以设计多路SPI接口来供vendor厂商选择,芯片要去知道哪款sensor该工作,就取决于CS这个片选信号。
三、SPI时序图
在对SPI有了一个基础的硬件接口认知之后,接下来,我们看下SPI的时序图,学习了SPI的时序图有助于我们对这几个信号之间的协同工作更进一步的了解。
这是一幅比较干净便于理解的SPI的时序通信图,首先还是解释下一些关键性的位置。
1) 时序图采取的是SPI模式0的方式,即CPOL空闲电平为低电平也即高电平有效,CPHA第一个边沿信号进行数据采集。
2) SS 片选信号,拉低有效。
3) 数据采集。上升沿发送、下降沿接收、高位先发送。上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。
4) MSB数据高位先发送。
接下来我们着重分析下,SPI双工通信如何进行的。
如图:
1.首先CS拉低
2.CLK开始工作。
3.第一个高电平的上升沿数据开始进行采集。
4.MO/MI的数据发出。
5.MI/MO采集数据。
6.重复3~5
由此完成了一个周期内的数据交换,这里的难点在哪里呢,这里核心的难点在于,一定要关注到,MO和MI的同时工作,这里并非是一个周期内只有一条线进行数据采集,而是两根线同时都在进行半周期数据的发送和半周期的数据采集的动作。MO采集的是MI发的sensor的数据,MI接收的是来自MO发送的数据控制指令,通常来说是这种工作机制。