由于该超声波电机需要采用两相四路对称PWM信号来实现驱动控制,而DSP芯片无法直接产生所需PWM信号,采用软件方法又会占用大量的DSP计算时间,于是设计了基于可编程逻辑器件(CPLD)的对称PWM信号发生器。该信号发生器在DSP的控制下,可以实现输出两相PWM控制信号的占空比及相位差调节;同时采用具有SPI接口的可编程振荡器LTC6903,实现在DSP控制下的PWM控制信号频率调节。由此可见,为了实现DSP对PWM控制信号占空比、相位差及频率的控制,需要采用适当的通信方式实现DSP与CPLD及LTC6903之间的控制信息传递。DSP56F801芯片具有一个SPI通信端口。本文在分析SPI数据传输时序关系的基础上,设计并实现了基于CPLD的多SPI接口通信。
SPI是一个同步协议接口,所有的传输都参照一个共同的时钟。在同一个SPI端口可以实现一个主机芯片与多个从机芯片的相连,这时主机通过触发从设备的片选输入引脚来选择从设备,没有被选中的从设备将不参与SPI传输。由于不需要从机向主机回送任何数据,主机在数据传输结束之后,结束这次传送。由于SPI端口工作时没有应答信号,并且数据在发送时无需校验位,所以要求主、从器件的数据发送与接收必须完全符合设定的SPI时序要求,否则数据传输将出现错误。
为保证时序正确,测出了使能信号和计数器进位脉冲的输出时序,如图3、图4所示。其中十六进制计数器采用的是上升沿计数,在第16个上升沿到来时,跳变为高电平,保证数据的正确接收锁存。
由于LTC6903芯片本身具有SPI接口,需要在DSP的程序中设置相应的SPI寄存器。LTC6903采用上升沿接收,且接收时高位在前,所以需要DSP设置为下降沿传输,传输时高位在前。在传输的过程中,在脉冲信号的下降沿数据发生变化,传输数据;在脉冲信号的上升沿数据稳定,便于LTC6903锁存数据。所要传输的数据是十六进制数019A,下降沿数据发生变化,上升沿数据稳定,传输16位数据,有16个脉冲。实验结果表明,DSP配置是与LTC6903的SPI接口工作时序相匹配的。
当DSP56F801输出的十六进制参数分别为频率字DBOE,相位字0403,A相的占空比字04CE,B相的占空比字04CD时。信号占空比调节为20%,两相信号相位差调节为常用的90°。该实验结果表明,参数传输正确,波形输出良好。SPI通信方式具有硬件连接简单、使用方便等优点,应用广泛。采取硬件和软件相结合的措施,可以确保SPI通信中数据流的同步,实现可靠通信。本文给出了DSP多SPI端口通信的设计与实现过程,讨论了其中的关键技术问题。SPI多端口通信方法基于CPLD实现,易移植,易于实现功能扩展,可广泛应用于各种采用SPI通信方式的自动化装置。