第9章 串行外设接口(SPI)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
周鹏 安徽工程大学电气工程学院
(2)从动方式:将Slave的数据传送给Master,8位数据传送完毕,申请中断 当MASTER/SLAVE=0,工作于从动工作方式下。SPI系统通信的时钟 是由主机来决定的,即从机通过SPICLK引脚来接受主机提供的串行移位时 钟。从机SPICLK引脚的输入频率应不大于LSPCLK/4。 数据从SPISOMI引脚输出,并在SPISIMO引脚输入。如图9-3所示,当 从机接收到来自于主机的SPICLK信号合适的边沿时,就可以启动数据的发 送和接收。当数据写入SPIDAT或者SPITXBUF后,SPIDAT就开始将数据的 最高位移出,同时左移剩下的数据,然后将接收到的数据移入SPIDAT的最 低位。如果向SPITXBUF寄存器写入数据时没有数据正在发送,则数据将被 立即传送到SPIDAT寄存器中。为了接收数据,SPI将等待网络主控制器发送 SPICLK信号,然后再将SPISIMO引脚上的数据移入到SPIDAT寄存器中。 如果从控制器同时也发送数据,则必须在SPICLK信号开始之前将数据写入 SPITXBUF或者SPIDAT寄存器中。
周鹏 安徽工程大学电气工程学院
9.2.2 SPI的主动/从动工作方式
典型的SPI主/从工作方式的连接图如图9-3所示,系统中 有两个处理器,处理器1的SPI工作于主机方式,处理器2的 SPI工作于从机方式。SPI工作方式的选择由寄存器SPICTL 的MASTER/SLAVE位(SPICTL.2)来决定。
周鹏 安徽工程大学电气工程学院
(1)无相位延迟的上升沿:SPICLK低电平有效。SPI在 SPICLK信号的上升沿发送数据,在SPICLK信号的下 降沿接收数据。 (2)有相位延迟的上升沿:SPICLK低电平有效。SPI在 SPICLK信号的下降沿之前的半个周期发送数据,而在 SPICLK信号的上升沿接收数据。 (3)无相位延时的下降沿:SPICLK高电平有效。SPI在 SPICLK信号的下降沿发送数据,在SPICLK信号的上 升沿接收数据。 (4)有相位延时的下降沿:SPICLK高电平有效。SPI在 SPICLK信号的下降沿之前的半个周期发送数据,在 SPICLK信号的下降沿接收数据。
周鹏 安徽工程大学电气工程学院
SPI(Serial Peripheral Interface)串行外围设备接口, 是 Freescale (原 Motorola )公司首先在其 MC68HCxx 系列处 理器上定义的,它是一种同步的高速串行通信协议。SPI有主 从两种工作方式,它可以使单片机与外围模块之间以串行方 式进行通信以及交换信息。比如 EEPROM , Flash ,实时时 钟,显示驱动器, AD/DA 转换等。 SPI 总线是一种高速、全 双工、同步的串行外设接口通信总线,并且在芯片的引脚上 占用的接口线少(三线或四线, TMS320F2812 中 SPI 接口采 用四线制),节约了芯片的引脚,同时为 PCB的布局上节省 空间,另外SPI通信效率高,同时它有标准的传输协议,而且 速度快,能够同时收发,越来越多的处理器芯片集成了这种 通信协议,因而得到了广泛地应用。
周鹏 安徽工程大学电气工程学院
9.1.1 SPI的结构与特点
周鹏 安徽工程大学电气工程学院
串行 外设 接口模块的特性 • 4个外部引脚,以下引脚都可用作数字I/O引脚。
– SPISIMO-SPI从输入/主输出 – SPISOMI-SPI主输入/从输出 – SPICLK -SPI时钟
– SPISTE-SPI从发送使能
第9章 串行外设接口(SPI)
9.1 增强型SPI模块概述 9.1.1 SPI的结构与特点 9.1.2 SPI的功能框图与信号 9.1.3 SPI的寄存器概述 9.2 SPI的操作 9.2.1 操作方式介绍 9.2.2 SPI的主动/从动工作方式 9.2.3 SPI的中断 9.2.4 SPI的数据格式 9.2.5 SPI的波特率设置与时钟配置 9.2.6 SPI的复位与初始化 9.2.7 SPI的FIFO概述 9.3 SPI的主要寄存器 9.4 SPI应用程序举例

