资源描述
精品文档就在这里
-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有--------------
--------------------------------------------------------------------------------------------------------------------------------------------
合肥学院
嵌入式系统设计课程
技术报告
(20 13- 2014第2学期)
报告题目:_______SPI总线和SPI控制器_______
专 业:_____________自动化______________
班 级:_________11自动化卓越班__________
姓 名:______________荣敏_______________
学 号: __________1105031002____________
指导老师:_____________干开峰______________
电子信息与电气工程系
2014年4月制
摘要
SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现的。S3C2440包含有两个串行外围设备接口(SPI口),每个SPI口都有两个分别用于发送和接收的8位移位寄存器。在一次SPI通信当中数据被同步发送(串行移出)和接收(串行移入)。8位串行数据的速率由相关的控制寄存器的内容决定。
SPI 主要应用在 EEPROM, Flash, 实时时钟(RTC), 数模转换器(ADC), 数字信号处理器(DSP) 以及数字信号解码器之间. 它在芯片中只占用四根管脚 (Pin) 用来控制以及数据传输, 节约了芯片的 pin 数目, 同时为 PCB 在布局上节省了空间. 正是出于这种简单易用的特性, 现在越来越多的芯片上都集成了 SPI技术.
关键词:SPI总线协议 SPI控制器 SPI技术
1、SPI总线协议概述
同步外设接口(SPI)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。
SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。
1.1 SPI通信
该总线通信基于主-从配置。它有以下4个信号:
MOSI:主出/从入
MISO:主入/从出
SCK:串行时钟
SS:从属选择
芯片上“从属选择”(slave-select)的引脚数决定了可连到总线上的器件数量。
在SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲,摩托罗拉没有定义任何通用SPI的时钟规范。然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。CPOL和CPHA的设置决定了数据取样的时钟沿。
1.2 数据方向和通信速度
SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI串行器件传输速度能达到5MHz。
1.3 SPI总线接口及时序
SPI总线包括1根串行同步时钟信号线以及2根数据线。
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图1、图2所示。
图1 CPHA=0时SPI总线数据传输时序
图2 CPHA=1时SPI总线数据传输时序
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。
那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。
例子:
假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面图3将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据
脉冲
主机sbuff
从机sbuff
sdi
sdo
0
10101010
01010101
0
0
1上
0101010x
1010101x
0
1
1下
01010100
10101011
0
1
2上
1010100x
0101011x
1
0
2下
10101001
01010110
1
0
3上
0101001x
1010110x
0
1
3下
01010010
10101101
0
1
4上
1010010x
0101101x
1
0
4下
10100101
01011010
1
0
5上
0100101x
1011010x
0
1
5下
01001010
10110101
0
1
6上
1001010x
0110101x
1
0
6下
10010101
01101010
1
0
7上
0010101x
1101010x
0
1
7下
00101010
11010101
0
1
8上
0101010x
1010101x
1
0
8下
01010101
10101010
1
0
图4 spi的8个时钟周期的数据情况
这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,sdi、sdo相对于主机而言的。其中ss引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来
SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。图5示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):
图5 SPI总线四种工作方式
2、S3C2440的SPI控制器
S3C2440包含有两个串行外围设备接口(SPI口),每个SPI口都有两个分别用于发送和接收的8位移位寄存器,在一次SPI通信当中数据被同步发送(串行移出)和接收(串行 移入)。8位串行数据的速率由相关的控制寄存器的内容决定。如果只想发送,接收到的是一些虚拟的数据。另外,如果只想接收,发送的数据也可以是一些虚拟的“1”。结构框图如图6:
图6 SPI口结构框图
2.1 SPI接口特性:
· 与SPI接口协议v2.11兼容;
· 8位用于发送的移位寄存器;
· 8位用于接收的移位寄存器;
· 8位预分频逻辑;
· 查询、中断和DMA传送模式;
2.2 SPI接口操作:
通过SPI接口,S3C2440可以与外设同时发送/接收8位数据。串行时钟线与两条数据线同步,用于移位和数据采样。如果SPI是主设备,数据传输速率由SPPREn寄存器的相关位控制。可以修改频率来调整波特率寄存器的值。如果SPI是从设备,其他的主设备提供时钟,向SPDATn寄存器中写入字节数据,SPI发送/接收操作就同时启动。某些情况下片选nSS要在向SPDATn寄存器中写入字节数据之前激活。
2.3 传输格式:
图7 传输格式
2.4 接口控制寄存器:
2.4.1 SPI控制寄存器(SPICONn)
该寄存器控制SPI的工作模式如图8:
图8 SPI控制寄存器工作模式
2.4.2 SPI状态寄存器(SPSTAn)
图9 SPI状态寄存器
SPI发送时为单缓冲,这样在前一次发送尚未完成之前,不能将新的数据写入移位寄存器来发送过程中对数据寄存器进行写入操作时,DCOL位将为1以指示数据冲突。此前发送的数据就行发送,而后写入的数据将丢失。
2.4.3 SPI引脚控制寄存器(SPPINn)
当一个SPI系统被允许时,nSS之外的引脚的数据传输方向都由SPCONn的MSTR位控制,nSS引脚总是输入。当SPI是一个主设备是,nSS引脚用于检测多主设备错误(如果SPPIN的ENMUL位被使能),另外还需要一个GPIO 来选择从设备。如果SPI被配置为从设备,nSS引脚用来被选择为从设备。
图10 SPI引脚控制寄存器
2.4.4 SPI发送数据寄存器(SPTDATn)
发送数据寄存器中存放待SPI口发送的数据
SPI接收数据寄存器(SPRDATn)接收数据寄存器中存放SPI口接收到的数据。
3、参考文献
[1]李强.SPI总线协议[J].武汉工业学院学报.2013(04)
[2]姜海.SPI总线协议[J]. 四川大学学报.2013(11)
[3]赵杰,曹凡,冮殿亮. 基于AMBA总线的SPI协议IP核的设计与验证[J].电子测量技术.2010(01)
[4]王海洋,罗代升.基于ARM-Linux和SPI的指纹车辆管理系统研究[J].四川大学学报.2010(3)
[5]张佳航.S3C2440的SPI控制器[E].百度文库.2010(04)
---------------------------------------------------------精品 文档---------------------------------------------------------------------
展开阅读全文