微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 串行外围接口SPI功能模块的设计

串行外围接口SPI功能模块的设计

时间:01-24 来源:网络 点击:

SPI(Serial Peripheral Interface)串行外围接口是一种3线同步串行全双工通信接口,它具有电路简单,速度陕,通信可靠等优点,近年来大量的新型器件如LCD模块、FLASH、EEPROM存储器、数据输入输出设备都采用了SPI接口,新型的单片机一般都已将SPI接口控制器集成在单片机内部,这样能够大大降低软件的工作量。

由于SPI系统总线一共只需3~4位数据线和控制线即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8-16位地址线、2~3位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/0口线,提高设计的可靠性,使用SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能。

2 SPI模块的接口信号、时序要求及工作模式

2.1 内部总线接口

在本设计中,内部总线接口采用的是AMBA总线3.0协议,具有较好的可移植性和可复用性。SPI是APB总线上的Slave模块。APB总线的时序完全遵照(ABMA Specification)(Rev 3.0)。因此此SPI模块支持3种DMA操作,除了标准信号线外,还有3根与DMA模块连接的中断请求信号线。

2.2 SPI总线接口及时序

SPI串行接口使用4条线可与多种标准外围器件直接接口:串行时钟线SCLK,主机输入/从机输出数据线MISO,主机输出/从机输人数据线MOSI和低电平有效的从机选择线SSN。SCLK是主机时钟线,为MISO数据的发送和接收提供同步时钟信号。

在正常工作的时候,主机的4个引脚应和从机对应的4个引脚分别相连。

SPI模块为了和外设进行数据交换,根据外设的工作要求,其输出串行同步时钟的极性和相位可以进行配置,时钟的极性(CPOL)对传输的协议没有重大影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;相反,如果CPOL=l,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。

如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设时钟相位和极性应该一致。SPI接口时序如图1、图2所示。

图1 CPOL=0 CPHA =0

图2 CPOL=0 CPHA=1

2.3 工作模式

SPI有两种工作模式,可以通过外部引脚跳线的方式来切换。

主模式:发送和接收可以同时工作在主模式下。

主模式的显著特征是不论是发送还是接收始终有SCLK信号,发送操作是由向发送FIFO中写数据而触发的。在主模式下,时钟信号的1次作用对应一位数据的发送(MOSI)和另一位数据的接收(MISO)。

如图3所示,在主片中数据从移位寄存器中自右向左发出送到从片(MOSI),同时从片中的数据自左向右发到主片(MISO),经过8位时钟周期完成1个字节的发送。输入字节保留在移位寄存器中,此时SPI INT FLAG位自动置位(如果有中断设置,则产生中断),移位寄存器的数据将被锁存到接收FIFO中,此后对接收FIFO的读操作将把数据读出。

从模式:发送和接收同时工作在从模式下。从模式的显著特征是:不论是发送还是接收始终必须在SCLK信号作用下进行,并且SSN信号必须有效。

当SSN信号无效时,数据的发送无法进行并且输入的数据视为无效。数据的发送和接收过程见图3所示,与主模式下基本相似,只是移位寄存器的数据移出和输入方向与之相反。

图3 主片和从片发送和接收操作

3 SPI模块功能设计

3.1 模块划分

根据功能定义及SPI的工作原理,将整个SPI IP划分为8个子模块:APB接口模块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、寄存器控制模块、命令解析模块、中断处理模块及发送接收数据模块。整个SPI模块划分结构图如图4所示。

图4 数据传输结构

在这些模块中,Tx-FIFO和Rx-FIFO用来做接收发送数据的FIFO。DMA/INT是中断控制模块,通知MCU或者DMA发送或者接收数据的FIFO。CMD ANALYSIS模块用来解析在从模式下Host发过来的命令。CTRl/Register用来放置寄存器,供MCU读写配置SPI的各种参数。Shifter用来做串并转换,收发送数据。Clock模块用来产生主模式下时钟。

3.2 设计方案

通过深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。为了简化设计,规定如果要连续传输多个数据,在两个数据传输之问插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。相比其它设计,在基本不降低性能的前提下,思路比较精炼、清晰,能够大大缩短写代码的时间,降低出错率。

此SPI模块有两种工作方式:查询方式和DMA方式。查询方式通过处理器核监视

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top