本帖最后由 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模块,电机参数与数据结构模块,驱动模块,故障处理模块,中断与实时控制模块,系统支持模块等,从主程序入手,理解硬件驱动以及算法,并逐步扩展模块
|