文档库 最新最全的文档下载
当前位置:文档库 › ARM与DSP的SPI通信设计实现_张岩

ARM与DSP的SPI通信设计实现_张岩

ARM与DSP的SPI通信设计实现_张岩
ARM与DSP的SPI通信设计实现_张岩

ARM与DSP的SPI通信设计实现

张岩马旭东张云帆(东南大学自动化学院,江苏南京210096)

CommunicationBetweenARMandDSPThroughSPIBus

摘要

提出一种测量仪器的多处理机分布式控制方案,并对DSP与移植了Linux操作系统的ARM之间SPI通信设计进行了着重阐述。对于这样的特定系统,首先要完成Linux下的SPI驱动程序开发,然后才能进行ARM和DSP下的应用程序开发。对这几个方面进行了详细介绍,给出了一种ARM与DSP通信的通信协议,并基于此协议实现了ARM与DSP的SPI通信。

关键词:SPI总线,ARM,DSP,SPI驱动程序

Abstract

Thispaperbringsupadistributedcontrolmethodbasedonmultipleprocessorsofsurveyinginstruments,andputstheemphasisondiscussingthecommunicationbetweenDSPandARMwithaLinuxOS.Forthespecificsystem,todesigntheSPIdevicedriverofembeddedLinuxisthefirststep,thencomplicatetheapplicatedprograminbothARMandDSP.Allthesepartsaredescribedindetailinthispaper,andacommunicationprotocolbetweenARMandDSPisgiven,basedwhichtheARMandDSPcommunicatethroughSPIbusisaccomplished.

Keywords:SPIbus,ARM,DSP,SPIdevicedriver

对于现代测量仪器,不仅需要具备实时性的控制、测量功能,还需要具备非实时性的人机交互界面、数据管理、打印等功能。基于此,常常采用多处理器结构,组成分布式控制系统。根据系统实际要求,采用TI公司的DSP处理器TMS320F2812为控制核心,采用三星公司的ARM9处理器S3C2410为管理核心。而如何保证两者之间高效的数据传送便成为一个至关重要的问题。

SPI(SerialParallelInterface)总线是Motorola公司提出的一种同步串行外设接口协议总线。它具有标准的传输协议,占用接口线少,传输效率高,且为本系统所采用的两种芯片所支持,故而是一种较为理想的设计方案。

1系统硬件结构

本系统中,通信是由仪器使用者通过人机交互界面操作仪器发起的,故将管理核心ARM设置为主机,将控制核心DSP设置为从机。其硬件结构如图1所示。

图1ARM与DSP的SPI通信接口

一般情况下,实现SPI接口需要3~4根线。SPI是一个同步协议接口,所有的传输都参照一个共同的时钟CLOCK,这个同步时钟信号由主机产生,从机使用时钟来对串行比特流的接收进行同步化。主机和从机都包含一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器是通过MOSI(主输出从输入数据线)信号线将字节传送给从机,从机也将自己移位寄存器中的内容通过MISO(主输入从输出数据线)信号线返回给主机,这样,两个移位寄存器中的内容就被交换了。如果只是进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来引发从机的传输。还有一根nSS,为从选信号线,可以用于使能从机输出,是可选的;若使用nSS,如本系统中,必须保证nSS在上电时为高电平,否则在上电后,从机将首先收到一个伪数据。

根据MOSI和MISO在SPICLK的哪个时钟极性和时钟相位上有效,SPI可分为4种工作时序,而S3C2410与DSP2812对这四种时钟模式都可支持,因此只要任选一种即可,但必须保证它们之间的一致。

这里约定使用无相位延时的下降沿的SPI时序。ARM通过发出SPICLK信号来启动数据传输,SPICLK为高电平时有效,在SPICLK信号的下降沿发送数据,在SPICLK信号的上升沿接收数据。ARM与DSP能够同时发送和接收数据,应用软件判定数据的真伪。其时序图如图2所示。

图2无相位延时的下降沿的SPI时序

2系统软件设计

系统软件设计的主要任务有:由于在ARM上移植了Linux操作系统,要在用户空间正确使用SPI设备,首先要在内核空间编写相应的设备驱动程序;另外要在用户空间编写应用程序以完成ARM上的数据收发流程,DSP上的数据收发。

在ARM端,S3C2410芯片内SPI接口支持查询、中断与DMA三种传输模式。若采用中断模式,接收到一个字节的数据即中断一次,而本系统中数据量较大,因此效率较低;若采用DMA方式实现,则增加了驱动程序开发的难度。这里选择采用查询方式接收数据。

ARM与DSP的SPI通信设计实现

56

《工业控制计算机》2008年21卷第9期

而在DSP端,因为采用前后台结构,故对于SPI通信模块,采用中断方式接收数据。通过中断处理程序完成前后台切换。

本系统中,对ARM和DSP均采用C语言进行编程。2.1数据格式定义

根据实际要求,本系统中在SPI通信时主要有三种格式的数据。分别是命令帧、数据帧、信息帧,其中命令帧总是由主机发出,用于指示从机完成相应的控制功能;信息帧总是由从机发出,作用是在从机执行控制功能时,将相关状态信息反馈给主机。数据帧则既可以由主机也可以从机发出,用于主机和从机进行必要的参数传递。

三种帧的格式如下表所示:

命令帧格式:

信息帧格式:

数据帧格式:

