# foc_controller **Repository Path**: kevinhuhui/foc_controller ## Basic Information - **Project Name**: foc_controller - **Description**: 电机控制器,带c语言的s-function simulink仿真。除了BSP外,仿真代码和mcu上运行的代码完全一致。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 20 - **Forks**: 8 - **Created**: 2025-04-20 - **Last Updated**: 2025-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # foc_controller 基于STM32F4的磁场定向控制(FOC)固件 ## 项目概述 这是一个用于STM32F4系列微控制器的磁场定向控制(FOC)固件项目,包含了完整的电机控制逻辑、硬件抽象层和通信协议栈。项目支持通过USB进行通信,并提供了Simulink集成支持。 ## 目录结构 ``` motor_controller/ ├── Firmware/ - 核心固件代码 │ ├── app/ - 应用层代码 │ ├── bsp/ - 板级支持包(硬件驱动) │ ├── controller/ - FOC控制算法实现 │ ├── drivers/ - STM32F4 HAL驱动和CMSIS核心文件 │ ├── os/ - 实时操作系统支持 │ ├── protocols/ - 通信协议实现 │ ├── utils/ - 实用工具函数 ├── Projects/ - 项目文件(如Keil uVision) ├── Simulink/ - Simulink模型和仿真支持 ├── simulation/ - 仿真相关代码 ``` ## 主要功能 - 基于SVPWM的磁场定向控制(FOC) - 电流环控制 - 低通滤波器实现 - USB虚拟串口通信支持 - 实时操作系统支持(任务调度、定时器等) - 串行通信协议和数据编码/解码 - 电机控制命令处理(启动/停止、模式切换、参数设置等) ## 依赖项 - STM32F4xx HAL库 - CMSIS核心文件 - USB设备库 - 实时操作系统(轻量级自定义实现) ## 构建和部署 1. 使用Keil uVision打开项目文件(`Projects/odrive_mks.uvprojx`) 2. 配置目标硬件设置 3. 编译并下载到STM32F4目标板 4. 通过USB连接进行通信和调试 ## 通信协议 通过USB实现了一个自定义的二进制协议,支持以下命令: - 电机启动/停止 - 控制模式切换 - 设置电压/电流目标值 - 强制运行开环模式 - 数据采集和波形显示 ## 仿真支持 项目包含Simulink集成支持,可以用于算法验证和调试: - 电机模型仿真 - PWM信号生成 - ADC采样模拟 - 编码器信号模拟 ## 许可证 本项目使用MIT许可证 - 详见LICENSE文件 ## 贡献 欢迎提交Pull Request。对于重大变更,请先提交Issue讨论。 ## 作者 Kevin Huhui ## 致谢 - STM32F4 HAL驱动和CMSIS文件来自ST官方库 - USB设备库来自STM32 USB设备库 - 部分代码结构参考了开源项目ODrive