本文根据笔者在工程应用和调试TIDSPTMS320C5402与NECuPD780308单片机通信的经验,着重介绍并讨论通过将C5402 DSP的多通道缓冲串行口McBSP(Multi-channel Buffered Serial Port)配置为SPI模式(即时钟停止模式),实现DSP与其它单片处理器通信,并给出部分程序代码,供读者们参考。
2 多通道缓冲串行口McBSP
多通道缓冲串行口McBSP的功能是提供器件内外数据串行交换。同以前的串口相比,McBSP串口具有相当大的灵活性。表1给出了有关VC5402的McBSP管脚的说明。其中串口接收、发送时钟和同步帧信号,既可由外部设备提供,又可由内部时钟发生器提供,大大地提高了通信的灵活性。
3 SPI协议:McBSP时钟停止模式
SPI协议是以主从方式工作的,有一个主设备和一个或多个从设备,接口包括以下4个信号:串行数据输入(也称为主进从出,或MISO);串行数据输出(也称为主出从进,或MOSI);串行移位时钟(也称为SCK);从使能信号(也称为SS)。
图1为设备接口示意图。
主设备通过提供移位时钟和从使能信号来控制信息的流动,从使能信号是一个可选的高低电平,它激活从设备(在没有时钟提供的情况下)的串行输入和输出。在没有专门的从使能信号的情况下,主从设备之间的通信则由移位时钟的有无来决定,在这种连接方式下,从设备必须自始至终保持激活状态,而且从设备只能是一个,不能为多个。
DSPVC5402提供的时钟停止模式则可用于SPI协议通信中,当McBSP被配置为时钟停止模式时,发送器和接收器是内部同步的,即可将McBSP配置为一个SPI主或从设备。其中,可将发送数据帧时钟(FSX)用作从使能(即SS),而发送数据位时钟(CLKX)则用作SPI协议中的SCK,由于接收数据位时钟(CLKR)和接收数据帧时钟(FSR)在内部与FSX和CLKX是相连的,所以该管脚不用于SPI模式。
当McBSP被配置作为一个主设备,传送输出信号(BDX)被用作SPI协议的MOSI信号,接收输入信号(BDR)就被用作MISO信号。图2所示为McBSP用作主设备的SPI接口。
同样地,当McBSP被配置作为一个从设备,BDX就被用作了MISO信号,BDR就被用作了MOSI信号。图3所示为McBSP用作从设备的SPI接口。
DSPVC5402的McBSP被用于时钟停止模式时,寄存器SPCR1的CLKSTP位域和引脚配置寄存器的CLKXP位的配置见表2。
4 McBSP作为SPI设备时的其它有关寄存器的配置
为了能使读者更好地掌握和了解当McBSP作为SPI设备时的有关寄存器配置,笔者将以McBSP作为SPI从设备运行为例,给读者介绍有关McBSP的其它有关寄存器的配置,若McBSP作为SPI主设备,则相关配置相反即可。
当McBSP作为SPI从设备时,主设备外部产生主时钟。CLKX引脚和FSX引脚必须被设置为输入。CLKX引脚和CLKR信号内部连接,从而传送和接收回路均由外部主时钟计时(CLKX)。同时,FSX引脚和FSR信号内部连接,CLKR引脚和FSR引脚不再需要外部信号连接。将McBSP用作从设备的SPI接口的例子如图3所示。
尽管CLKX信号由主设备外部产生且与McBSP同步,McBSP的采样率发生器必须可以启动正确的SPI从设备运行。采样率发生器应被编为它的最大速率(CPU时钟速率的一半)。内部采样率时钟被用来同步McBSP逻辑和外部主时钟及从使能信号。每次传送,McBSP需要FSX输入的从使能信号的上升沿。这就是说,在每次传送的开始,主设备必须维护从使能信号,在每次传送完成后,消除从使能信号。在两次传送之间,从使能信号不能一直保持为高电平。对正确的SPI从设备运行而言,McBSP的数据延迟参数必须设置为0,在这种运行模式中,值1或2没有定义。配置McBSP为从设备所需的寄存器位值列在表3中。
5 程序设计
下面是有关C5402的McBSP各个控制寄存器的配置,笔者在实践中已经测试过了,并且运用在了工程中,供读者们参考。
6 结束语
文中所介绍的串行SPI通信协议,是一种标准的通信协议,在很多场合下,很多芯片采用的正是这种机制,文中举例将DSP作为从设备,目的是时钟可由主设备来提供,不用再专门去调试时钟,这为开发提供了很大的方便。