基于SPI的双DSP通信协议研究

时间:2022-08-16 04:54:35

基于SPI的双DSP通信协议研究

【摘要】提出了改进型SPI(Serial Peripheral interface,串行设备接口)协议,在标准SPI协议的基础上,增加了SPI从机主动发起通信的功能,并能指示数据/指令传输,设计了可靠的“帧”格式,帧带有序号和CRC校验,具有完善的出错重传机制。基于该SPI接口协议,设计了TMS320DM642和TMS320C6747之间的SPI通信接口,给出了接口电路设计和工作流程,并应用到课题组设计的水声通信机中。

【关键词】SPI协议;双DSP通信;TMS320DM642;TMS320C6747

1.引言

在水声通信机的设计中,经常是由一个处理器进行唤醒检测、AGC(自动增益控制)、A/D(模拟-数字转换)、D/A(数字-模拟转换)等工作。另外一个处理器负责信号调制、解调、纠错编码/解码等复杂计算。在我们的水声通信机设计中,前端采用低功耗的TMS320C6747浮点DSP,进行数据预处理;后端采用高性能的TMS320DM642定点DSP,进行复杂计算。这就需要双DSP分工协作,共同完成系统整机的功能。不可避免的,将涉及到双DSP之间大量的指令和数据交互操作。我们希望采用灵活的架构,简洁的接口连线,简单的控制协议,实现高可靠和高效率的指令与数据双向传输,通过大量的实验,我们最终选择了SPI协议,并对典型的SPI协议进行了改进。典型的水声通信机的架构如图1所示。

图1 典型水声通信机的架构

在我们的设计中,“处理器A”选用了低功耗的TMS320C6747浮点DSP,“处理器B”选用了高性能的TMS320DM642定点DSP。在实际系统中,根据水声通信机的不同工作频段和运算能力要求,处理器A也可选择FPGA/CPLD或者低功耗单片机;处理器B也可选择不同运算能力的DSP、ARM或者FPGA。

2.SPI协议

SPI(Serial Peripheral Interface,串行设备接口)是Motorola公司于2000年提出的一种串行接口协议。该接口占用硬件资源少,通信协议简单,具有同步时钟,通信速率较高,分主设备和从设备,特别适合处理器与设备之间交换数据,在EEPROM(非易失存储器)、串行A/D(模拟-数字转换器)、串行D/A(数字-模拟转换器)、实时时钟等嵌入式系统中得到了广泛的应用。

SPI协议的原理很简单,它以主从方式工作,这种模式需要有一个主设备和一个或多个从设备。典型的SPI协议定义了4线接口,这也是所有基于SPI的设备共有的,分别是SIMO(从机输入、主机输出),SOMI(从机输出、主机输入),SCK(时钟)和CS(片选)。根据系统的不同需求,SPI接口也可以采用3线(数据单向传输)或5线等不同方式,以实现不同的功能。采用4线制SPI接口时,接口示意图如图2所示。

从图2可知,所有的控制信号均由SPI主设备提供,SPI从设备只能在被查询时才能与主设备建立通信。这种限制在处理器与设备通信时影响不大,但应用在双处理器对等双向通信时就有问题,作为从机的处理器无法主动发起通信,与主机交换数据。

在我们设计的水声通信机中,双DSP之间需要对等双向通信,无论哪一方都能发起通信,因此需要对典型的SPI通信协议进行修改,使得从机也能主动发起通信。这需要修改硬件接口设计,增加额外的信号线来实现。

SPI协议没有定义握手机制,在进行双向高速率的可靠通信时,需要从硬件和软件两方面设计握手机制。同时,SPI协议也没有定义“指令”和“数据”传输标识,需要由软件来解析。为了解决上述问题,我们对SPI通信接口进行了改进,主要包括硬件接口设计和软件协议设计两部分。

3.系统硬件接口设计

硬件接口方面,在标准4线SPI协议的基础上,增加ENAn、RSm和RSs三根控制线,分别代表从机请求主机通信、主机发给从机指令/数据指示、从机发给主机指令/数据指示。其控制思路如下:

当TMS320C6747(SPI主机)有指令/数据发给TMS320DM642(SPI从机)时,先设置RSm为某电平(约定高电平代表指令,低电平代表数据),然后发起通信,DM642的SPI模块配置位从动模式,其底层硬件逻辑将自动检测接收,并通知DM642进行后续接收/发送处理。

ENAn信号线平时为低电平,当DM642有指令/数据要传递给C6747时,先设置RSs电平(指示将指令/数据传输),然后设置ENAn信号线为高电平,C6747检测到ENAn信号线电平的变化时,主动发起与DM642的通信。

