第10章_SPI接口及其应用
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统在上电复位时,SPI工作在标准SPI模式,禁止FIFO功能。 FIFO的寄存器SPIFFTX ,SPIFFRX,SPIFFCT不起作用。通 过将SPIFFTX寄存器中的SPIFFEN的位置为1,使能FIFO模式。 SPIRST能在操作的任一阶段复位FIFO模式。 FIFO模式有两个中断,一个用于发送FIFO,SPITXINT,另一 个用于接收FIFO,SPIINT/SPIRXINT。对于标准SPI FIFO接收, 产生接收错误或者接收FIFO溢出都会产生SPIINT/SPIRXINT 中断。 对于标准SPI的接收和发送来说,唯一的SPIINT将被禁止且这 个中断将服务于SPI接收FIFO中断。
第十章
SPI接口及其应用
C28x处理器提供的串行外设接口(SPI)是一个高速
同步的串行输入输出口。
SPI的通信速率和通信数据长度都是可编程的。 SPI通常用于DSP处理器和外部外设以及其它处理
器之间进行通信。
主要应用于:显示驱动器、ADC以及日历时钟等器
件间接口,也可以采用主从模式实现多处理器间的 通信。 F2812处理器的SPl接口有一个16级的接收和传输 FIFO,这样可以减少CPU的开销。
该8位寄存器可以定义最小0个串行时钟周期的延迟和最大
256个时钟周期延迟的SPI模块能在最大延迟模式下发送数
该可编程延时的特点,使得SPI接口可以与许多速率较慢
的SPI外设如EEPROM、ADC、DAC等方便地直接连接。
(8)FIFO状态位:发送和接收FIFO都有状态位TXFFST或
当TALK位(SPICTL.1)清零,数据发送被禁止,输出引脚
(SPISOMl)处于高阻状态。如果在发送数据期间将TALK 位(SPICTL.1)清零,即使SPISOMl引脚被强制置成高阻 状态,也要完成当前的字符传输,这样可以保证SPI设备 能够正确的接收数据。
这个TALK位允许在网络上有多个从SPI设备,但在某一
数据同步传输和接受 SPI主设备提供时钟
SPI 器件 #1 - Master 移位 SPI 移位寄存器 时钟
SPI 器件 #2 - Slave 移位
SPI 移位寄存器
4个外部引脚: SPISOMI:SPI从输出/主输入引脚; SPISIMO:SPI从输入/主输出引脚; SPISTE:SPI从发送使能引脚; SPICLK:SPI串行时钟引脚。 2种工作模式:主工作模式、从工作模式 波特率:125种不同的可编程速率 数据字长:可编程1~16个数据长度 4种时钟模式(由时钟极性和时钟相位控制) ◦ 无相位延迟的下降沿:SPICLK高有效,SPI在SPICLK下降沿发送 数据,上升沿接受数据。 ◦ 有相位延迟的下降沿:SPICLK高有效,SPI在SPICLK的下降沿之 前半个周期发送数据,下降沿接受数据。 ◦ 无相位延迟的上升沿:SPICLK低有效,SPI在SPICLK的上升沿发 送数据,下降沿接受数据 ◦ 带有相位延迟的上升沿:SPICLK低有效,SPI在SPICLK的下降沿 之前半个周期发送数据,下降沿接受数据。
15-8 reserved
7
6
5-4 reserved
3
2
1
0
SPI CHAR.3-0 字长控制位 字符长度=number+1 e.g. 0000b ⇒ length = 1 1111b ⇒ length = 16 CLOCK POLARITY 0 = 上升沿输出/下降沿输入 1 = 下降沿输入/上升沿输出 SPI SW RESET:在改变配置前清除此位 在重新操作开始前设置此位 0 = SPI 复位 1 = 正常操作
发送和接收都能产生CPU中断。一旦发送FIFO状态位
TXFFST(位12~8)和中断触发级别位TXFFIL(位4~0)匹配, 就会触发中断。这给SPI的发送和接收提供了一个可编程 的中断触发器。接收FIFO的触发级别位的默认值是 0x11111,发送FIFO的触发级别位的默认值是0x00000。
TALK 0 = 禁止发送, 引脚输出高阻状态 1 = 使能发送
15-8 reserved
7
6
5
4-0 reserved
TX BUF FULL (只读) • 当写 字节到SPITXBUF时,该位置1 • 当字节移位到 SPIDAT 时,该位清零 SPI INT FLAG (只读) • 传输完成后置1 • 如果 SPI INT ENA位 (SPICTL.0) 置位,使能中断 • 读 SPIBRXUF清除该位 RECEIVE OVERRUN FLAG (read/clear only) • 在SPIRXBUF被读取之前下一次接受完成,则置1 • 如果 OVERRUN INT ENA 被设置 (SPICTL.4)则中断请求 • 写 1置 0
当指定数量的数据位已经通过SPIDAT位移位后,则会发生
下列事件:
SPIDAT中的内容发送到SPlRXBUF寄存器中; SPI INT FLAG位(SPISTS.6)置1; 如果在发送缓冲器SPIRTXBUF中还有有效的数据(SPISTS 寄存器中的TXBUF FULL位标志是否存在有效数据),则这 个数据将被传送到SPIDAT寄存器并被发送出去。否则所有 位从SPIDAT寄存器移出后,SPICLC时钟立即停止; 如果SPI INT ENA位(SPICTL.0)置1,则产生中断。 信号,在主SPI设备同从SPI设备之间传送信息的过程中, SPISET置成低电平;当数据传送完毕后,该引脚置高。
工作在主模式下(MASTE/SLAVE=1),SPI在SPICLK引脚 为整个串行通信网络提供时钟。数据从SPISIMO引脚输出, 并锁存SPISOMI引脚上输入的数据。 SPIBRR寄存器确定通信网络的数据传输的速率,通过 SPIBRR寄存器可以配置126种不同的数据传输率。 写数据到SPIDAT或SPITXBUF寄存器,启动SPISOMI引脚 上的数据发送,首先发送的是最高有效位(MSB)。同时,接 收的数据通过SPISOMI引脚移入SPIDAT的最低有效位。当 传输完特定的位数后,接收到的数据被发送到SPIRXBUF寄 存器,以备CPU读取。数据存放在SPIRXBUF寄存器中,采 用右对齐的方式存储。
发送和接收缓冲器使用2个16*16
FIFO,标准SPI功能的 一个字的发送缓冲器作为在发送FIFO和移位寄存器间的 一个发送缓冲器。移位寄存器的最后一位被移出后,发送 缓冲器将从发送FIFO装载。
延时的发送:
FIFO 中的发送字发送到发送移位寄存器的 速率是可编程的。SPIFFCT寄存器位 FFTXDLY7~FFTXDLY0定义了在两个字发送间的延时。 这个延时以SPI串行时钟周期的数量来定义。 256个串行时钟周期的延时。0时钟周期延时的SPI模块能 将FIFO字一位紧接一位地移位,连续发送数据。 据,每个FIFO字的移位间隔256个SPI时钟周期的延时。
RXFFST(位12—0),状态位定义任何时刻在FIFO中可获 得的字的数量。当发送FIFO复位位TXFIFO和接收复位 位RXFIFO被设置为1时,将使FIFO指针指向0。一旦这 两个复位位被清除为0,则FIFO将重新开始操作。
地址 0x007040 0x007041 0x007042 0x007044 0x007046 0x007047 0x007048 0x007049 0x00704A 0x00704B 0x00704C 0x00704F
SPIDAT - Processor #1
11001001XXXXXXXX
接受数据小于16位时必须右 对齐 用户程序屏蔽无效的高字节
SPIDAT - Processor #2
XXXXXXXX11001001
•
SPI接口有主和从两种操作模式,MASTER/SLAVE位(SPICTL.2)选 择操作模式以及SPICLK信号的来源。 SPISIMO 串行输入缓冲 SPIRXBUF SPIRXBUF.15-0 MSB SPIDAT.15-0 移位寄存器 SPITXBUF.15-0 串行发送缓冲 SPITX FIFO LSPCLK baud rate clock polarity clock phase SPICLK LSB
SPI 模块特点
接收和发送可同时操作(可以通过软件屏蔽发送功能)。 通过中断或查询方式实现发送和接收操作。 9个SPI模块控制寄存器。 增强特点: 延时发送控制 16级发送/接受FIFO
SPI主设备负责产生系统时钟,并决定整个SPI网络的通
信速率。
所有的SPI设备都采用相同的接口方式,可以通过调整处
在采用SPI实现数据通信的过程中,多个SPI器件互联的系
统中的一个设备必须设置成Master模式,其他设置为Slave 模式。 主设备驱动总线上的时钟信号为其他从设备提供通信时钟。
SPI设备的通信链接如下图所示,可以有以下几种工作模式:
Sub title
• Master发送数据,S个Slave发送数据; • Master发送伪数据,其中一个Slave发送数据;
OVERRUN INT ENABLE
0 = 禁止接受溢出中断(SPISTS.7) 1 = 使能接受溢出中断(SPISTS.7)
MASTER/SLAVE 0=从 1=主
SPI INT ENABLE 0 = disabled 1 = enabled
1 0
15-5 reserved
4
3
2
CLOCK PHASE 0 = 无时钟延时 1 = CLK 延时 ½周期
在典型应用中,SPISET引脚作为从SPI控制器的片选控制
在从模式中(MASTER/SLAVE=0),SPISOMI引脚为数据输出引脚, SPISIMO引脚为数据输入引脚。 SPICLK引脚为串行移位时钟的输入,该时钟由网络主控制器提供, 传输率也由该时钟决定。SPICLK输入频率应不超过CLKOUT频率的 四分之—。 当从SPI设备检测到来自网络主控制器的SPICLK信号的合适时钟边 沿时,已经写入SPIDAT或SPITXBUF寄存器的数据被发送到网络上。 要发送字符的所有位移出SPIDAT寄存器后,写入到SPITXBUF寄存 器的数据将会传送到SPIDAT寄存器。 如果向SPITXBUF写入数据时没有数据发送,数据将立即传送到 SPIDAT 寄存器。为了能够接收数据,从SPI设备等待网络主控制器 发送SPICLK信号,然后将SPISIMO引脚上的数据移入到SPIDAT寄 存器中。 如果从控制器同时也发送数据,而且SPITXBUF还没有装载数据,则 必须在SPICLK开始之前把数据写入到SPITXBUF或SPIDAT寄存器。
C28x - SPI 主模式
SPISOMI
C28x - SPI 从模式
SPISIMO RX FIFO_0 RX FIFO_15 SPIRXBUF.15-0
LSB
SPIDAT.15-0 SPITXBUF.15-0 TX FIFO_0 TX FIFO_15
MSB
SPISOMI
clock phase
SPICLK
理器内部寄存器改变时钟的极性和相位。
SPI设备传输数据过程中总是先发送或接收高字节数据,
每个时钟周期接收器或收发器左移一位数据,对于小于16 位的数据在发送之前必须左对齐,如果接收的数据小于16 位则采用软件将无效的数据位屏蔽。如下图所示。
可编程数据长度1~16 发送数据少于16位时需要左 对齐 ◦ MSB (高字节)先发送
时刻只能有一个从设备来驱动SPISOMI。
SPISTE引脚用做从动选择引脚时,如果该引脚为低,允
许从SPI设备向串行总线发送数据;当SPISTE为高电平时, 从SPI串行移位寄存器停止工作,串行输出引脚被置成高 阻状态。在同一网络上可以连接多个从SPI设备,但同一 时刻只能有一个设备起作用。
寄存器 SPICCR SPICTL SPISTS SPIBRR SPIEMU SPIRXBUF SPITXBUF SPIDAT SPIFFTX SPIFFRX SPIFFCT SPIPRI
功能描述 SPI-A 配置控制寄存器 SPI-A 工作控制寄存器 SPI-A 状态寄存器 SPI-A 波特率寄存器 SPI-A 仿真缓冲寄存器 SPI-A 串行接受寄存器 SPI-A 串行发送寄存器 SPI-A 串行数据寄存器 SPI-A FIFO 发送寄存器 SPI-A FIFO 接受寄存器 SPI-A FIFO 控制寄存器 SPI-A 极性控制寄存器