SPI协议及工作原理分析.docx

上传人:罗晋 文档编号:11726683 上传时间:2021-09-01 格式:DOCX 页数:17 大小:192.18KB
返回 下载 相关 举报
SPI协议及工作原理分析.docx_第1页
第1页 / 共17页
SPI协议及工作原理分析.docx_第2页
第2页 / 共17页
SPI协议及工作原理分析.docx_第3页
第3页 / 共17页
SPI协议及工作原理分析.docx_第4页
第4页 / 共17页
SPI协议及工作原理分析.docx_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《SPI协议及工作原理分析.docx》由会员分享,可在线阅读,更多相关《SPI协议及工作原理分析.docx(17页珍藏版)》请在三一文库上搜索。

1、SPI协议及工作原理分析SPI协议及工作原理分析SPI,Serial PerripheralInterface,串行外围设备接口,是Motorola公司推出的一种同步串行接口技术.SPI总线在物理上是通过接在外围设备微控制器(PlCmicro)上面的微处理控制单元(MCU) 上叫作同步串行端口 (Synchronous Serial Port)的模块(Module)来实现的,它允许 MCU以全双工的同步串行方式,与各种外围设 备进行高速数据通信.SPI 主要应用在 EEPROM, Flash,实时时钟(RTC),数模转换器(ADC),数字信号 处理器(DSP)以及数字信号解码器之间.它 在芯片

2、中只占用四根管脚(Pin)用来控制以 及数据传输,节约了芯片的pin数目,同时 为PCB在布局上节省了空间.正是出于这种 简单易用的特性,现在越来越多的芯片上都集 成了 SP工技术.特点1 .采用主-从模式(Master-Slave)的控制方式SPI规定了两个SPI设备之间通信必须由主设备(Master)来控制次设备(Slave). 一个Master设备可以通过提供Clock以及对 Slave设备进行片选 (Slave Select)来控制多个Slave设备, SPI协议还规定Slave设备的Clock由Master设备通过SCK管脚提供给Slave设备,Slave设备本身不能产生或控制Clo

3、ck,没有Clock贝!| Slave设备不能正 常工作.2 .采用同步方式(Synchronous)传输数据Master设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse),时钟 脉冲组成了时钟信号(Clock Signal),时钟 信号通过时钟极性(CPOL)和时钟相位(CPHA)控制着两个SPI设备间何时数据交换以及何时对接收到的数据进行采样,来保证 数据在两个设备之间是同步传输的.3 . 数据交换(Data Exchanges)SPI设备间的数据传输之所以又被称 为数据交换,是因为SPI协议规定一个SPI 设备不能在数据通信过程中仅仅只充当一个 发送者(Transmi

4、tter)或者 ”接收者 (Receiver) H .在每个 Clock 周期内,SPI 设备都会发送并接收一个bit大小的数据, 相当于该设备有一个bit大小的数据被交换 了.一个Slave设备要想能够接收到Master发过来的控制信号,必须在此之前能够被Master设备进行访问(Access).所 以,Master设备必须首先通过SS/CS pin 对Slave设备进行片选,把想要访问的Slave设备选上.在数据传输的过程中,每次接收到 的数据必须在下一次数据传输之前被采样.如 果之前接收到的数据没有被读取,那么这些已 经接收完成的数据将有可能会被丢弃,导致 SPI物理模块最终失效.因此,

5、在程序中一 般都会在SPI传输完数据后,去读取SPI 设备里的数据,即使这些数据(Dummy Data) 在我们的程序里是无用的.三、工作机制1.概述SPI Data Transfer上图只是对SPI设备间通信的一个简 单的描述,下面就来解释一下图中所示的几个 组件(Module):SSPBUF, Synchronous SerialPort Buffer,泛指SPI设备里面的内部缓 冲区,一般在物理上是以FIFO的形式,保 存传输过程中的临时数据;SSPSR, Synchronous Serial Port Register,泛指SPI设备里面的移位 寄存器(Shift Regitser),

6、它的作用是根据 设置好的数据位宽(bit-width)把数据移入或者移出SSPBUF;Controller,泛指SPI设备里面 的控制寄存器,可以通过配置它们来设置SPI 总线的传输模式.通常情况下,我们只需要对上图所描述的四个管脚(pin)进行编程即可控制整个SPI设备之间的数据通信:SCK, Serial Clock,主要的作用 是Master设备往Slave设备传输时钟信 号,控制数据交换的时机以及速率;SS/CS, Slave Select/Chip Select, 用于 Master 设备片选 Slave 设备,使被选中的Slave设备能够被 Master设备所访问;SDO/MOSI

7、, Serial DataOutput/Master Out Slave In, 在Master 上面也被称为 Tx-Channel, 作为数据的出口,主要用于SPI设备发送数据;SDI/MISO, Serial Data Input/Mas ter In Slave Out, 在 Master 上面也被称为Rx-Channel,作为数据的入 口,主要用于SP1设备接收数据;SPI设备在进行通信的过程中,Master设备和Slave设备之间会产生一个数据链路回环(Data Loop) z就像上图所画的那样,通过SDO和SDI管脚,SSPSR控制 数据移入移出SSPBUF, Controller