2.2ARM上的SPI驱动程序编写

在向内核注册完成SPI设备后,首先要初始化硬件。即把相关寄存器映射到虚拟内存地址,对其进行相应的设置。其中较为重要的便是SPI控制寄存器。

SPI控制寄存器的字段定义如下:

初始化代码如下:

r_SPCON0=ioremap(0x59000000,4)A//控制寄存器地址映射

r_SPCON0=0x18A//控制寄存器设置根据所要实现的文件操作,本系统SPI驱动程序定义的file_operations结构为:

staticstructfile_operationsspi2410_fops=K

read:spi2410_rd,

write:spi2410_wr,

poll:spi2410_poll,

open:spi2410_open,

release:spi2410_close,

PA

这样在用户空间应用程序中通过read、write等关键字,即可调用内核空间驱动程序中相应的函数。

SPI发送数据调用spi2410_wr()函数。在该函数中首先分配数据发送缓冲区,并将用户空间的数据复制到内核空间,然后调用spi_data_send()进行数据的发送,发送过程结束后,返回实际发送的数据长度。spi_data_send()函数的实现过程如图3所示。spi_poll_done()函数设置一定的超时时间,在此时间内不断查询设备状态寄存器rSPSTA0的相关标志位,如果状态指示字节数据已发出或者发送超时,则返回。

关键代码如下:copy_from_user(TXdata,buf,count)A//复制数据到内核空间的发送缓冲区

spi_data_send()A//调用函数发送数据SPI接收数据调用spi2410_rd()函数,其过程与SPI发送数据过程类似。首先分配数据接收缓冲区,同样调用spi_tx_data()发送数据,只是此时发送的是伪数据,并在发送过程返回后,从SPI的接收数据寄存器中读取数据并保存在已分配好的接收数据缓冲区中。最后再将该内核空间的数据传递到用户空间中。该实现过程的流程图略去。

其关键代码如下:

spi_tx_data(0xff)A//发送伪数据

RXdata[i]=rSPRDAT0A//接收数据

copy_to_user(buf,RXdata,count)A//复制数据到用户空间2.3ARM收发数据

前文已经提到,ARM端采用查询方式接收数据。ARM在执行SPI通信任务时,其他任务均被挂起。而本系统要求ARM还要不间断完成其他任务(如每秒对显示屏幕进行刷新),故在ARM端设计如下收发协议:ARM向DSP发出动作命令帧后,立即返回,完成其他任务。然后每3s向DSP发出一个命令帧进行询问。如果未收到应答或收到动作尚未完成的信息帧,则返回并重复上述动作。若收到动作

完成的信息帧,若有

数据上传则发一个

命令帧请求数据,否

则直接返回并关闭

SPI通信。对于每个

动作,相应设定一个

延时时间,若超过该

时间仍未收到动作

完成的信息帧,或数

据上传未完成,则返

回并关闭SPI通信

以进行其他操作。以

上流程如图4所示。

2.4DSP收发数据

在DSP端,将

接收中断的级别设

置为单字节,即每接

(下转第66页)图4ARM端收发数据流程图

图3SPI

数据发送流程图

57

图5

DSP接收数据流程图

(上接第57页)

收到一个字节数据就触发一次中断处理程序。在中断处理程序中可利用一个全局变量spi_St,用来标记当前接收字节所表示的状态;开通一个数据缓冲区,用来存放有效数据;利用一个全局变量spi_i,用来标记已获得有效数据数目。

具体处理时,

根据

spi_St值的不同,来判读所

接收数据是否为有效数据。例如当spi_St为0时,判断当前接收字节是否为同步;再例如当spi_St为2时,判断当前接收字节是命令帧头还是数据帧头等等。若判

断正确,则该字节数据为有效数据,储存于缓冲区中,并将spi_i做加1处理。否则结束中断处理程序。DSP端整个接收流程如图5所示。

3结束语

本文所述方法和通信协议已在实际系统中得到实现,通信

速度快、可靠性高。且系统充分利用了SPI总线接口功能完善、时序简单且无须外加其他元器件等特点,简化了系统设计,提高了系统可靠性。

参考文献

[1]苏奎强,吕强,等.TMS320F2812原理和开发[M].北京:电子工业出

版社,2006

[2]AlessandroRubini,JonathanCorbet.Linux设备驱动程序[M].魏永

明,等,译.2版.北京:中国电力出版社,2002

[3]孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发指南[M].北

京:电子工业出版社,2005

[4]左东广,魏瑞轩.SPI接口技术与应用[J].工业控制计算机,2001,14(2)

[收稿日期:2008.5.13]

IRQ和非向量IRQ,不同外设的中断优先级可以动态分配并调整。系统将中断请求分配给非向量IRQ,响应过程为:当发生IRQ中断时,首先保存任务环境,然后中断控制器(VIC)将所有

IRQ中断“

相或”向LPC2131产生IRQ信号,借着调用异常处理程序,处理结束后关闭中断,最后恢复现场、返回。

2.4系统各部分间通信

2.4.1系统握手方式

系统的通信总体上采用自上而下的主从方式,即远程上位机与局部管理单元之间的通信始终由远程上位机发起,局部管理单元与电能管理终端之间始终由局部管理单元发起。具体方式为:发起通信的一方先发出功能命令,应答方作出回应。若无应答或错误应答则发起方重新发送命令,直到收到正确应答或者重发次数达到最大重发次数则视为此次通信失败。

