基于Cortex M3的电机驱动SoC设计

(整期优先)网络出版时间:2022-06-24
/ 2

基于 Cortex M3的电机驱动 SoC设计

钱渊方

(江苏大学, 江苏 镇江 212013)

摘要:本设计实现了一种基于Cortex M3内核的SoC,将ARM微控制器控制灵活方便的优点与FPGA硬件并行处理的速度优势相结合,舍去与电机驱动控制无关部分,设计出一种完全面向永磁电机驱动的片上系统。该片上系统将FOC等较为复杂的控制算法通过FPGA来进行并行加速,具备了比传统单片机快几十倍的处理速度。

关键词:Cortex M3;FPGA;SoC


0引言

由于疫情的影响,全球芯片市场供给严重不足,大量主控、电源、MOSFET芯片极度缺货。目前,FPGA的集成度越来越高,价格也越来越便宜,而且FPGA的架构和片上外设都可以根据具体的应用情况随时做出更改,所以可以以较低的成本来构建专用的片上系统。本设计能够从一定程度上缓解这一芯片短缺的问题,为电机驱动控制器提供一种新的解决思路,并在一定程度上提高现有驱动器的性能,同时,研究SoC的设计方法和工程应用对于未来单片机应用领域的革新具有深刻的意义。


1.系统结构

本设计把系统精简为Single Master结构,省去了复杂的仲裁逻辑单元,提高了数据的传输效率,降低了系统的复杂程度。整个系统分为两部分,第一部分是用于Cortex核程序启动和烧录所必须的Instruction CODE和Data CODE,第二部分主要是AHB总线串连起来的各个功能外设。其中RAM、GPIO、LCD以及FOC加速器是直接挂载在AHB总线上。而ADC的读取,RS485位置解码,PWM生成模块则由一个APB桥接在AHB总线上。整体系统简洁明了,易于实现,如图1所示。

62b5333909018_html_2e52c80e4dca5984.gif

图1 系统结构框图

2.硬件设计

Cortex M3的寻找空间大小是4GB,代码段和数据段在存储空间上是分开的,外设相关的寄存器也有相应的地址段,内核操作相关的寄存器也占据部分地址空间。本设计把程序放到代码区,从而使取指和数据访问操作使用自己的总线。在Cortex M3预定义的存储器地址映射中,Code区的地址从0x00000000到0x1FFFFFFF,本系统使用的地址空间从0x00000000开始,结束地址是0x0000FFFF,大小为64KB。内部SRAM区的地址空间从0x20000000到0x3FFFFFFF,本系统使用的地址从0x20000000开始,结束地址是0x20000FFFF,大小为64KB。

系统的整体硬件框架如图2所示。为使系统可以正常运行,除要构建一个完整的片上SoC系统外,还有功率驱动电路、A/D转换电路、电流信号采样回路、电平转换电路等。本设计采用双闭环结构,能够有效改善直流电机的动态响应时间与稳态误差。

62b5333909018_html_b9763d21c4dc5d0e.png

图2 系统硬件架构

目前直流电机控制系统中,基本上都是使用集成式的电机驱动模块,内含有辅助器件共同完成电机换相操作。所以,需要选择一个功率驱动能力合适、具有高灵活性的驱动器,同时,还要考虑功率驱动模块的体积、应用环境及价位等,经考虑可以采用ZM-6405E直流无刷电机驱动控制器。在电流信号采样回路中,基于磁平衡原理,霍尔元件两端电压与穿过恒定磁场的电流导线的内部电流成正比,可选用型号为ACS712ELC-05B的传感器。A/D转换则可使用ADC128S022型采样电路芯片实现模拟与数字信号之间的转换。


3.软件设计

3.1数据处理

据接收由I/O口实现外部数据进入到FPGA内部,接着经过一定的逻辑门电路块,处理后写入MDK9中的缓存如FIFO或双口RAM中,然后再由逻辑电路从存储器中读出,进行相应的处理。同时在进行算法运行中如果需要用到高速的乘法运算,数据可直接送往片上集成的18*18硬件乘法器进行运算,运算完成后,再由逻辑电路处理送入MDK9中的缓存如FIFO 或双口RAM中,等待其他电路如数据发送电路将数据从缓存中读取出来并最终通过IO口输出。

3.2时钟和复位控制

本系统片上SoC系统主要包含HCLK、PCLK、PCLKG等三个时钟,HCLK时钟主要用于内核的工作时钟以及驱动片内高性能总线上挂载的外设,PCLK时钟主要用于驱动APB子系统内挂载在高性能外设总线上的大部分外设,PCLKG时钟是当子系统内部的外设无任何活动的时候,通过子系统的APBACTIVE信号可以控制该信号的输出,以实现降低功耗的目的。系统主要采用两种复位信号方式:一是FPGA外部管脚控制系统低电平复位的方式;二是系统异常请求复位,该复位发生在系统程序运行错误或者硬件错误的情况下。

3.3中断控制

中断分组设置函数,void NVIC_ Configuration()中断配置函数,在这个函数里面只调用了固件库的中断分组配置函数,整个系统的中断分组组别为2。这个函数在系统初始化的时候调用即可,并且永远只需要调用一次。

3.4控制算法

传统PID控制具有简单、稳定性好、可靠性高的特点,但常规PID控制器不能在线整定参数,而且对于非线性、时变的系统以及模型不清楚的系统无法实现预期的控制效果。而本设计采用的模糊PID能对复杂和模型不清楚的系统都能进行简单而有效的控制,但稳态误差很难消除,所以两者结合,将兼具两者的优点。本设计采用电流PID与测速模糊PI的双闭环反馈机构,其结构如图3所示。

62b5333909018_html_d0c8a11c3ec4b2fd.png

图3 控制框图

3.5PWM波生成

在模拟电路中,PWM波可以通过比较器进行输出。FPGA无法做到形成模拟量信号那样的连续波形,因此只能通过系统内部的数字计数器来近似形成波形,其外形与阶梯波相似。图4为数字PWM产生原理。

62b5333909018_html_89e4da6813ec9630.png

图4 数字PWM产生原理

通过数字计数器我们近似模拟了一种阶梯状的载波,并通过可编辑逻辑门电路构建了一个电压比较器,在经过硬件乘法器运算后的算法输出量与近似模拟载波进行电压比较,输出PWM波。


4.结语

本文在FPGA平台上,设计出一款基于Cortex M3内核的片上处理器,作为专门面向电机驱动应用场景的一种解决方案。该设计对照传统的DSP处理器,集成电机驱动主控所需的基本外设,有选择地精简系统总线结构,舍去与电机驱动控制无关部分。针对电机驱动控制中高频使用的FOC矢量控制算法设计专门的硬件加速器,挂载在系统总线上,来缓解Cortex M3内核的运算压力,而整体的算法开发仍可在ARM核上进行。


作者简介:钱渊方(1999-),男,江苏大学电气学院,研究方向为电机驱动控制。