欢迎来到天天文库
浏览记录
ID:40549547
大小:341.31 KB
页数:6页
时间:2019-08-04
《SPI数据发送与接收机制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SPI数据发送与接收机制1SPI简介SPI是一个环形总线结构,以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线(单向传输时,3根线也可以),由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换,允许MCU以全双工的同步串行方式。只规定了每一帧数据如何传输,并未对帧结构的组成做介绍。2SPI特点2.1采用主-从模式的控制方式两个SPI设备之间通信必须由主设备来控制次设备。一个主设备可以通过提供Clock以及对从设备进行片选(SlaveSelect/ss)来控制多个从设备,SPI协议还
2、规定从设备的Clock由Master设备通过SCK管脚提供给从设备,从设备本身不能产生或控制Clock,没有Clock则从设备不能正常工作。2.2采用同步方式传输数据Master设备会根据将要交换的数据来产生相应的时钟脉冲(ClockPulse),时钟脉冲组成了时钟信号(ClockSignal),时钟信号通过时钟极性(CPOL)和时钟相位(CPHA)控制着两个SPI设备间何时数据交换以及何时对接收到的数据进行采样,来保证数据在两个设备之间是同步传输的。2.3数据交换(DataExchanges)SPI设备间的数据传输之所以又被称为数据交换,是因为SPI协议规定一个SPI
3、设备不能在数据通信过程中仅仅只充当一个"发送者(Transmitter)"或者"接收者(Receiver)"。在每个Clock周期内,SPI设备都会发送并接收一个bit大小的数据,相当于该设备有一个bit大小的数据被交换了。一个从设备要想能够接收到Master发过来的控制信号,必须在此之前能够被Master设备进行访问(Access)。所以,Master设备必须首先通过SS/CSpin对从设备进行片选,把想要访问的从设备选上。在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样。如果之前接收到的数据没有被读取,那么这些已经接收完成的数据将有可能会被丢弃,导
4、致SPI物理模块最终失效。因此,在程序中一般都会在SPI传输完数据后,去读取SPI设备里的数据,即使这些数据(DummyData)在我们的程序里是无用的。3SPI数据发送与接收机制3.1概述SSPBUF(SynchronousSerialPortBuffer),泛指SPI设备里面的内部缓冲区,一般在物理上是以FIFO的形式,保存传输过程中的临时数据;SSPSR(SynchronousSerialPortRegister),泛指SPI设备里面的移位寄存器(ShiftRegitser),它的作用是根据设置好的数据位宽(bit-width)把数据移入或者移出SSPBUF;Co
5、ntroller,泛指SPI设备里面的控制寄存器,可以通过配置它们来设置SPI总线的传输模式。通常情况下,我们只需要对上图所描述的四个管脚(pin)进行编程即可控制整个SPI设备之间的数据通信:SCK,SerialClock,主要的作用是Master设备往从设备传输时钟信号,控制数据交换的时机以及速率;SS/CS,SlaveSelect/ChipSelect,用于Master设备片选从设备,使被选中的从设备能够被Master设备所访问;SDO/MOSI,SerialDataOutput/MasterOutSlaveIn,在Master上面也被称为Tx-Channel,作
6、为数据的出口,主要用于SPI设备发送数据;SDI/MISO,SerialDataInput/MasterInSlaveOut,在Master上面也被称为Rx-Channel,作为数据的入口,主要用于SPI设备接收数据;SPI设备在进行通信的过程中,Master设备和从设备之间会产生一个数据链路回环(DataLoop),就像上图所画的那样,通过SDO和SDI管脚,SSPSR控制数据移入移出SSPBUF,Controller确定SPI总线的通信模式,SCK传输时钟信号。3.2TimingCPOL:时钟极性,表示SPI在空闲时,时钟信号是高电平还是低电平。若CPOL被设为1,
7、那么该设备在空闲时SCK管脚下的时钟信号为高电平。当CPOL被设为0时则正好相反。CPHA:时钟相位,表示SPI设备是在SCK管脚上的时钟信号变为上升沿时触发数据采样,还是在时钟信号变为下降沿时触发数据采样。若CPHA被设置为1,则SPI设备在时钟信号变为下降沿时触发数据采样,在上升沿时发送数据。当CPHA被设为0时也正好相反。上图使用的SPI数据传输模式被设置成CPOL=1,CPHA=1。3.3SSPSRSSPSR是SPI设备内部的移位寄存器(ShiftRegister)。它的主要作用是根据SPI时钟信号状态,往SSPBUF里移入或者移
此文档下载收益归作者所有