电机控制经历了从模拟控制到以MCU(单片机)为主的模数混合控制再到全数字控制的演变。随着电机应用领域的更加广泛和深入,完成电机控制的运算也越来越复杂,而实时性的要求在很多场合却越来越高。这样,以DSP(数字信号处理器)加MCU的控制模式便应运而生。当前,系统设计及更新换代的周期越来越短,而系统的低造价和高可靠性却一直是人们的共同追求,片上系统(SoC)设计便是在此背景下应运而生的电子设计潮流。于是,TI、ADI、Infineon等公司相继推出了面向控制系统设计的DSP芯片。Motorola则更是不甘示弱,其DSP56F80x系列无论是从DSP的运算性能还是从MCU的控制性能来说都表现出了卓越的品质,实际上,该系列的DSP可以说是集成了MCU和DSP功能的一体化设计芯片。
1 DSP56F80x系列DSP
DSP56F80x系列DSP(以下简称 '80x)包括DSP56F801、3、5、7,2003年初,Motorola在该系列中又新增了一个片种DSP56F802。'80x集成了Motorola的16位定点DSP微控制器内核DSP56800,而DSP56800内核的指令集面向DSP和控制领域的应用均进行了优化。DSP56800内核为双哈佛结构,共有3个并行的执行单元,分别为算逻运算单元(ALU)、地址产生单元(AGU)和程序控制单元(PCU)。每个指令周期这3个执行单元共可完成6次操作。在一个指令周期内,DSP内核即可执行一次16位×16位的乘法累加操作(MAC)。另外,DSP内核还提供了硬件循环操作。芯片内核最高可工作于80MHz,在此工作频率下,指令执行速度可达40MIPS。内核的这种高效结构和高速运算能力,为 '80x系列DSP在运算复杂、实时性较强的控制领域中的应用提供了保证。
'80x系列DSP的设计继承了SoC思想,这使得它们在嵌入式系统中的应用更加方便。该系列DSP的片内就包含了容量不等的程序和数据FLASH及RAM;而且除DSP56F801、2外,芯片可外扩程序及数据存储器各64K×16位。此外,芯片还集成了丰富的面向控制的IP(Intellectual Properties)外设,如ADC、PWM、正交解码器(Quadrature Decoder)、四定时器(Quad Timer)、看门狗(Watchdog/COP)、JTAG、通用I/O接口(GPIO)和用于通信用的CAN总线、异步串行总线SCI及同步串行总线SPI等。DSP56F801、2内部还集成有一个弛张振荡器,因而,DSP56F801、2的应用甚至于不需要外接晶体或时钟源。表1为'80x系列DSP特性列表,其中的带“*”的模块引脚共用,可通过软件选择。
'80x系列DSP的应用领域包括:电机控制,如交流感应电机、直流有刷及无刷和有传感器及无传感器电机、开关及可变磁阻电机以及步进电机等;工业控制,如工业自动化、电源控制、消噪降噪、环境控制和仪器仪表等;交通运输,如燃料管理、路灯控制、引擎控制、安全气囊等;其他如智能家电、家居安保系统、声控设备、电动玩具等等。
2 DSP56F805的内部结构、外部引脚与智能外设
从表1我们可以看出,'80x系列DSP各片种的主要区别在于各自片内集成的存储器容量和IP外设的种类和数目的不同。在此,我们以DSP56F805为例,详细介绍该芯片的内部结构、外部引脚和智能外设等。
DSP56F805的内部结构及外部引脚的功能分布如图1所示。下面对DSP56F805所集成的与电机控制密切相关的IP外设作几点简单说明。
● 共有两个分辨率为15 位的PWM模块:PWMA和PWMB,每个PWM模块都有6个PWM输出引脚、3个电流检测输入引脚和4个差错输入引脚。PWM输出波形可通过软件设置为边沿对齐或中心对齐。6路PWM输出可配置为0、1、2或3对互补输出,互补输出以外的则为相互独立的PWM输出。对于互补PWM输出对,芯片支持可编程死区电压控制和波形宽度及极性控制。
● 12位的ADC模块最高采样率可达1.66MSPS。考虑到电机控制的方便,ADC模块采用双路各4输入设计,这两路A/D变换器可被软件配置为同步或顺序采样。而且,ADC模块还可与PWM模块实现同步。
● 两个正交解码器(#0和#1)的输入引脚分别与两个四定时器A和B的引脚共用。当作为正交解码器用时,这四个引脚分别为:PHASEA、PHASEB、INDEX和HOME。正交解码器的输入引脚PHASEA和PHASEB可以外接光码盘的两相输出,用于检测电机的位置和转向。另外,这两个引脚也可分别用于单相脉冲信号的累加计数。正交解码器的内部还集成了滤波器,用于消除输入信号中的大脉冲干扰。正交解码器的位置计数器为32位,位差寄存器为16位,既可对高速电机测速,也可与通用定时器一起用于对低速电机测速。
● 四定时器模块:DSP56F805共有四个四定时器模块(A、B、C和D)。其中,四定时器A、B分别与#0及#1正交解码器共用引脚;四定时器C、D则有自己的专用引脚;四定时器C只有两个引脚,其余分别有四个引脚。每个四定时器模块均有四个16位定时/计数器,支持加法和减法计数,并可用软件配置为多种计数模式。而每个四定时器模块的外部引脚实际上是由该模块的四个定时/计数器共用,也可通过软件进行灵活分配。
● DSP56F805的GPIO口共有14个专用引脚和18个复用引脚。而且,每个GPIO引脚可独立地被软件配置为输入、输出或中断触发。当用户觉得芯片引脚不够用,或某些功能模块不需要时,我们即可通过软件编程改变或扩展芯片的功能。
另外,'80x系列DSP总共可以支持7优先级64个中断源,而且,中断系统的反应性能优越。这对于'80x系列DSP在复杂系统中的应用提供了强有力的支持。
3 DSP56F80x的开发方法
为了缩短开发周期,节约成本,无论是从硬件上还是软件上,Motorola均为'80x系列DSP提供了一整套的开发支持工具。
首先,在硬件上来说,Motorola已为DSP56F801、3、5和7开发了评估板(EVM)。这些EVM对于初学者熟悉'80x系列DSP来说不失为一种很好的工具。而对于开发者来说,在产品研发的初期,EVM则提供了良好的软硬件开发的实时环境。EVM的本身已为相应DSP作了外围扩展,而且也为用户的扩展留有足够的接口。由于’80x是Motorola推出的面向电机控制的DSP系列;所以,除了EVM以外,Motorola还为用户准备了电机控制用的硬件开发套件。如评估电机板EMB(Evaluation Motor Board),它为电机控制提供了12V、4A的功率级和一些电机控制连接件。另外还有3相交流/直流无刷高压/低压功率级、光隔离板等等。
事实上,根据我们的开发经验,用户可以按照自己的实际需求,非常方便地制作一套硬件开发工具。即在自己的DSP开发板之外,再用两片244和几只电阻和电容制作一个程序下载板,下载板的一端接计算机的打印口,另一端接DSP的JTAG口。这样就可以方便地实现程序的调试和下载。
其次,从软件上来说,DSP56800本身既可用汇编语言进行开发,也支持C/C++语言的开发,而且效率较高。更为可贵的是,Metrowerks的可视化集成开发环境“代码勇士(CodeWarrior)”则为代码的编辑、浏览、编译和调试提供了一个友好的用户界面。还有,Motorola的SDK(Software Development Kit)则为用户的开发提供了一整套的软件包和应用实例,包括DSP各种集成IP外设和特定开发评估板上外扩设备的驱动程序,以及针对电机控制、语音编码等一些特定应用的软件开发支持库和开发实例等。
4 DSP56F805在无位置传感器无刷直流电机控制中的实际应用
图2为一个应用DSP56F805实现对三相无位置传感器无刷直流电机控制的实验系统框图,选用了Motorola的DSP56F805开发评估板EVM和EVM评估电机板EMB。该系统可以实现对电机速度的闭环控制。电机位置的检测采用的是“反电动势过零检测法”。其中,过零信号由DSP56F805正交解码模块的输入监控寄存器(IMR)读取,PWM输出通道屏蔽操作的切换则由写入PWM模块的PWM通道控制寄存器(PMCCR)的相应MSK位实现。PWM模块被设置为独立模式,输出频率为16kHz。程序既可以在DSP56F805的内部FLASH中运行,也可以在EVM板上的外部RAM中运行,这可以通过在程序编译时进行目标选择。系统中的并口是用于进行程序目标代码的下载,而串口则是用于借用SDK的套件“PC Master”实现对系统的远程控制。这样,电机运行的启停和速度调节控制既可以手工控制,也可以通过PC机进行远程控制。
这里,我们给出有关PWM输出频率fPWM=16kHz的计算和寄存器设置。EVM板上的晶体中心频率为8MHz,DSP内核工作频率为80MHz,IP外围设备工作频率为fIP=40MHz,这可以通过写片上时钟合成模块的PLLDB寄存器进行设置。而PWM模块的PWMCM寄存器的值VPWMCM就决定了PWM模块的输出频率。
VPWMCM= fIP/fPWM=40×103/16=2500=0x09C4(16进制)
所以,我们应在PWMCM寄存器中写入16进制0x09C4。
事实上,将该实验系统稍作变化,还可以实现对其他一些种类的电机控制。在该实验系统上,可以进行有关电机控制各种算法的调试验证。当设计的原型系统比较完善时,可以参考开发评估板的硬件设计,设计实现自己的简化系统。实践证明,这种开发方法快捷高效。
参考文献
1 DSP56F801/803/805/807 User's Manual. Motorola, Inc., 2001
2 DSP56F805 Preliminary Technical Data. Motorola, Inc., 2002.1
3 Targeting Motorola DSP56805 Platform. Motorola, Inc., 2000.9
4 DSP56800 Family Manual. Motorola, Inc., 2000.1
5 David Zalac. DSP5680x Architecture Captures Best of DSP and MCU Worlds. Motorola, Inc., 2001.3
6 Motorola Embedded Motion Control Evaluation Motor Board User's Manual. Motorola, Inc., 2000