2.4.2远程上位机与局部管理单元间以太网通信

局部管理单元与远程上位机之间采用以太网通信,并采用自定义的通信协议,格式如表1所示。

表1以太网通信帧格式

其中,同步头为字符“@”,数据与长度根据不同情况有所不同,检验域校验的范围包括命令域与数据域的长度,信息包长度指命令域长度、数据与长度、校验域长度三者的总和。

2.4.3局部管理单元与电能管理终端间RS485通信

局部管理单元与电能管理终端之间采用RS485通信,系统首先需要将微处理器SCI出来TTL电平转换为RS232电平,再在通过外部装换模块将RS232电平转换为RS485电平,从而与电能管理终端进行通信,基本过程如图4所示。

由于RS485总线只规定了相应的物理层协议,并没有定义上层协议,因此系统中采用自定义的数据格式和协议,如表2所示。

由于系统采取分级的分布式结构,一个局部管理单元下可带多达上百个电能管理终端,而每个电能管理终端可最多管理

16块电表,因此地址域有3个

字节。在应用中用位域掩码代替具体的电表号,目的是减少通信的流量,提高通信效率,更方便于今后电表的维护更新。

3结束语

本文所设计的基于ARM处理器的分布式智能电能管理系

统,采用分级结构,具有良好的智能性与可扩展性,并且数据采集可靠、通信稳定。该系统已开始应用于实际智能小区的建设。本系统是较为典型的分级分布式智能测控系统,不仅对智能电能管理,而且对于智能楼宇、电机控制、车间控制、流量监控等生产生活的很多领域的开发具有良好的启示作用。可对系统的结构及功能进行适当调整以适应不同的应用场合,具有很强的灵活性和可扩展性。

参考文献

[1]魏忠,等著.嵌入式开发详解[M].北京:电子工业出版社,2003[2]孙秋野,等著.ARM嵌入式系统开发典型模块[M].北京:人民邮电出

版社,2007

[3]周立功,等著.深入浅出ARM7—LPC213X/214X(上)[M].北京:北

京航空航天大学出版社,2005

[4]2003年全国单片机及嵌入式系统学术年会论文集[C].北京:北京航

空航天大学出版社,2003

[5]ElectronicsSamsung.S3C2410X32-BitRISCMicroprocessor

User'sManual(Revision1.2).2003

[收稿日期:2008.4.15]

表2

RS485通信帧格式

图4

局部管理单元与电能管理终端间RS485通信转换过程

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

基于嵌入式技术的分布式测控系统研究与应用

66

SPI接口设计与实现

SPI接口设计与实现 SPI(SerialPeripheralInterface)总线是一种同步串行外设接口,它 可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI总线应用广泛,已经成为很多器件的标准配置,可以直接和各个厂家生产的 多种标准外围器件直接接口。其它常用的串行接口还有I2C、UART这 两种接口,这三种接口互有优缺点。与I2C接口相比,SPI接口速度更快、协议更简单、并且是全双工的,但连线也相对多一些。与UART接口相比,SPI更灵活,因为其使用主设备的时钟进行同步,所以两个比特之间 的时间间隔可以是任意的。在点对点的通信中,SPI接口不需要进行寻 址操作,且为全双工通信,显得简单高效。 1SPI总线工作原理 SPI总线一般以主/从模式工作,通常有一个主设备和一个或多个从设备,数据传输由主机控制,典型SPI结构框图如图1所示。SPI总线包含四条信号线,分别是sclk、miso、mosi和cs,其中,sclk为数据传输时钟,由主机产生;miso是从机输出,主机输入数据线;mosi是主机输出, 从机输入数据线;cs是从设备片选信号,由主机控制,当连接多个从设备时,通过该信号选择不同的从设备。SPI总线是按字节发送数据的,主机和从机内部都包含一个8位串行移位寄存器,在时钟信号控制下,寄存 器内的数据由高到低输出至各自的数据线,8个时钟后,两个寄存器内的数据就被交换了。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机 的传输。当主机发送一个连续的数据流时,可以进行多字节传输,在这 种传输方式下,从机的片选端必须在整个传输过程中保持低电平。 根据串行同步时钟极性和相位不同,SPI有四种工作方式。时钟极性(CPOL)为0时,同步时钟的空闲状态为低电平,为1时,同步时钟的空闲 状态为高电平。时钟相位(CPHA)为0时,在同步时钟的第一个跳变沿采 样数据,为1时,在同步时钟的第二个跳变沿采样数据。因为主设备时

基于CPLD的SPI接口设计

