近期由于项目需要做一个FOC驱动控制一体的控制器,因此学习了下Odrive这个开源项目,Odrive是一个开源的性能很强悍的FOC控制器,以前也玩过BLDC相关的控制算法,但是对于FOC这类比较复杂的控制算法研究的还比较少,从零开始做一个FOC控制器工作量太大,效果还不一定好,因此我考虑基于Odrive,在巨人的肩膀上做一些功能的裁剪和添加实现我自己想要的功能。本系列文档记录本人研究Odrive源代码和做相关实践的心路历程。
项目地址:
-
官方网站:https://odriverobotics.com/
-
github开源网站:GitHub - odriverobotics/ODrive: High performance motor control
最新开源的版本为0.5.6版本,对应的硬件版本是3.6版本。源代码下载后,目录如下:
单片机程序所在文件夹为Firmware目录,其他目录主要是一些辅助工具。Firmware目录如下:
打开该目录,使用arm-none-eabi-gcc编译器即可编译成bin。
这里涉及到开发环境的配置,记录下:
1. 安装gcc-arm-none-eabi-10.3-2021.10,编译ARM平台C/C++必备。
2.安装tup,这个工具是做项目管理用的,我平时用的CMake多一些,类似的工具。安装的版本为:v0.7.8-20-g1d2fd514
3.GNU MCU Eclipse。这个工具提供了window下Make命令。版本:gnu-mcu-eclipse-windows-build-tools-2.12-20190422-1053-win64.zip
4.OpenOCD-20231002-0.12.0。调试工具,用于连接ST-LINK对单片机在线调试。
5. 安装python3相关工具:pip install PyYAML Jinja2 jsonschema
另外由于我安装的OpenOCD版本和Odrive开发用的版本可能不一致。需要修改下ODC的接口配置,将:
"interface/stlink-v2.cfg",
"target/stm32f4x_stlink.cfg",
改为:
"interface/stlink.cfg",
"target/stm32f4x.cfg",