打印
[电机控制专用MCU]

APM32M3514 FOC算法解析系列——第1篇:芯片概述与主程序框架

[复制链接]
48|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 a976209770 于 2024-12-26 22:48 编辑

1. APM32M3514芯片简介

APM32M3514是一款专为电机控制设计的高性能32位MCU,基于ARM Cortex-M0+内核,支持高达72MHz的工作频率,并集成了多种电机控制相关外设与算法硬件加速单元。以下是芯片的核心特点:

  • 协处理器M0CP:提供CORDIC、SVPWM、硬件除法等加速功能。
  • 丰富的模拟外设
    • 1个12位ADC(13个外部通道、3个内部通道)。
    • 2个可编程比较器。
    • 4个运算放大器。
  • 内置驱动能力:包含6路200V高边驱动和3.3V LDO。
  • 强大的控制功能
    • 支持高达15kHz PWM频率。
    • 集成过压、欠压、过流保护。
    • 滑模观测器(SMO)+PLL算法支持无传感器FOC控制。
  • 开发环境:兼容Keil MDK V5.23及以上版本。

1.1 系统架构
芯片采用多级AHB总线架构,核心模块包括:
  • 内核:ARM Cortex-M0+。
  • 协处理器:用于FOC相关算法加速。
  • 外设总线:支持多种通信接口(USART、SPI、I2C、CAN)及定时器模块(高级定时器TMR1和多通用定时器)。
  • 模拟模块:ADC、OPA、COMP支持电流/电压采样及过流保护。

1.2 应用特点

  • 目标应用:小型电机的无感矢量控制(如风扇、泵、电动工具)。
  • 支持环境:工业级温度范围(-40℃~105℃)。
  • 可扩展性:通过CAN接口支持多节点电机网络。

2. 主程序框架
本项目代码结构采用模块化设计,分为用户层、外设驱动层、电机控制层、电机算法层四大模块。

2.1 用户层(USER层)
用户层包含系统的主入口及全局逻辑控制,核心文件如下:
  • main.c
    • 负责系统初始化,包括时钟配置、GPIO初始化、外设初始化。
    • 包含主循环逻辑,实现主状态机调度。
  • APM32M3514_int.c
    • 实现所有中断服务程序(ISR),如TMR1中断、ADC中断。
  • user_function.c
    • 定义用户层函数,如电机参数初始化、复位等。
  • parameter.h
    • 配置电机相关参数(如PWM频率、电压、电流基准值等)。

代码流程概览




主程序遵循以下流程:

  • 系统初始化
    • 配置主时钟为72MHz。
    • 初始化外设(GPIO、PWM、ADC、COMP、OPA等)。
    • 加载用户参数。
  • 进入主循环
    • 执行主状态机逻辑。
    • 处理电机运行状态切换。
  • 中断服务
    • TMR1触发PWM更新中断。
    • ADC完成电流采样后进入中断处理。


2.2 外设驱动层(HARDWARE层)

外设驱动层封装了对芯片外设的配置和操作,核心模块包括:

  • 定时器驱动:支持PWM生成及死区时间控制。
  • ADC采样:结合DMA实现高效的电流、电压采样。
  • OPA/COMP配置:用于电流信号放大和过流检测。
  • 中断配置:实现TMR1和ADC的优先级管理。

2.3 状态机逻辑
项目采用主状态机嵌套子状态机的设计,具体如下:

  • 主状态
    • INIT:初始化变量和外设。
    • STOP:系统待命,关闭PWM输出。
    • RUN:执行电机运行逻辑。
    • FAULT:故障处理。
  • 运行子状态
    • RUN-CALIB:电流自校准。
    • RUN-READY:准备运行。
    • RUN-ALIGN:初始对准。
    • RUN-STARTUP:开环启动。
    • RUN-SPIN:闭环运行。
    • RUN-FREEWHEEL:空转等待。

3. 总结

在本篇文章中,针对 APM32M3514 芯片进行了初步的介绍,并分析了其主程序框架。在主程序框架中,涉及了系统的初始化过程、主循环的状态机逻辑以及中断管理的工作流程。
接下来,将深入探讨 状态机模块,FOC模块,电机参数与数据结构模块,驱动模块,故障处理模块,中断与实时控制模块,系统支持模块等,从主程序入手,理解硬件驱动以及算法,并逐步扩展模块





使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

38

帖子

0

粉丝