8、确定 SP工总线的通信模式,SCK传输时钟信号.-WWWIIIIIIIIIIIIIIII-1 I.一II I I上1Example of SPI Mode 1, 1Note that the data only changes on the falling edge of SC K and is only read on raising edge of SCK.上图通过Master设备与Slave 设备之间交换1 Byte数据来说明SPI协议 的工作机制.首先,在这里解释一下两个概念:CPOL:时钟极性,表示SPI在空闲时,时钟信号是高电平还是低电平.若CPOL被设为1,那么该设备在空闲时SC

9、K 管脚下的时钟信号为高电平.当CPOL被设 为0时则正好相反.CPHA:时钟相位,表示SPI设备是在SCK管脚上的时钟信号变为上升沿时触发数据采样,还是在时钟信号变为下降沿时触 发数据采样.若CPHA被设置为1,则SPI 设备在时钟信号变为下降沿时触发数据采样, 在上升沿时发送数据.当CPHA被设为0时 也正好相反.上图里的Mode 1, 1”说明了本 例所使用的SPI数据传输模式被设置成 CPOL = 1, CPHA = 1 . 这样,在一个 Clock 周期内,每个单独的SPI设备都能以全双工 (Full-Duplex)的方式,同时发送和接收 1 bit数据,即相当于交换了 1 bit大

10、小的 数据. 如果 SPI ,总线的 Channel-Width被设置成Byte,表示SPI总线上每次数据 传输的最小单位为Byte,那么挂载在该SPI 总线的设备每次数据传输的过程至少需要8个Clock周期(忽略设备的物理延迟).因此,SPI总线的频率越快,ClockE3期越短,则SPI设备间数据交换的速率就越快.3. SSPSR.SSPSR是SPI设备内部的移位寄存器(Shift Register).它的主要作用是根据SPI时钟信号状态,往SSPBUF里移入 或者移出数据,每次移动的数据大小由Bus-Width 以及 Channel - Width 所决定.Bus-Width的作用是指定地

11、址总线到Master设备之间数据传输的单位.例如,我们想要往Master设备 里面的SSPBUF写入16 Byte大小的数据: 首先,给Master设备的配置寄存器设置Bus-Width 为 Byte; 然后往 Master 设 备的Tx-Data移位寄存器在地址总线的入口 写入数据,每次写入1 Byte大小的数据(使 用writeb函数);写完1 Byte数据之后, Master设备里面的Tx-Data移位寄存器会 自动把从地址总线传来的1 Byte数据移入 SSPBUF里;上述动作一共需要重复执行16 次.Channel-Width 的作用是指定 Master设备与Slave设备之间数据传

12、输的 单位. 与 Bus-Width 相似, Master 设 备内部的移位寄存器会依据Channel-Width 自动地把数据从Master-SSPBUF里通过 Master-SDO管脚搬运到Slave设备里的 Slave-SDI 弓|脚,Slave SSPSR 再把每次 接收的数据移入Slave-SSPBUF里.通常情况下,Bus-Width总是会大 于或等于Channel-Width,这样能保证不会 出现因Master与Slave之间数据交换的 频率比地址总线与Master之间的数据交换频率要快,导致SSPBUF里面存放的数据为 无效数据这样的情况.4. SSPBUF.我们知道,在每个时

13、钟周期内,Master与Slave之间交换的数据其实都是SPI内部移位寄存器从SSPBUF里面拷贝的.我们可以通过往SSPBUF对应的寄存器(Tx-Data / Rx-Data register)里读写数据,间接地操控SPI设备内部的SSPBUF.例如,在发送数据之前,我们应 该先往Master的Tx-Data寄存器写入将 要发送出去的数据,这些数据会被 Master-SSPSR 移位寄存器根据Bus-Width 自动移入 Master-SSPBUF 里, 然后这些数据又会被Master-SSPSR根据 Channel-Width 从 Master-SSPBUF 中移Master-SDO管脚传

14、给Slave-SDI 管脚, Slave-SSPSR 贝!| 把 从 Slave-SDI接收到的数据移入Slave-SSPBUF 里. 与此同时, Slave-SSPBUF里面的数据根据每次接收数 据 的大小 (Channel-Width), 通 过 Slave-SDO 发 往 Master-SDI, Master-SSPSR 再把从 Master-SDI 接收 的数据移入Master-SSPBUF.在单次数据传 输完成之后,用户程序可以通过从Master 设备的Rx-Data寄存器读取Master设备 数据交换得到的数据.5. Controller.Master 设备里面的Controller 主要通过时钟信号(ClockSignal)以及片选信号(Slave SelectSignal)来控制 Slave 设备.Slave 设备 会一直等待,直到接收到Master设备发过 来的片选信号,然后根据时钟信号来工作.Master设备的片选操作必须由程序所实现.例如:由程序把SS/CS管脚的时钟信号拉低电平,完成SPI设备数据通信 的前期工作;当程序想让SPI设备结束数据 通信时,再把SS/CS管脚上的时钟信号拉高 电平.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1