我们设计的改进型SPI接口示意图如图3所示,图3中左侧虚线框内的部分为TMS320DM642芯片内集成的McBSP0接口,配置为4线SPI从动工作模式;图3中右侧虚线框内的部分为TMS320C6747芯片内集成的SPI1接口,配置为4线SPI主控模式,其中SPI1_ENAn由GPIO引脚控制。

图2 典型的4线制SPI接口连接图

图3 TMS320DM642(SPI从);TMS320C6747(SPI主)

经过如此改进之后,TMS320C6747(主机)和TMS320DM642(从机)之间能进行高速率的全双工数据与指令的交互。

4.系统软件设计

硬件接口设计为实现SPI高速率传输创造了通道,但难以保证数据传输的可靠性和有效性。为此,我们设计了SPI主机(TMS320C6747)和SPI从机(TMS320DM642)通信的软件协议。

为了能进行指令和大容量数据传输,并且易于对接收到的SPI数据进行实时解析,为“指令”和“数据”设计了不同的“帧”结构。

进行指令传输时,固定每个数据包的长度,由“0x55AA”指示一个指令帧的开始,之后跟着帧序号,每次成功传输一帧后,帧序号增1,接下来是本机在前次握手通信时收到的帧序号,方便对方据此判断前次指令是否被成功接收。

序号之后是20个指令字,最后是CRC校验字段,接收端对前23个字进行CRC校验,如果与接收到的CRC不同,则重新请求该指令序号;如果与接收到的CRC相同,则解析该指令。如果接收端收到的帧序号不连续,则表明两个序号之间的部分指令出错,根据需要可请求重发;如接收端收到的对方“已接收序号”和之前发送的不同,也能识别出通信出错。

在进行数据传输时,由“0x55A5”指示一个数据帧的开始,在帧序号之后是数据区的长度,接下来是数据区,最后是CRC校验。指令帧和数据帧的序号分别编号,与传输“指令帧”同样的机制,如果CRC出错也可以请求重传。连续的数据区便于接收端和发送端启用EDMA模式,极大提高传输大量数据的效率。

构建的“帧”结构如下表所示。

“指令”帧格式:

0x55AA 序号 已接收序号 指令1 指令2 …… 指令20 CRC

“数据”帧格式:

0x55A5 序号 数据长度 数据…… CRC

采用上述协议后,有效地保障了SPI主机和从机之间双向、可靠、高速、稳定的指令和数据传输。

5.结论

在我们设计的水声通信机中,采用了上述改进型SPI接口协议,TMS320C6747和TMS320DM642最小系统板之间以SPI接口进行板间连接,采用非屏蔽杜邦排线,长度大约10cm,实际测试表明,SPI时钟速率在8.6 MHz时可稳定进行指令和数据的全双工通信。由于通过SPI接口传输一个字节最少需要8个时钟,加上发送端准备数据、接收端解析并处理数据的开销等,实际测试能以800kB/s稳定通信。

参考文献

[1]http://.cn/cn/lit/ds/symlink/tms320c6747.pdf

[2]http://.cn/cn/lit/ds/symlink/tms320dm642.pdf

[3]张岩,马旭东,张云帆.ARM与DSP的SPI通信设计实现[J].工业控制计算机,2008,21(9):56-57.

[4]高振,罗秋凤.SPI接口与CRC算法在双DSP数据通信中的应用[J].电子产品世界,2011(1-2):46-48.

[5]梁德坚,刘玉琼.SPI总线数据远距离传输实现[J].电子测试,2009(1):72-75.

[6]赵,张楚.多媒体处理器中的SPI接口设计[J].电子测量技术,2007(6):126-129.

[7]任宇飞,张相,程乃平.一种透明传输的双向SPI接口的设计与实现[J].电视技术,2009,49(2):51-54.

基金项目:福建省自然科学基金(项目编号:2013J01253);中央高校基本科研业务费专项资金资助(项目编号:2010121062);国家自然科学基金(项目编号:61301098)资助。

作者简介:

解永军(1978―),男,工程师,主要研究方向:单片机与嵌入式系统,水声通信技术。

许芳【通信作者】(1971―),女,高级工程师,主要研究方向:水声通信网络物理层技术,无线多载波通信技术,通信系统接收端信号处理技术。

王德清(1979―),男,助理教授,主要研究方向:水声通信,水声网络,智能电子系统。

上一篇:关于远程抄表系统中通信技术的应用探究 下一篇:有关移动互联网终端技术分析