SPI数据发送与接收机制
1 SPI简介
SPI是一个环形总线结构,以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线(单向传输时,3根线也可以),由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换,允许MCU以全双工的同步串行方式。只规定了每一帧数据如何传输,并未对帧结构的组成做介绍。
2 SPI特点
2.1采用主-从模式的控制方式
两个SPI设备之间通信必须由主设备来控制次设备。一个主设备可以通过提供Clock以及对从设备进行片选(SlaveSelect/ss)来控制多个从设备,SPI协议还规定从设备的ClockMaster设备通过SCK管脚提供给从设备,从设备本身不能产生或控制Clock,没有Clock则从设备不能正常工作。
2.2 采用同步方式传输数据
Master设备会根据将要交换的数据来产生相应的时钟脉冲(ClockPulse),时钟脉冲组成了时钟信号(Clock Signal),时钟信号通过时钟极性(CPOL)和时钟相位(CPHA)控制着两个SPI设备间何时数据交换以及何时对接收到的数据进行采样,来保证数据在两个设备之间是同步传输的。
SPI设备间的数据传输之所以又被称为数据交换,是因为SPI协议规定一个SPI设备不能在数据通信过程中仅仅只充当一"发送者(Transmitter)或"接收者(Receiver)"。在每个Clock周期内,SPI设备都会发送并接收一个bit大小的数据,相当于该设备有一个bit大小的数据被交换了。一个从设备要想能够接收到Master发过来的控制信号,必须在此之前能够被Master设备进行访问Access)。所以,Master设备必须首先通过SS/CSpin对从设备进行片选,把想要访问的从设备选上。 在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样。