基于CPLD 的SP I 接口设计 D esign i ng SP I I n terface ba sed on CPLD 何永泰 (楚雄师范学院 楚雄 675000) 【摘 要】 根据SP I 同步串行接口的通信协议,介绍了在X ilinx Coo lR unnct XPLA 3CPLD 中利用V HDL 语言实现SP I 接口的设计原理和编程思想,通过用此接口,使得那些没有SP I 接口功能的微处理器和微控制器,也能通过SP I 接口与外围设备进行数据交换。 【关键词】 SP I 接口,CPLD ,接口扩展,接口设计,串行接口 ABSTRACT A cco rding to comm un icati on p ro toco l of SP I synch ronou s serial in terface ,th is paper p resen ts the design theo ry and p rogramm ing idea of i m p lem en ting SP I in terface w ith V HDL language in X ilinx Coo lR unner XPLA 3CPLD .T h is in terface can be u sed to data exchange w ith peri pheral apparatu s fo r m icrop rocesso r and m icrocon tro ller w h ich have no t SP I in terface functi on .KEYWOR D S SP I in terface ,CPLD ,in terface expan si on ,in terface design ,serial in terface 1 SP I 总线接口协议 SP I (Seri on Perp heral In terface )总线接口是一个 全双工,同步串行数据接口。许多微处理器,微控制器和外部设备具有这个接口。它能够实现在微控制器之间或微控制器与外部设备之间通信。SP I 总线通常有4条线组成,即:串行时钟线(SCK )、主机输出从机输入 线(M O S I )、 主机输入从机输出线(M ISO )和从机选择线SS N 。SCK 靠主机和数据流来驱动。M O S I 数据线从主机输出数据作为从机的输入数据。M ISO 数据线传送从机输出的数据作为主机的输入数据。在大多数情况下,使用一个SP I 作为主机,它控制数据向1个或几个从机传送。主机驱动数据从它的SCK 和M O S I 端到各从机的SCK 和M O S I 端,被选择的从机驱动数据从它的M ISO 端到主机的M ISO 端。SS N 控制线用于从机选择控制。 SCK 的相位和极性能改变SP I 的数据格式,时钟极性CPOL =‘0’,串行数据的移位操作由时钟正脉冲触发,时钟极性CPOL =‘1’,串行数据的移位操作由负脉冲触发;时钟相位CPHA =‘0’, 串行数据的移位 图1 CPHA =‘0’时SP I 的数据转换时序图 操作由时钟脉冲前沿触发,时钟相位CPHA =‘1’,串行数据的移位操作由时钟脉冲后沿触发。时钟相位CPHA =‘0’时SP I 的数据转换时序图如图1所示。 在图1中SCK 信号在第一个SCK 周期中的前半周期无效,在这种模式中,SS 的下降沿示意数据传送的开始,因此,SS 在连续串行字节之间必须被取反和重新申明。时钟相位CPHA =‘1’时SP I 的数据转换时序图如图2所示。 在图2中SCK 信号从无效电平到有效电平的第一边沿意味着在这种模式下数据传送的开始,SS 信号能保持有效的低电平在连续串行字节之间,这种模式用于只有一个主机和一个从机的系统中。 在SP I 传送数据时,8位数据从一个SP I 接口移出时,另一个SP I 接口也开始移出8位数据,这样主机的8位移位寄存器和从机的8位移位寄存器可以被看作是16移位寄存器,16位移位寄存器移动8个位置就实现了在主机和从机之间交换数据。基于CPLD 的SP I 接口设计中,从SP I 总线上接收的数据被保存在一个接收寄存器中,发送的数据被写到一个发送寄存器中 。 图2 CPHA =‘1’时SP I 的数据转换时序图 3 20040414收到,20040724改回 33 何永泰,男,1970年生,讲师,在读硕士,研究方向:电子工程设计。 ? 72?第17卷 第10期 电脑开发与应用 (总497)

SPI接口详细说明

SPI 串行外设接口总线,最早由Motorola提出,出现在其M68系列单片机中,由于其简单实用,又不牵涉到专利问题,因此许多厂家的设备都支持该接口,广泛应用于外设控制领域。 SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的。但正因为没有确切的版本协议,不同家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法直接互连(需要软件进行必要的修改)。 虽然SPI接口的内容非常简单,但本文仍将就其中的一些容易忽视的问题进行讨论。 SPI ( Serial Peripheral Interface ) SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。 时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI 接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。 SPI接口信号线 SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。 设备选择线SS-(Slave select,或CS-)

SS-线用于选择激活某Slave设备,低有效,由Master驱动输出。只有当SS-信号线为低电平时,对应Slave设备的SPI接口才处于工作状态。 SCLK:同步时钟信号线, SCLK用来同步主从设备的数据传输,由Master驱动输出,Slave设备按SCK的步调接收或发送数据。 串行数据线: SPI接口数据线是单向的,共有两根数据线,分别承担Master到Slave、Slave到Master的数据传输;但是不同厂家的数据线命名有差别。 Motorola的经典命名是MOSI和MISO,这是站在信号线的角度来命名的。 MOSI:When master, out line; when slave, in line MISO:When master, in line; when slave, out line 比如MOSI,该线上数据一定是Master流向Slave的。因此在电路板上,Master的MOSI引脚应与Slave的MOSI引脚连接在一起。双方的MISO也应该连在一起,而不是一方的MOSI连接另一方的MISO。 不过,也有一些产家(比如Microchip)是按照类似SDI,SDO的方式来命名,这是站在器件的角度根据数据流向来定义的。 SDI:串行数据输入 SDO:串行数据输出 这种情况下,当Master与Slave连接时,就应该用一方的SDO连接另一个方的SDI。 由于SPI接口数据线是单向的,故电路设计时,数据线连接一定要正确,必然是一方的输出连接另一方的输入。 其实这个问题本来很简单的,但由于不同厂家产品的命名习惯可能不同,因此还需小心,以免低级出错。 数据传输的时序模式

spi_和接口设计