在标准SPI模式(非FIFO模式)下,发送中断和接收中 断都使用SPIINT/RXINT。在FIFO模式中,接收中断使 用SPIINT/RXINT,而发送中断使用的是SPITXINT。
周鹏 安徽工程大学电气工程学院
9.1.2 SPI的功能框图与信号
SPI的接口信号由外部引脚信号、时钟(控制)信号和 中断信号组成,3种接口信号与功能描述如表9-1所示。
周鹏 安徽工程大学电气工程学院
9.2.5 SPI的波特率设置与时钟配置
SPI模块支持125种不同的波特率和4种不同的时钟模式。 SPI最大波特率为LSPCLK频率的四分之一。

SPI波特率的确定
SPI波特率取决于SYSCLK和SPIBRR的值。
(1)对于SPIBRR=3~127
SPI波特率=LSPCLK/(SPIBRR+1) SPIBRR=LSPCLK/SPI波特率-1
Hale Waihona Puke Baidu
周鹏 安徽工程大学电气工程学院
(1)主动方式:将Master的数据传送给Slave,8位数据传送完毕,申请中断 当MASTER/SLAVE=1,工作于主动方式下。SPI通过SPICLK引脚为 整个通信网络提供串行时钟,主机所设定的波特率同样也决定了整个网络中 发送和接收数据的传输速率。通过配置SPIBRR寄存器可以选择125种不同的 可编程波特率。 数据从SPISIMO引脚输出,并在SPISOMI引脚锁存输入。如图9-3所示, 当数据写到移位寄存器SPIDAT或者写到串行发送缓冲器SPITXBUF的时候, 就会启动SPISIMO引脚开始发送数据,首先发送的是SPIDAT的最高位,接 着将剩余的数据左移1位,然后将接收到得数据通过SPISOMI引脚移入 SPIDAT的最低有效位。如此重复,当SPIDAT中所要发送的数据都发送出 去之后,SPIDAT中接收到得数据被写到SPI的接收缓冲器SPIRXBUF中,等 待CPU读取。因此为了保证首先发送的是最高位,则发送缓冲器SPITXBUF 中的数据是左对齐的,而由于每次接收到得数据始终是写在最低位,所以 SPIRXBUF中的数据是右对齐存储的。SPIRXBUF、SPITXBUF和SPIDAT 这三个数据寄存器都是16位的。
周鹏 安徽工程大学电气工程学院
• 数据的发送方式有三种:
(1)主控制器发送数据,从控制器发送伪数据; (2)主控制器发送数据,从控制器发送数据; (3)主控制器发送伪数据,从控制器发送数据。
• 主控制器控制SPICLK信号,通过发出SPICLK 信号启动数据发送,从控制器则通过检测。 SPICLK信号接收数据。 • 一个主控制器可以连接多个从控制器,但是一 次只允许一个从控制器给主控制器发送数据。
周鹏 安徽工程大学电气工程学院
9.2.7 SPI的FIFO概述
TMS320F2812 DSP芯片的SPI模块中有2个深度为16级、宽度 为16的发送/接收数据FIFO,一个用于发送数据(TXFIFO),一 个用于接收数据(RXFFIO)。本节简单介绍SPI的FIFO的基本内 容,详细信息用户可参考TI官网网站的相关芯片手册,这里不再详 述。
周鹏 安徽工程大学电气工程学院
9.1 增强型SPI模块概述
F2812芯片包括一个四引脚增强型的串行外 设接口(SPI)模块。SPI是一个高速同步串行I/O 端口,此端口可在设定的位传输速率上将一个设定 长度(1至16位)的串行比特流移入和移出器件。 通常,SPI用于DSP与外设或者DSP与另一个处理 器之间的通信。典型应用包括外部I/O或者使用移 位寄存器、显示驱动器、和ADC等器件的外设扩展。 多种设备的通信受到SPI的主从模式支持。同时 F2812 DSP的SPI支持16级的接收和发送FIFO,以 减少CPU的服务开销。
周鹏 安徽工程大学电气工程学院
9.1.3 SPI的寄存器概述
SPI的操作主要通过对其内部的寄存器配置和控制来实 现。SPI的寄存器如表9-2所示。
周鹏 安徽工程大学电气工程学院
9.2 SPI的操作
本节将介绍SPI的操作,其中包括SPI的操作 方式、中断、数据格式、波特率与时钟配置以及复 位与初始化等内容。
周鹏 安徽工程大学电气工程学院
9.2.1 操作方式介绍
典型的SPI主/从工作方式的连接图如图9-3所示,系统中 有两个处理器,处理器1的SPI工作于主机方式,处理器2的 SPI工作于从机方式。SPI工作方式的选择由寄存器SPICTL 的MASTER/SLAVE位(SPICTL.2)来决定。
周鹏 安徽工程大学电气工程学院
(2) 对于SPIBRR=0~2
SPI波特率=LSPCLK/4
周鹏 安徽工程大学电气工程学院

