摘 要 多SPI端口通信是一种小型的高速同步通信网络。这种网络结构简单、成本较低,广泛应用于控制器与控制器、控制器与外围芯片之间的通信;但由于时序复杂,高频脉冲传输数据容易出错。本文在对SPI端口信号时序分析的基础上,给出该网络基于CPLD的具体实现方法。经实验验证,效果良好。
关键词 SPI 复杂可编程逻辑器件 通信DSP
引 言
目前在电气自动化控制装置中,广泛采用各种通信手段以完成上层与底层控制器、底层控制器以及控制芯片之问的信息传递,并实现相应的控制功能;各种通信功能的设计与实现已成为自动化装置设计的重要组成部分。本文以一种超声波电机运动控制装置为应用背景,讨论了基于CPLD的DSP控制芯片多SPI端口通信技术。
串行同步外设端口(SPI)通常也称为同步外设端口,具有信号线少、协议简单、传输速度快的特点,大量用在微控制器与外围芯片的通信中。目前SPI通信方式已被普遍接受,带有SPI端口的芯片越来越多,如Flash、RAM、A/D转换、LED显示、控制专用DSP芯片等。
本文介绍一种采用运动控制专用DSP芯片DSP56F801设计的超声波电机运动控制装置。由于该超声波电机需要采用两相四路对称PWM信号来实现驱动控制,而DSP芯片无法直接产生所需PWM信号,采用软件方法又会占用大量的DSP计算时间,于是设计了基于可编程逻辑器件(CPLD)的对称PWM信号发生器。该信号发生器在DSP的控制下,可以实现输出两相PWM控制信号的占空比及相位差调节;同时采用具有SPI接口的可编程振荡器LTC6903,实现在DSP控制下的PWM控制信号频率调节。由此可见,为了实现DSP对PWM控制信号占空比、相位差及频率的控制,需要采用适当的通信方式实现DSP与CPLD及LTC6903之间的控制信息传递。DSP56F801芯片具有一个SPI通信端口。本文在分析SPI数据传输时序关系的基础上,设计并实现了基于CPLD的多SPI接口通信。
1 工作原理
SPI是一个同步协议接口,所有的传输都参照一个共同的时钟。在同一个SPI端口可以实现一个主机芯片与多个从机芯片的相连,这时主机通过触发从设备的片选输入引脚来选择从设备,没有被选中的从设备将不参与SPI传输。SPI主使用4个信号:主机输出/从机输入(MOSI)、主机输入/从机输出(MISO)、串行时钟信号SCLK和外设芯片选择信号(SS)。主机和外设都包含一个串行移位寄存器,主机通过向它的SPI串行移位寄存器写入一个字节来发起一次传输。寄存器是通过MOSI引脚将字节传送给从设备,从设备也将自己移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换了。外设的写操作和读操作是同步完成的,因此SPI成为一个很有效的串行通信协议。SPI端口的通信网络结构框图如图1所示。为了使信号发生器输出可调频、调压和调相输出的两相四路PWM波,需要DSP向CPLD电路输出参数。这4个控制参数的传递是在小型的通信网络中实现的。在该网络中,DSP的SPI只是进行数据输出端口的写操作,即输出电压控制字、相位控制字和频率控制字。数据流程:主机DSP向CPLD传输数据,在传输数据时,数据在MOSI引脚上输出,同时数据在时钟信号的作用下实现同步移位输出。由于不需要从机向主机回送任何数据,主机在数据传输结束之后,结束这次传送。由于SPI端口工作时没有应答信号,并且数据在发送时无需校验位,所以要求主、从器件的数据发送与接收必须完全符合设定的SPI时序要求,否则数据传输将出现错误。
2 基于CPLD的串口SPI设计
2.1 移位寄存器设计
本设计为一个12位的SPI串行接收端口。图1中移位寄存器是由12个D触发器和1个计数器组成的,实现移位接收和串并转换。在传输过程中,先使能移位寄存器和计数器,启动传输,同时计数器开始计数。当计数到16时,进位端输出一个脉冲宽度的高电平脉冲,进行数据锁存,其电路如图2所示。