SPI 接口的设计 第二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需要分成两部分:一部分为SPI 接口电路,以及其根据部寄存器存储的数据产生的控制信号;另一部分是具体的电路受控模块。本章将介绍接口与数字逻辑电路的设计,包括应用于本模数转换器的SPI 接口与数字逻辑电路的设计、综合以及仿真验证。 3.1 数据通信接口 3.1.1 串行通信 基本的通信方式有两种:并行通信和串行通信。并行通信是指数据以成组的方式,在多条并行信道上同时进行传输。 串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位的先后顺序进行传送。接收数据时,每次从单根线上按位接收信息,再把它们拼成一个字符,送给CPU (Central Processing Unit )做进一步的处理。收发双方必须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同的一个一个字符。串行通信只需要一条传输信道,易于实现,是目前主要采用的一种通信方式,它具有通信线少以及传送距离远等优点。 串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方式。 (1)单工(Simplex ):数据线仅能向一个方向传输数据,两个设备进行通信时,一边只能发送数据,另一边只能接收数据。 (2)半双工(Half Duplex ):数据可在两个设备间向任一个方向传输,但因为只有一根传输线,故同一时间只能向一个方向传输数据,不能同时收发。 (3)全双工(Full Duplex ):对数据的两个传输方向采用不同的通路,可以同时发送和接收数据, 串行通信有两种基本工作方式:异步方式和同步方式。采用异步方式(Asynchronous )时,数据发送的格式如图3-1所示。不发送数据时,数据信号线呈现高电平,处于空闲状态。当有数据要发送时,数据信号线变成低电平,并持续一位的时间,用于表示字符的开始,称为起始位。起始位之后,在信号线上依次出现待发送的每一位字符数据,最低有效位0D 最先出现。采用不同的编码方案,待发送的每个字符的位数就不同。当字符用ASCII 码表示时,数据位占7位(60~D D )。在数据位的后面有一个奇偶校验位,其后有停止位,用于指示字符的结束。停止位可以是一位也可以是一位半或两位。可见,用异步方式发送一个7位的ASCII 码字符时,实际需发送10位、10.5位或11位信息。如

全功能SPI接口的设计与实现

SPI 串行通信接口是一种常用的标准接口,由于其使用 简单方便且节省系统资源,很多芯片都支持该接口,应用相当广泛[1]。但是现有文献和设计多数仅实现了SPI 接口的基本发送和接收功能,对SPI 接口的时序控制没有进行深入的研究。全功能SPI 接口应具有四种不同的时钟模式,以适应具有不同时序要求的从控制器。文中主要研究SPI 接口的时钟时序,并用具体电路实现具有4种不同极性和相位的时钟,最后通过仿真验证和FPGA 验证[2]。 1SPI 控制器典型结构 SPI 模块中的典型结构是用于通信的主从2个控制器之 间的连接,如图1所示。由串行时钟线(SPICLK )、主机输入从机输出线(SPISOMI )、主机输出从机输入线(SPISIMO )、SPI 选通线(SPISTE )4条线组成[3]。当CPU 通过译码向主控制器写入要传输的数据时,主控制器通过串行时钟线来启动数据传输,将会在串行时钟线的一个边沿将数据移出移位寄存器,而在串行时钟的另一个边沿将数据锁存在移位寄存器中。 SPI 选通线是SPI 控制器的使能端,可以选择多个从机,实现 一主多从的结构,只要SPI 选通信号将要选的从机处的选通信号变为低电平就能够连接成功。 2 全功能SPI 控制器设计 2.1 SPI 控制器内部结构 SPI 控制器的原理框图如图2所示,其中主要包括:1)SPI 控制器的内部寄存器 SPI 操作控制寄存器(SPICTL ),SPI 状态寄存器(SPISTS ), SPI 波特率设计寄存器(SPIBRR ),SPI 接收缓冲寄存器 图1 SPI 主从连接Fig.1 Master -slave link 全功能SPI 接口的设计与实现 辛晓宁,孙文强 (沈阳工业大学研究生学院,辽宁沈阳110870) 摘要:SPI (Serial Peripheral Interface ,串行外围接口)是Motorola 公司提出的外围接口协议,它采用一个串行、同步、全双工的通信方式,解决了微处理器和外设之间的串行通信问题,并且可以和多个外设直接通信,具有配置灵活,结构简单等优点。根据全功能SPI 总线的特点,设计的SPI 接口可以最大发送和接收16位数据;在主模式和从模式下SPI 模块的时钟频率最大可以达到系统时钟的1/4,并且在主模式下可以提供具有四种不同相位和极性的时钟供从模块选择;可以同时进行发送和接收操作,拥有中断标志位和溢出中断标志位。关键词:全功能SPI ;时钟极性和相位;串行通信;微处理器;中断控制中图分类号:TP332.3 文献标识码:A 文章编号:1674-6236(2012)23-0153-04 Design and implementation of full featured SPI master interface XIN Xiao -ning ,SUN Wen -qiang (Graduate School ,Shenyang University of Technology ,Shenyang 110870,China ) Abstract:The SPI put forward by Motorola Company is a full-duplex ,synchronous serial date link that is standard across many microprocessors ,microcontrollers ,and peripherals It enables communication between microprocessors and peripherals and inter -processor communication ,The SPI system is flexible enough to interface directly with numerous commercially available peripherals ,and it also has some excellences such as it can be configured flexibly and it has a simply structure ,and so on.This SPI has 16-bit transmit and receive capability.The maximum transmission rate in both slave mode and master mode is now CLKOUT/4.The SPI can provide four different clocking schemes on the SPICLK pin.It can be sending and receiving at same time.It has SPI interrupt flag and TXBUF full flag. Key words:full function of SPI ;polarity and phase of CLK ;serial communication microprocessor ;interrupt control 收稿日期:2012-08-11 稿件编号:201208039 作者简介:辛晓宁(1965—),男,辽宁沈阳人,博士,教授。研究方向:SOC 集成电路设计。 电子设计工程 Electronic Design Engineering 第20卷Vol.20第23期No.23 2012年12月Dec.2012 -153-