SPI时钟模式 SPI时钟配置是指SPI在时钟脉冲的什么时刻发送或者接收数据。 时钟极性位CLOCK POLARITY(SPICCR.6)和时钟相位位CLOCK PHASE(SPICTL.3)控制着引脚SPICLK上的4种不同的时钟方式,每 一种时钟方式都会对数据传输带来影响。CLOCK POLARITY位决定时 钟的极性是上升沿还是下降沿;而CLOCK PHASE位决定时钟的相位, 即选择时钟的半周期延时。SPI时钟配置方式选择如表9-3所示。
周鹏 安徽工程大学电气工程学院
为了改变SPI在系统复位后的默认配置,应进行如下操作: (1)设置SPI SW RESET位(SPICCR.7)的值为0,强制SPI复 位; (2)初始化SPI的配置、格式、波特率和引脚功能为期望值; (3)设置SPI SW RESET位为1,从复位状态释放SPI; (4)向SPIDAT或SPITXBUF写数据; (5)数据发送完成后(SPISTS.6=1),读取SPIRXBUF以确定接 收的数据。 为了防止在初始化改变器件或之后出现不需要和不可预 见的情况,应在初始化改变之前写0清除SPI SW RESET位 (SPICCR.7),然后在初始化完成后设置该位。值得用户注 意的是不要在通信过程中去改变SPI的配置。
• •
主动/从动两种工作方式 125种可编程的波特率


1~16个数据位同时接收和发送操作
发送和接收操作可通过中断或查询方法完成
周鹏 安徽工程大学电气工程学院

4种时钟方案(由时钟极性和时钟相位控制)
– – – – 无延时的下降沿 有延时的下降沿 无延时的上升沿 有延时的上升沿

增强型特性
– 2个16级发送/接收数据FIFO,一个用于发送数据,一个用于接 收数据。 – 延时发送控制。发送数据时,数据与数据之间的延时可以通过 编程进行控制。
周鹏 安徽工程大学电气工程学院
9.2.6 SPI的复位与初始化
当系统复位时迫使SPI接口进入下列默认的配置: (1)该单元被配置成从动工作方式(MASTER/SLAVE=0); (2)禁止发送功能(TALK位=0); (3)在SPICLK信号的下降沿输入数据被锁存; (4)字符长度设定为1位; (5)禁止SPI中断; (6)SPIDAT寄存器中的数据被复位为0000h; (7)SPI模块的4个引脚功能被配置成通用的输入输出(GPIO) 功能(在GPIO功能选择控制寄存器GPFMUX中完成配置)。
周鹏 安徽工程大学电气工程学院
9.2.3 SPI的中断
有5个控制位用于初始化串行外设接口的中断:
– – – – SPI中断使能位:SPI INT ENA (SPICTL.0); SPI中断标志位:SPI INT FLAG(SPISTS.6); SPI溢出中断使能位:OVERRUN INT ENA(SPICTL.4); SPI接收器溢出中断标志位:RECEIVER OVERRUN FLAG(SPISTS.7); – SPI中断优先级选择位:SPI PRIORITY(SPIPRI.6)。
在SPI中断使能的情况下,当数据被移入或移出 SPIDAT寄存器后,中断标志位被置位,并产生中断。
周鹏 安徽工程大学电气工程学院
9.2.4 SPI的数据格式



SPI通信时,要发送的数据从SPIDAT寄存器的MSB依次移出,接收的 数据则从SPIDAT的LSB依次移入。������ SPI数据字符位数(1-16位)由SPICCR.3-0指定。������ 当写入SPIDAT或SPITXBUF时,数据必须是左对齐的。 数据从SPIRXBUF读回时是右对齐的。
相关文档
最新文档