协议及工作原理分析_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SPI协议及工作原理分httpswenkubaducomvewcb1eeeb33b3567ec112d8a6html?rom=searchSP协议及作原理分析SP,SeralPerrpheralnterace,串行设备接口,是Motorola公推出的种同步串行接术SP总线在物理上是通过接在设备微控制器(PCmcro)上面的微处理控制单元(MCU)上叫作同步串行端(SynchronousSeralPort)的模块(Module)来实现的,它允许MCU以全双的同步串行方式,与各种设备行高速数据通SP主要应用在EEPROM,Flash,实时时钟(RTC),数模转换器(ADC),数字信号处理器(DSP)以及数字器之间它在中只占用四根管脚(Pn)用来控制以及数据传输,节约的pn数目,同时为在布局上节省空间正是出于这种简单易用的特性,现在越来越多的上都集成SP技术1采用主从模式(MasterSlaveSP规定两个SP设备之间通信必须由主设备(Master来控制次设备(Slave个Master设备以通过提供Clock以及对Slave设备行片选(SlaveSelect)来控制多个Slave设备SP协议还规定SlaveClock由Master设备通过SCK管脚提供给Slave设备,Slave设备本身不能产生或控制Clock,没有Clock则Slave设备不能 2采用同步方式(Synchronous)Master设备会根据将要交换的数据来产生相应的时钟脉冲(ClockPulse),时钟脉冲组成时钟信号(ClockSgnal),时钟信号通过时钟极性(CPO)和时钟相位(CPHA)控制着两个SP设备间何时以及何时对接收到的数据行采样,来保证数据在两个设备之间是同步传输的3(DataSP设备间的数据传输之所以又被称为,是因为SP协议规定个SP设备不能在数据通信过程中仅仅只充当个"发送者(Transmtter)"或者"接收者(Recever)"在每个Clock周期内,SP设备都会发送并接收个bt大小的数据,相当于该设备有个bt大小的数据被交换个Slave设备要想能够接收到Master发过来的控制信号,必须在之前能够被Master设备行(Access)所以,Master设备必须首先通过SSCSpn对Slave设备行片选,把想要的Slave设备选上在数据传输的过程中,每次接收到的数据必须在下次数据传输之前被采样如果之前接收到的数据没有 ,那么这些经接收完成的数据将有能会被丢弃,导致SP物理模块最终失效因,在程序般都会在SP传输完数据,去SP设备的数据,即使这些数据(DummyData)在我们的程序是无用的三、作机制1上图只是对SP设备间通信的个简单的描述,下面就来解释下图中所示的几个组件SSPBUF,SynchronousSeralPortBuer,泛指SP设备面 缓冲区,般在物理上是以FFO的形式,保存传输过程中的临时数SSPSRSynchronousSeralPortRegster泛指SP设备面的移位寄存器(ShtRegtser)它的作用是根据设置好的数据位宽(btwdth把数据移入或者移出SSPBUFController,泛指SP设备面的控制寄存器,以通过配置它们来设置SP总线的传输模式通情况下,我们只需要对上图所描述的四个管脚(pn)行编程 SP设备之间的数据通SCK,SeralClock,主要的作用是Master设备往Slave设备传输时钟信号,控 ,用于SDMSOSeralDatanputMasternSlaveOut,MasterRxChannel,作为数据的主要用于SPSP设备在行通信的过程中,Master设备和Slave设备之间会产生个数据链路回环(Dataoop就像上图所画的那样通过SDO和SD管脚SSPSR控制数据移入移出SSPBUFController确定SP总线的通信模式,SCK传输时钟信号2Tm上图通过Master设备与Slave设备之间交换1Byte数据来说明SP协议的作机制首先,在这解释CPO时钟极性,表示SP在空闲时,时钟信号是高电平还是低电平若CPO被设为1,那么该设备在空闲时SCK管脚下的时钟信号为高电平当CPO被设为0 好相CPHA时钟相位,表示SP设备是在SCK管脚上的时钟信号变为上升沿时触发数据采样,还是在时钟信号变为下降沿时触发数据采样若CPHA被设置为1,则SP设备在时钟信号变为下降沿时触发数据采样,在上升沿时发送数据当CPHA被设为0时也正好相反CPHA时钟相位,表示SP设备是在SCK管脚上的时钟信号变为上升沿时触发数据采样,还是在时钟信号变为下降沿时触发数据采样若CPHA被设置为1,则SP设备在时钟信号变为下降沿时触发数据采样,在上升沿时发送数据当CPHA被设为0时也正好相反上图的"Mode1,1"说明本例所使用的SP数据传输模式被设置成CPO=1,CPHA=1这样,在个Clock周期内,每个单独的SP设备都能以全双(FullDuplex)的方式,同时发送和接收1bt数据,即相当于交换1bt大小的数据如果SP总线的ChannelWdth被设置成Byte,表示SP总线上每次数据传输的最小单位为Byte,那么挂载在该SP总线的设备每次数据传输的过程少需要8个Clock周期(忽略设备的物理延迟)因,SP总线的频率越快,Clock周期越短,则SP设备间 3SSPSR是SP设备的移位寄存器(ShtRegster)它的主要作用是根据SP时钟信号状态,往SSPBUF移入或者移出数据,每次移动的数据大小由BusWdth以及ChannelWdth所决BusWdth的作用是指定地址总线到Master设备之间数据传输的单位例如,我们想要往Master设备面的SSPBUF写入16Byte大小的数据首先,给Master设备的配置寄存器设置BusWdth为Byte然往Master设备的TxData移位寄存器在地址总线的写入数据,1Byte大小的数据(使用wrteb函数)写完1Byte数据之,Master设备面的TxData移位寄存器会动把从地址总线传来的1Byte数据移入SSPBUF上述动作共需要重复执行16次通情况下,BusWdth总是会大于或等于ChannelWdth,这样能保证不会出现因Master与Slave的频率地址总线与Master频率要快,导致SSPBUFChannelWdth的作用是指定Master设备与Slave设备之间数据传输的单位与BusWdth相似,Master设备的移位寄存器会依通情况下,BusWdth总是会大于或等于ChannelWdth,这样能保证不会出现因Master与Slave的频率地址总线与Master频率要快,导致SSPBUF我们知道,在每个时钟周期内,Master与Slave之间交换的数据其实都是 移位寄存器从SSPBUF面拷贝的我们以通过往SSPBUF对应的寄存器(TxDataRxDataregster)读写数据,间接地操SP设 的例如,在发送数据之前,我们应该先往Master的TxData寄存器写入将要发送出去的数据,这些数据会被MasterSSPSR移位寄存器根据BusWdth动移入MasterSSPBUF,然这些数据又会被MasterSSPSR根据ChannelWdth从MasterSSPBUF中移出,通过MasterSDO管脚传给SlaveSD管脚,SlaveSSPSR则把从SlaveSD接收到的数据移入SlaveSSPBUF与同时,SlaveSSPBUF面的数据根据每次接收数据的大小(ChannelWdth),通过SlaveSDO发往MasterSD,MasterSSPSR把从MasterSD接收的数据移入MasterSSPBUF在单次数据传输完成之,用户程序以通过从Master设备的RxData寄存器Master设备 5Master设备面的C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论