基于FPGA的SPI接口设计

基于FPGA的SPI接口设计 SPI是一种在FPGA和其他芯片之间传输数据的简单有效的接口方式。 SPI项目 第一部分:什么是SPI 第二部分:SPI的简单实现 第三部分:应用 第一部分:什么是SPI SPI是允许一个器件同其他一个或多个器件进行通讯的简单接口。 SPI是什么样的? 首先让我们来看看两个芯片之间的SPI接口是如何连接的。 在两个芯片时间通讯时,SPI需要4条连线。 正如你所看到的,他们是SCK、MISO、MOSI以及SSEL。其中一个芯片叫做主控芯片,另一个叫从芯片。 SPI基础 基本特点: 1.同步 2.串行 3.全双工 4.非即插即用 5.一主多从 更多细节: 1.同步时钟有主控芯片产生,每个时钟传输一位数据 2.数据在传输前,首先许要进行并转串,才能用一条线传输 3.两条数据线,一条输入、一条输出 4.主从双方有关于SPI传输的先验知识,如比特顺序、数据长度等 5.数据传输有主控芯片发起,每次只与一个从芯片通讯 SPI是一种同步全双工的通讯接口,每个时钟在两条数据线上各传输一比特数据。 简单的传输 假设在主从芯片之间进行的是8位长度的,高位数据在前的SPI传输,则单个字节的传输在波形上看起来是这样的。 MOSI是主输出线,而MISO则是从输出线。由于SPI是全双工的,所以在时钟沿上两条线同时传输数据。MOSI将数据从主控芯片传输至从芯片,MISO则将从芯片的数据传输到主控芯片。 详细的说是这样的: 1,首先主控芯片使能相应的SSEL信号,通知相应的从芯片数据传输要开始了; 2,主控芯片产生8个SPI时钟周期,并将数据在每个时钟沿发送出去,同时从芯片在也每个时钟沿将数据发送到MISO线上。 3,主控芯片撤销SSEL信号,一次SPI传输结束 多个从芯片的情况

MAX7219及单片机的SPI接口设计

串行显示驱动器PS7219及单片机的SPI接口设计 在单片机的应用系统中,为了便于人们观察和监视单片机的运行情况,常常需要用显示器显示运行的中间结果及状态等等。因此显示器往往是单片机系统必不可少的外部设备之一。常用的显示器有很多种,其中LED(发光二极管显示器)是应用较多的一种,它特别适用于强光和光线极弱的场合。 要使LED显示,必须提供段选码和位选码。传统的硬件译码显示接口广泛采用由中央处理器CPU(如:Intel 8031)扩展I/O口(如:8255),然后再使用逻辑门驱动芯片(如7407等)驱动相应的位码和段码。这种设计,芯片间连线十分复杂,系统工作可靠性不高,已越来越不适应单片机系统集成化、小型化的发展要求。特别是系统并行扩展I/O,其缺点十分明显 (1)连线太多,系统连线复杂,印制板布线不方便; (2)并行总线上挂靠的器件太多,系统工作的稳定性和可靠性低; (3)体积较大,集成度不高。 正是由于上述原因,近年来,各厂家相继开发出了集成度较高、驱动能力较强、驱动位数较多、功能齐全的LED显示驱动器。 本文介绍一种低价位、高性能的多位LED显示驱动器PS7219芯片,以及它与单片机89C51具体的SPI接口设计与应用软件。 1PS7219简介 PS7219是一种新型的串行接口的8位数字静态显示芯片。它是由武汉力源公司新推出的24脚双列直插式芯片,采用流行的同步串行外设接口(SPI),可与任何一种单片机方便接口,并可同时驱动8位LED (或64只独立LED),其引脚图如图1所示。 PS7219内部具有15×8RAM功能控制寄存器,可方便选址,对每位数字可单独控制、刷新、不需重写整个显示器。显示数字亮度可由数字进行控制,每位具有闪烁使能控制位。当引脚CON(13脚)置高电平,可禁止所有显示,达到降低功耗的效果,但同时并不影响对控制寄存器的修改。PS7219还有一个掉电模式、一个允许用户从1位数显示到8位数显示选择的扫描界限寄存器和一个强迫所有LED接通的测试模式。另外,PS7219A型内置一个可靠的uP监控电路,可为外部提供一个脉宽140ms,触发门限典型值为4.63V的高电平复位信号。 如果N个PS7219级联,可实现N×8位LED显示。 2PS7219引脚功能 PS7219引脚功能如表1所示。

SPI及其接口介绍

