采用SPI接口实现双DSP双向通信和同步
制器此次传输的类型以及数据的长度。当传输完7个数据后,进行中断接收,先判断第一个字的奇偶校验位,如果错误则进行软件复位,重新接收并判断;若正确则对数据长度和数据类型进行检验,按照规定的数据长度和数据类型读取到特定的变量中,如果此次接收的数据类型没有和规定数据类型对应上,也认为数据传输错误,进行软件复位,重新接收并判断。主从都采取中断接收数据,主控制器采取主动发送,而从控制器是在产生中断后,在中断服务子程序里先读取数据然后发送特定数据,主从的接收模式判断完全一样。通信过程中,有时需要从控制器主动发送一组数据,需要主控制器为从控制器提供时钟和使能信号,从控制器才可以发送数据,运用主控制器发送伪数据的方式可以解决这个问题。在软件协议中,规定SPI第一个字(包头)全零(0X0000)为伪数据,当包头接收到伪数据时,不判断奇偶校验、数据长度和数据类型,直接丢弃。
3.3 通信故障处理方案
实际应用系统,SPI的通信环境复杂,可能会影响SPI的传输,由于SPI 是一个串行数据的传输,一旦出现故障如果不加以排除就会影响到以后的数据传输,因此这个问题必须加以解决。这个方案中,根据奇偶校验和数据类型的判断可以发现SPI 通信是否出现故障,若判断发现故障后要对故障进行消除和隔离,以免影响以后数据传输。
软件可以实现故障消除和隔离,采用SPI的软件复位功能,可以在判断错误后,先进行复位然后使能,可以通过设置SPI FIFO发送缓冲寄存器SPIFFTX中的SPIRST位进行设置,写0时复位SPI的发送和接收通道,但FIFO寄存器的配置保持不变,写1时,SPI FIFO恢复发送和接收通道,不影响SPI寄存器配置。
4 实验结果
本方案中,DSP的主频为120 MHz,采用SPI的低速时钟30 MHz,数据的传输速率配置为7.5 Mb/s。测试结果表明,SPI能很好地满足两片DSP之间的高速通信。在实际的测试应用中发现,在正常情况下,SPI通信正常,没有通信错误发生;但在外界的某些干扰下,就会出现通信错误,例如在DSP实际应用系统中,用到DSP控制电机,当电机换向运行或转速比较高时就会影响SPI的传输,会出现数据传输错误,这时需进行软件复位。选择7.5 Mb/s的通信速率是进行多次对比设置的,如果速率低,出现错误的概率就大,系统不稳;若速率过快,会影响数据传输,丢失数据。
SPI接口实现简单、I/O资源占用少、传输速度快[5-6],从软硬件方面解决了实际应用系统中的SPI双向数据传输、任务同步和SPI通信故障等问题,成功实现了两片DSP之间的双向通信,且用软件代替硬件实现了任务同步,还对SPI通信故障提出解决方案。可运用于多控制器之间的高速数据传输和同步。
参考文献
[1] 宋晔,蔡慧,赵荣祥,等.采用SPI接口实现TMS320F240 DSP之间的通信[J].机电工程,2005,22(5):31-33.
[2] TMS320F2810,TMS320F2812 digital signal processors data manual[Z],2003.
[3] TMS320F28x DSP serial peripheral interface(SPI) reference guide[Z],2003.
[4] 梁永明,罗汉文,黄建国,等.DSP嵌入式系统中SPI协议的一种实现方法[J].电子技术,2004,31(11):15-17.
[5] 毛建权,季晓勇.基于SPI的DSP与MCU双向通信的设计与实现[J].科学技术与工程,2007,7(15):3191-3193.
[6] 孙丽明.TMS320F2812原理及其C语言程序开发[M].北京:清华大学出版社,2008.
- 基于TMS320F2812的SPI接口设计方案(12-19)
- SST25VF080B SPI接口FLASH STM32驱动(12-03)
- STC51单片机SPI接口单主单从模式通信-汇编语言(11-30)
- MSP430 SPI接口(模式)通信(11-25)
- 基于FPGA的可复用SPI接口设计(01-11)
- SPI接口基础上的各种串行通信工作方式配置及驱动编程(10-10)