chap5.4-SPI接口
- 格式:ppt
- 大小:950.50 KB
- 文档页数:35


3852007年第11期,第40卷 通 信 技 术 Vol.40,No.11,2007 总第191期 Communications Technology No.191,Totally ·业务与系统· SPI接口及其在数据交换中的应用 杨美刚, 李小文 (重庆邮电大学,重庆 400065) 【摘 要】SPI是一种常用的串行通信协议,用于MCU系统与外围设备的通信。文中以OMAP1612/11的SPI接口为例,论述了SPI接口的端口、寄存器等结构,介绍了SPI协议,给出了SPI在主模式MCU_DSP发送/接收协议下的数据发送/接收过程,并在FPGA从端对SPI接口进行仿真。 【关键词】SPI接口;FPGA;串行接口技术;数据交换 【中图分类号】TN929.5 【文献标识码】A 【文章编号】1002-0802(2007)11-0385-03 SPI Interface and Its Application in Data Exchange YANG Mei-gang, LI Xiao-wen (Chongqing University of Posts and Telecommunication, Chongqing 400065, China) 【Abstract】SPI is a common-use serial communication protocol, which is used for communication between MCU and peripherals. Taking the SPI interface of OMAP1612 as an example, the paper gives an account of the structure, including the port for SPI interface and register etc,and describes the SPI protocol in detail. The SPI receive/transmit process of MCU-DSP receive/transmit protocol in master mode is also given, including the simulation of the whole process with FPGA in the terminal. 【Key words】SPI;FPGA;Serial Interface Technology;Data Commutation 0 引言 在数字技术高速发展的今天,有许多芯片被用作数据交换的核心器件,以起到承上启下的枢纽作用,或者是在集成电路之间进行数据的存储和显示等。这些芯片同数字逻辑电路的接口很多采用 SPI (Serial Peripheral Interface) 接口技术。SPI 接口技术主要用于扩展外设和进行数据交换,在许多高档的单片机中,已经作为一种配置标准。如OMAP1612/11等等,使工程技术人员在设计系统时具有更大的灵活性,因而受到工程技术人员的欢迎。笔者根据自己的实践经验,以OMAP1612/11为例,对SPI 接口作详细介绍,并用软件模拟SPI 接口时序的方法来实现OMAP1612/11和FPGA之间的数据交换[1]。 1 SPI总线接口 SPI(Serial Peripheral Interface ——串行外设接口)总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串行方式进行通信、数据交换。SPI总线通常由4条线组成,即:串行时钟线(SCK)、主机输出从机输入线(MOSI)、主机输入从机输出线(MIS0)和从机选择线SSN。SCK靠主机和数据流来驱动,MOSI数据线从主机输出数据作为从机的输入数据,MISO数据线传送从机输出的数据作为主机的输入数据。在大多数情况下,使用一个SPI作为主机,它控制数据向1个或几个从机传送。主机驱动数据从它的SCK和MOSI端到各从机的SCK和MOSI端,被选择的从机驱动数据从它的MISO端到主机的MISO端。SSN控制线用于从机选择控制[2~3]。典型SPI接口如图1所示。 图1 典型SPI接口 SPI可以使用MCU_DSP协议或者DMA协议在主/从模式下收稿日期:2007-04-27。 作者简介:杨美刚(1982-),男,硕士研究生,主要研究方向为第三代移动通信;李小文(1955-),男,教授,硕士生导师,主要研究方向为TD_SCDMA第三代移动通信终端研发与测试。 386 运行,传输串行数据时高位优先。这个串口完全由OCP总线来控制,包括数据的读写及其他操作。SPI接口须通过建立寄存器来配置。由于内部移位寄存器是基于一个环形(FIFO规则),故读、写过程必须时刻同步;但是,若没有数据发送的话,并发的写入过程可能只是一次虚拟写入。在主模式下,它提供5个片选,支持多达5个串行设备,其中4个片选对外部设备;移位寄存器的时钟来自内部的CLK_M。在从模式下,SPI有它自己的片选,时钟直接从CLK_S引脚输入。只要任一发送时钟产生,数据发送就会启动;在移位寄存器时钟SRCLK的上升或下降沿,发送或接收的数据被移入或移出;接下来数据包的载入会在使能信号的失效沿被验证;在发送结束时SPI_ISR的值被更新,并且根据它的值产生一个中断请求[4]。在MCU_DSP协议中,中断请求是不能被忽略的,因此,SPI可以发送一个中断来告知主系统发送已经结束。 2 DSP的SPI接口的配置 SPI接口的协议有多种,每种协议都对应着不同的配置方式,本设计中采用DSP为主模式,FPGA为从模式。采用的器件为OMAP1612,它在主模式下的MCU_DSP发送/接收协议如下: 步骤1 MCU_DSP配置建立寄存器(SPI_SET1 和 SPI_ SET2)。 ● SPI_SET1=0x0000000D: (Bit31~6:保留值; Bit5:DMA_EN=0,使用MCU_DSP协议; Bit 4~1:PTV=0110,主模式下用来产生移位时钟的预定标值; Bit0:EN_CLK=1,SPI功能时钟使能。) ● SPI_SET2=0x00008000: (Bit31~16:保留值; Bit15:Mode=1,选择主模式Master; Bit14~10:CP=00000,移位时钟在数据发出的中部锁定; Bit9~5:CE=00000,移位寄存器低电平使能Device 0; Bit4~0:CI=00000,时钟为高电平状态激活。) 步骤2 MCU_DSP 配置发送寄存器 (SPI_TX)(可选);如果你想在发送时还进行接收的话必须这样设置,向SPI_TX写入数据,即要发送的数据。 步骤3 MCU_DSP 配置控制寄存器 (SPI_CTRL)。 ● SPI_ctrl=0x00000066: (Bit31~10:保留值; Bit9~7:AD=000,使能Device 0; Bit6~2:NB=01001,接收/发送10 bit数据; Bit1:WR=1,激活写过程; Bit0:RD=0,不激活读/写过程,高电平时才激活。) ● 当RD=1: 1)发送寄存器 (SPI_TX)的数据被复制到移位寄存器 (SPI_SR)。 2)若SPI_SET2中的CEi = 0,设备使能信号(nTSPEN[i])置0。 3)移位寄存器时钟(SRCLK)启动,开始发送和接收数据。 4)一个SRCLK周期后,RD=0。这时WR的值不会对数据传输产生影响,如果它之前被置1,此时会和RD一样被置0。 ● 当接收结束时: 1)若SPI_SET2中的CEi = 0,设备使能信号(nTSPEN[i])置1。 2)中断状态寄存器(SPI_ISR)中的RE =1。 3)移位寄存器(SPI_SR)中的数据被复制到接收寄存器(SPI_RX)中。 4)若中断使能寄存器中(SPI_IER)的MSK0=1,产生中断。 步骤4 一旦MCU-DSP读取了接收寄存器SPI_RX中的数据并且RE=0,中断请求撤销[4]。 以上步骤所描述的过程如图2所示。 图2 主模式下的MCU_DSP发送/接收协议, CIi=0,CEi=0,CPi=0 3 FPGA端模拟SPI接口 在这个设计中,FPGA作为从端来接收数据;而且当有包括FPGA在内的多个从端时,根据DSP片选信号,FPGA又作为主端将DSP传来的信号发送到指定的从端;一个主端、三个从端(包括FPGA)SPI协议框图如图3所示。 图3 一个主端、三个从端(包括FPGA)SPI协议 FPGA中SPI接口的时钟信号由DSP来提供,当有时钟信号时,开始接收/发送数据,并根据片选信号CS的值,决定数据到达的目的地。在时钟上升沿将DSP发送来的数据MISO存入一个一位接收缓冲器RX_D,同时把片选指定的MISO(1/2)H或FPGA发送寄存器的数据存入一个一位发送缓冲器TX_D;在时钟上升沿把接收寄存器的数据移出到片选指定的引脚或寄存器,同时把发送缓冲器中的数据移出到MISO送达DSP; 387在DSP将需要发送的数据发送完毕后,时钟停止,所有的数据传输处于停止状态直到下一次数据传输开始。 程序用Verilog HDL 硬件描述语言编写,在Xilinx公司的最新高性能设计开发工具ISE8.2i中编译成功;当FPGA芯片类为XC2V2000-5-bg575时,综合结果中显示其最大传输速率为145.980 MHz。程序在仿真软件ModelSim SE 6.1d的仿真结果如图4所示。 图4 FPGA作为从方时的SPI接口仿真时序 4 结语 文中介绍了SPI接口的基本知识,包括SPI的输入输出端口及内部的寄存器,SPI协议等。并以主模式下的MCU_DSP发送/接收协议为例说明了SPI的配置和数据收发过程。当选定 OMAP1612为主模式,FPGA为从模式进行数据传输时,通过仿真的时序图,可以看到SPI满足了两者之间的数据通信。SPI接口技术作为一种高速高效率的串行接口技术, 在数字交换中,它体现了简单、灵活、高效的特点,它在通信中的应用必然越来越广泛。 参考文献 1 李刚.ADμC8XX系列单片机原理与应用技术[M].北京:北京航空航天大学出版社,2002. 2 彭启琮.OMAP处理器的原理及应用[M].北京:电子工业出版社,2005. 3 胡庆钟,李小刚.TMS320C55xDSP原理、应用和设计[M].北京:机械工业出版社,2005. 4 申敏,邓矣兵. DSP原理及其在移动通信中的应用[M].北京:人民邮电出版社,2001 (上接第215页) 显然,CAM的数据查询速度远远高于RAM,因此CAM大量应用于需要高速数据处理的系统之中。 下面是对于CAM比较规则的设置: 首先对以太网包头的协议字段进行检查,如果非0x0800或0x0806则放弃,然后对比IP协议: 类型 长度 以太网协议 16 bit 源IP地址 32 bit 目标IP地址 32 bit IP协议 8 bit TCP/UDP源端口 16 bit TCP/UDP目标端口16 bit 共15字节120 bit。 因此规则表项应该具有以下几个字段: 项目名称 比特数 以太网协议 16(0x0800,0x0806) IP协议 8(0x11,0x06) 源IP地址 32 目的IP地址 32 源端口 16 目的端口 16 总计 120 微处理器事先把规则设置值填入规则表中,考虑到报头里包含了报文的地址和控制信息,可以从报头中提取某些域的值作为TCAM的匹配关键字。 由于规则的不同,大多数的表项都存储了大量的“X”(不关心)比特位,这是因为:并不是IP数据报中所有对应域都需要同表项进行匹配。比如要拦截特定主机的IP包时,仅仅匹配源IP地址就足够了。有时IP地址并不是指定一个特定的主机,而是代表一个网络或者一个包含多台主机的子网,这意味着表项的某些比特位必须是“X”(不关心)。 这样一个比较合理完成的IP过滤模块就构建完成了,只要将过滤所得的IP包交付微处理器所支配的操作系统,操作系统附带的网络组件和接口函数,可以根据不同的协议类型对数据进行分类和处理,从而实现网络基准测试。 3 结语 该测试方案能够成功实现将千兆网络数据进行捕获,并实现对网络QoS的性能评估,随着城域网数据业务的增多和增强,包括下一代网络(NGN)的提出,千兆以太网的应用将越来越广,一套完整合理的测试方案可以有效地评估网络的性能。目前,该方案已经应用于产品研发过程中。 参考文献 1 [美]特南鲍母. 计算机网络(第四版)[M]. 潘爱民译.北京:清华大学出版社, 2004. 2 [美]斯蒂芬.桑德斯. 数据通信吉比特以太网手册[M]. 韩煜国译.北京:人民邮电出版社,2000. 3 [美]史蒂文斯. TCP/IP详解卷1:协议[M]. 范建华等译.北京:机械工业出版社,2000.
ABSTRACT
摘 要
SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间。SPI Flash主要用于代码存储或者其他非易失性存储应用。
本设计目的在于完成一个SPI Flash Controller的设计,相当于在上层的Driver 和 Flash 器件之间建立起一座连接的桥梁。控制器接收上层配置的并行数据和控制信号,经过控制器处理之后以串行的方式发送至Flash 器件以完成对Flash 的相应的读写等操作。本设计采用Verilog HDL 语言,在Vi 编辑器中完成设计,并用EDA tool对设计进行了编译、模拟、仿真和调试。最后又在FPGA上对结果进行了实践证明。完成上述全部工作之后,再从功能、面积优化和成本缩减等方面对设计进行分析总结本次毕业设计中获得的宝贵经验。
关键词: 闪存 Verilog HDL 串行 并行 FPGA
ABSTRACT
SPI (Serial Peripheral interface) is a serial periphery
slave interface. SPI is a fast, duplex and synchronism
communication bus. And there are only 4 pins on the chip of SPI.
It is so convenient for wire layings of PCB. SPI Flash is ideal
for code download as well as storing nonvolatile voice, text and
data.
In this design, I have finished a SPI Flash Controller IP
SPI 接口驱动电路设计的资料概述
SPI 协议简介
SPI 是单 master 多 slave 的总线协议,全双工通信。如下图所示,一个
master 可以控制多个 slave,通过 ss 信号选择需要控制的 slave,ss 低电平有
效。
数据传输要遵循如下时序要求(下图是以收发数据位数为 8 作为示例)。
其中 SCK 为 SCLK,由 master 发出,SS 为 Slave 片选信号。其中
CPOL,CPHA 为模式选择。master 与 slave 的模式需要一致。MISO(单 bit)
为 slave 的输出数据线,master 的输入数据线(未选中的 slave 的 MISO 为高
阻态);MOSI(单 bit)为 master 的输出数据线,slave 的输入数据线。数据
都是先发低位。
当 CPOL=0,CPHA=0 时:空闲时,SCLK 为低电平;master 和 slave,在
SCLK 上升沿采集数据,下降沿发出数据。并在第一个 SCLK 上升沿之前,
数据的第一 bit 必须送上数据线。
当 CPOL=0,CPHA=1 时:空闲时,SCLK 为低电平;master 和 slave,在
SPI接口应用之一---看门狗芯片X25045
SPI接口应用之一---看门狗芯片X25045
hadao 发表于 2006-5-8 0:08:41
一、引脚定义及通信协议
SO:串行数据输出脚,在一个读操作的过程中,数据从SO脚移位输出。在时钟的下降沿时数据改变。
SI: 串行数据输入脚,所有的操作码、字节地址和数据从SI脚写入,在时钟的上升沿时数据被锁定。
SCK:串行时钟,控制总线上数据输入和输出的时序。
/CS :芯片使能信号,当其为高电平时,芯片不被选择,SO脚为高阻态,除非一个内部的写操作正在进行,否则芯片处于待机模式;当引脚为低
电平时,芯片处于活动模式,在上电后,在任何操作之前需要CS引脚的一个从高电平到低电平的跳变。
/WP:当WP引脚为低时,芯片禁止写入,但是其他的功能正常。当WP引脚为高电平时,所有的功能都正常。当CS为低时,WP变为低可以中断对芯片的写操作。但是如果内部的写周期已经被初始化后,WP变为低不会对写操作造成影响。
二、硬件连接
三、程序设计
状态寄存器:
7 6 5 4 3 2 1 0
X X WD1 WD0 BL1 BL0 WEL WIP WIP: 写操作标志位, 为1表示内部有一个写操作正在进行,为0则表示空闲,该位为只读。
WEL: 写操作允许标志位,为1表示允许写操作,为0表示禁止写,该位为只读。
BL0,BL1: 内部保护区间的地址选择。被保护的区间不能进行看门狗的
定时编程。
WD0,WD1:可设定看门狗溢出的时间。有四种可选择:1.4s,600ms,200ms,无效。
操作码:
WREN 0x06 设置写允许位
WRDI 0x04 复位写允许位
RDSR 0x05 读状态寄存器 WRSR 0x01 写状态寄存器
READ 0x03/0x0b 读操作时内部EEPROM页地址 WRITE 0x02/0x0a 写操作时内部EEPROM页地址