一、SPI接口简介 SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备FLASHRAM、网络控制器、LCD显示驱动器、A/D 转换器(如图一所示)和MCU等。 图一、ADC中的SPI 二、SPI接口 一个典型的SPI模块的核心部件是一个8位的移位寄存器和一个8位的数据寄存器SPIDR。通过SPI进行数据传送的设备有主SPI和从SPI之分,即SPI传送在一个主SPI和一个从SPI之间进行。图二给出了两个SPI模块相互连接、进行SPI传送的示意图,图左边是一个主SPI,图右边为一个从SPI。

图二、典型SPI示意图 在AN-877应用笔记中,对spi的接口定义与典型spi接口有所不同,AN-877使用一根线SDIO代替了典型SPI的MISO和MOSI,SS接口用CSB代替。图三和图四分别是双线模式下单器件控制(主从一对一)和双线模式下多器件控制(主从一对多)。 图三:主从一对一控制 图四:主从一对多控制

但是原理都一样。主从机之间一般由3个引脚组成:串行时钟引脚(SCLK)、串行数据输入/输出引脚(SDIO)、片选引脚(CSB)。 1、引脚 数据输入/输出(SDIO):该引脚用作数据的输入/输出,用作输入还是用作输出具体取决于所发送的指令(读或写)以及时序帧中的相对位置(指令周期或数据周期)。在读或写的第一个阶段,该引脚用作输入,将信息传递到内部状态机。如果该命令为读命令,状态机把该引脚(SDIO)变为输出,然后该引脚将数据回传给外部控制器。如果该命令为写命令,该引脚始终用作输入。 串行时钟(SCLK):SCLK由外部控制器提供,时钟频率最高为25MHZ。所有数据的输入输出都是与SCLK同步的。输入数据在SCLK的上升沿有效,输出数据在SCLK的下降沿有效。

串行接口SPI接口应用设计

串行接口SPI接口应用设计 2011-12-28 13:24:32| 分类:单片机| 标签:|字号大中小订阅 作者:马潮老师/ 整理:armok / 2005-01-17/ https://www.wendangku.net/doc/8510088609.html, 作者:马潮老师/ 整理:armok / 2005-01-17/ https://www.wendangku.net/doc/8510088609.html, 使用的同步串行三线SPI接口,可以方便的连接采用SPI通信协议的外围或另一片AVR单片机,实现在短距离内的高速同步通信。ATmega128的SPI采用硬件方式实现面向字节的全双工3线同步通信,支持主机、从机和2种不同极性的SPI时序,通信速率有7种选择,主机方式的最高速率为1/2系统时钟,从机方式最高速率为1/4系统时钟。 ATmega128单片机内部的SPI接口也被用于程序存储器和数据E2PROM的编程下载和上传。但特别需要注意的是,此时SPI的MOSI和MISO接口不再对应PB2、PB3引脚,而是转换到PE0、PE1引脚上(PDI、PDO),其详见第二章中关于程序存储器的串行编程和校验部分的内容。 ATmega128的SPI为硬件接口和传输完成中断申请,所以使用SPI传输数据的有效方法是采用中断方式+数据缓存器的设计方法。在对SPI初始化时,应注意以下几点: .正确选择和设置主机或从机,以及工作模式(极性),数据传输率; .注意传送字节的顺序,是低位优先(LSB First)还是高位优先(MSB Frist); .正确设置MOSI和MISO接口的输入输出方向,输入引脚使用上拉电阻,可以节省总线上的吊高电阻。 下面一段是SPI主机方式连续发送(接收)字节的例程: #define SIZE 100 unsigned char SPI_rx_buff[SIZE]; unsigned char SPI_tx_buff[SIZE]; unsigned char rx_wr_index,rx_rd_index,rx_counter,rx_buffer_overflow; unsigned char tx_wr_index,tx_rd_index,tx_counter; #pragma interrupt_handler spi_stc_isr:18 void spi_stc_isr(void) { SPI_rx_buff[rx_wr_index] = SPDR; //从ISP口读出收到的字节 if (++rx_wr_index == SIZE) rx_wr_index = 0; //放入接收缓冲区,并调整队列指针 if (++rx_counter == SIZE) { rx_counter = 0; rx_buffer_overflow = 1; } if (tx_counter) //如果发送缓冲区中有待发的数据 { --tx_counter;

基于FPGA的SPI串行外围接口接口设计毕业设计

武汉理工大学本科学生毕业设计(论文)开题报告

目录 摘要.................................................................................. I Abstract ............................................................................. II 1 绪论.. (3) 1.1课题研究背景 (3) 1.2 SPI研究目的及意义 (4) 1.3 本章小结 (4) 2 SPI原理分析 (5) 2.1 SPI介绍 (5) 2.2 SPI工作模式 (6) 2.3 SPI传输模式 (6) 2.4 SPI协议 (7) 2.5 本章小结 (8) 3 方案论证 (10) 3.1在51系列单片机系统中实现 (10) 3.2 用可编程逻辑器件设计SPI (11) 3.3 本章小结 (11) 4 SPI的电路设计 (12) 4.1 SPI设计系统的功能 (12) 4.2 SPI各部分具体实现 (12) 4.2.2 SPI系统中所用的寄存器 (13) 4.2.3 SPI速率控制 (14) 4.2.4 SPI控制状态机 (14) 4.2.5 SPI程序设计流程图 (15) 4.3 SPI仿真及开发板上调试验证分析 (16) 4.3.1 仿真分析 (16) 4.3.2开发板上调试 (18) 4.4 本章小结 (20) 5 论文总结 (21) 致谢 (22) 参考文献 (23) 附录1 (24) 附录2 (28)

