ARM与DSP的SPI通信设计实现.docx
- 文档编号:10460598
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:10
- 大小:21.08KB
ARM与DSP的SPI通信设计实现.docx
《ARM与DSP的SPI通信设计实现.docx》由会员分享,可在线阅读,更多相关《ARM与DSP的SPI通信设计实现.docx(10页珍藏版)》请在冰豆网上搜索。
ARM与DSP的SPI通信设计实现
56
ARM与DSP的SPI通信设计实现
ARM与DSP的SPI通信设计实现
CommunicationBetweenARMandDSPThroughSPIBus
张
岩
马旭东
张云帆(东南大学自动化学院,江苏南京210096)
摘
要
提出一种测量仪器的多处理机分布式控制方案,并对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为管理核心。
而如何保证两者之间高效的数据传送便成为一个至关重要的问题。
就被交换了。
如果只是进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来引发从机的传输。
还有一根nSS,为从选信号线,可以用于使能从机输出,是可选的;若使用nSS,如本系统中,必须保证
nSS在上电时为高电平,否则在上电后,从机将首先收到一个伪
数据。
根据MOSI和MISO在SPICLK的哪个时钟极性和时钟相位上有效,SPI可分为4种工作时序,而S3C2410与DSP2812对这四种时钟模式都可支持,因此只要任选一种即可,但必须保证它们之间的一致。
这里约定使用无相位延时的下降沿的SPI时序。
ARM通过发出SPICLK信号来启动数据传输,SPICLK为高电平时有效,在SPICLK信号的下降沿发送数据,在SPICLK信号的上升沿接收数据。
ARM与DSP能够同时发送和接收数据,应用软件判定数据的真伪。
其时序图如图2所示。
SPI(SerialParallelInterface)总线是Motorola公司提出
的一种同步串行外设接口协议总线。
它具有标准的传输协议,占用接口线少,传输效率高,且为本系统所采用的两种芯片所支持,故而是一种较为理想的设计方案。
1系统硬件结构
本系统中,通信是由仪器使用者通过人机交互界面操作仪
器发起的,故将管理核心ARM设置为主机,将控制核心DSP设置为从机。
其硬件结构如图1所示。
图2无相位延时的下降沿的SPI时序
2
图1
系统软件设计
系统软件设计的主要任务有:
由于在ARM上移植了Linux
ARM与DSP的SPI通信接口
一般情况下,实现SPI接口需要3~4根线。
SPI是一个同步协议接口,所有的传输都参照一个共同的时钟CLOCK,这个同步时钟信号由主机产生,从机使用时钟来对串行比特流的接收进行同步化。
主机和从机都包含一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。
寄存器是通过MOSI(主输出从输入数据线)信号线将字节传送给从机,从机也将自己移位寄存器中的内容通过MISO(主输入从输出数据线)信号线返回给主机,这样,两个移位寄存器中的内容
操作系统,要在用户空间正确使用SPI设备,首先要在内核空间编写相应的设备驱动程序;另外要在用户空间编写应用程序以完成ARM上的数据收发流程,DSP上的数据收发。
在ARM端,S3C2410芯片内SPI接口支持查询、中断与
DMA三种传输模式。
若采用中断模式,接收到一个字节的数据
即中断一次,而本系统中数据量较大,因此效率较低;若采用
DMA方式实现,则增加了驱动程序开发的难度。
这里选择采用
查询方式接收数据。
《工业控制计算机》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的相关标志位,如果状态指
示字节数据已发出或者发送超时,则返回。
关键代码如下:
57
图3
SPI
数据发送流程图
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页)
图4
ARM端收发数据流程图
66
IRQ和非向量IRQ,不同外设的中断优先级可以动态分配并调整。
系统将中断请求分配给非向量IRQ,响应过程为:
当发生IRQ中断时,首先保存任务环境,然后中断控制器(VIC)将所有
相或”向LPC2131产生IRQ信号,借着调用异常处IRQ中断“
理程序,处理结束后关闭中断,最后恢复现场、返回。
图4
基于嵌入式技术的分布式测控系统研究与应用
局部管理单元与电能管理终端间RS485通信转换过程
表2
2.4系统各部分间通信
2.4.1系统握手方式
系统的通信总体上采用自上而下的主从方式,即远程上位机与局部管理单元之间的通信始终由远程上位机发起,局部管理单元与电能管理终端之间始终由局部管理单元发起。
具体方式为:
发起通信的一方先发出功能命令,应答方作出回应。
若无应答或错误应答则发起方重新发送命令,直到收到正确应答或者重发次数达到最大重发次数则视为此次通信失败。
由于系统采取分级的分布式结构,一个局部管理单元下可带多达上百个电能管理终端,而每个电能管理终端可最多管理
RS485通信帧格式
16块电表,因此地址域有3个
字节。
在应用中用位域掩码代替具体的电表号,目的是减少通信的流量,提高通信效率,更方便于今后电表的维护更新。
2.4.2远程上位机与局部管理单元间以太网通信
局部管理单元与远程上位机之间采用以太网通信,并采用自定义的通信协议,格式如表1所示。
表1以太网通信帧格式
3结束语
本文所设计的基于ARM处理器的分布式智能电能管理系
统,采用分级结构,具有良好的智能性与可扩展性,并且数据采集可靠、通信稳定。
该系统已开始应用于实际智能小区的建设。
本系统是较为典型的分级分布式智能测控系统,不仅对智能电能管理,而且对于智能楼宇、电机控制、车间控制、流量监控等生产生活的很多领域的开发具有良好的启示作用。
可对系统的结构及功能进行适当调整以适应不同的应用场合,具有很强的灵活性和可扩展性。
其中,同步头为字符“,数据与长度根据不同情况有所@”不同,检验域校验的范围包括命令域与数据域的长度,信息包长度指命令域长度、数据与长度、校验域长度三者的总和。
参考文献
[1]魏忠,等著.嵌入式开发详解[M].北京:
电子工业出版社,2003[2]孙秋野,等著.ARM嵌入式系统开发典型模块[M].北京:
人民邮电出
版社,2007
[3]周立功,等著.深入浅出ARM7—LPC213X/214X(上)[M].北京:
北
京航空航天大学出版社,2005
[4]2003年全国单片机及嵌入式系统学术年会论文集[C].北京:
北京航
空航天大学出版社,2003
[5]ElectronicsSamsung.S3C2410X32-BitRISCMicroprocessor
2.4.3局部管理单元与电能管理终端间RS485通信
局部管理单元与电能管理终端之间采用RS485通信,系统首先需要将微处理器SCI出来TTL电平转换为RS232电平,再在通过外部装换模块将RS232电平转换为RS485电平,从而与电能管理终端进行通信,基本过程如图4所示。
由于RS485总线只规定了相应的物理层协议,并没有定义上层协议,因此系统中采用自定义的数据格式和协议,如表2所示。
User'sManual(Revision1.2).2003
[收稿日期:
2008.4.15]
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
(上接第57页)
断正确,则该字节数据为有效数据,储存于缓冲区中,并将spi_i做加1处理。
否则结束中断处理程序。
DSP端整个接收流程如图5所示。
收到一个字节数据就触发一次中断处理程序。
在中断处理程序中可利用一个全局变量spi_St,用来标记当前接收字节所表示的状态;开通一个数据缓冲区,用来存放有效数据;利用一个全局变量spi_i,用来标记已获得有效数据数目。
具体处理时,
根据
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]
图5
spi_St值的不同,来判读所
接收数据是否为有效数据。
例如当spi_St为0时,判断当前接收字节是否为同步;再例如当spi_St为2时,判断当前接收字节是命令帧头还是数据帧头等等。
若判
DSP接收数据流程图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM DSP SPI 通信 设计 实现