摘要 随着专用集成电路(ASIC)设计技术的进步以及超大规模集成电路(VLSI)工艺技术的飞速发展,以及其价格的日益降低,采用FPGA编程的硬件电路来实现诸如SPI接口也日益切实可行,相对软件实现具有更好的优点。SPI接口是一种常用的标准接口,由于其使用简单方便且节省系统资源,很多芯片都支持该接口,SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间等等。 由于SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的,但正因为没有确切的版本协议,不同厂家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法互联(需要用软件进行必要的修改)。本文基于一种使用较为普遍的协议来进行设计,并参照Motorola公司的MC68HC11A8单片机中的SPI模块定义来设计的简化的SPI接口,用Verilog语言进行编写设计,并在ISE 软件上进行设计仿真,并在基于Xlinx公司的Spartan-3E芯片的Digilent公司出品的Nexys2开发板上用在线逻辑分析仪chipscope进行板上调试验证观察结果,并完成实现功能,并具有一些独创性的设计。 关键词:FPGA Verilog SPI协议 chipscope ISE

spi_和接口设计

SPI 接口的设计 第二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需要分成两部分:一部分为SPI 接口电路,以及其根据部寄存器存储的数据产生的控制信号;另一部分是具体的电路受控模块。本章将介绍接口与数字逻辑电路的设计,包括应用于本模数转换器的SPI 接口与数字逻辑电路的设计、综合以及仿真验证。 3.1 数据通信接口 3.1.1 串行通信 基本的通信方式有两种:并行通信和串行通信。并行通信是指数据以成组的方式,在多条并行信道上同时进行传输。 串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位的先后顺序进行传送。接收数据时,每次从单根线上按位接收信息,再把它们拼成一个字符,送给CPU( Central Processing Unit )做进一步的处理。收发双 方必须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同的一个一个字符。串行通信只需要一条传输信道,易于实现,是目前主要采用的一种通信方式,它具有通信线少以及传送距离远等优点。 串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方式。 ( 1 )单工( Simplex ):数据线仅能向一个方向传输数据,两个设备进行通信时,一边只能发送数据,另一边只能接收数据。 ( 2 )半双工( Half Duplex ):数据可在两个设备间向任一个方向传输,但因为只有一根传输线,故同一时间只能向一个方向传输数据,不能同时收发。 ( 3 )全双工( Full Duplex ):对数据的两个传输方向采用不同的通路,可以同时发送和接收数据, 串行通信有两种基本工作方式:异步方式和同步方式。采用异步方式 ( Asynchronous )时,数据发送的格式如图3-1 所示。不发送数据时,数据信号线呈现高电平,处于空闲状态。当有数据要发送时,数据信号线变成低电平,并持续一位的时间,用于表示字符的开始,称为起始位。起始位之后,在信号线上依次出现待发送的每一位字符数据,最低有效位D0 最先出现。采用不同的编 码方案,待发送的每个字符的位数就不同。当字符用ASCII 码表示时,数据位占7 位( D0 ~ D6 )。在数据位的后面有一个奇偶校验位,其后有停止位,用于指示字符的结束。停止位可以是一位也可以是一位半或两位。可见,用异步方式发送一个7 位的ASCII 码字符时,实际需发送10 位、10.5 位或11 位信息。如

SPI接口及应用

SPI接口及应用 摘要:为解决I/O口数据传输的速率问题,提出SPI接口的单线应用方案,分析该方法的可行性,并在单片机ADuC812与射频无线通信模块nRF2401间的接口设计中得到了应用,验证该方案的有效性。该方案具有电路设计简单、数据传输速率高等优点。 1 SPI通信 SPI接口的全称 "Serial Peripheral Interface" 意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI接口一种同步串行外设接口,有信号线少、协议简单、传输速度快的特点,因此有不少外围器件都采用SPI总线,如Flash RAM、A/ D转换器、LED显示器、MCU以及计算机网络等。 MCU中的SPI接口通过配置可与各个厂家生产的多种标准外围器件直接连接。 SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。 SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号: (1)MOSI -主器件数据输出,从器件数据输入 (2)MISO -主器件数据输入,从器件数据输出 (3)SCLK -时钟信号,由主器件产生 (4)/SS -从器件使能信号,由主器件控制 SPI信号线:一般的SPI接口使用4条信号线与外围设备接口,其具体功能如下: SCLOCK:主机的时钟线,为数据的发送和接收提供同步时钟信号。每一位数据的传输都需要1次时钟作用,因而发送或接收1个字节的数据都需要8个时钟作用。主机的时钟可以通过固件进行设置,并和从机的时钟线相连。 MISO:主机输入/从机输出数据线。主机的MOSO应与从机的发送数据端相连,进行高位在前的数据交换。 SS:低电平有效的从机选择线。当该线置低时,才能跟从机进行通信。 SPI工作模式:SPI的工作模式分为:主模式和从模式。 主模式的特点是不论发送还是接收始终有SCLOCK信号,SS信号不是必需的,由于SPI只能有一个主机,因而不存在主机的选择问题。 从模式的特点是无论发送还是接收必须在时钟信号SCLOCK的作用下才能进行,并且SS信号必须有效。 不论是在主模式下还是在从模式下,都要在时钟极性和时钟相位的配合下才能有效的完

相关文档