当前位置: 首页 > article >正文

AM32电调学习解读六:main.c文件的函数介绍

最近在学习AM32电调的2.18版本的源码,我用的硬件是AT32F421,整理了部分流程处理,内容的颗粒度是按自己的需要整理的,发出来给有需要的人参考。按自己的理解整理的,技术能力有限,可能理解有误,欢迎纠正。


注:lida2003博主是个大牛。写的无刷电调的理论和AM32相关知识点介绍的比较系统,介绍的很详细,有需要的同学可以去参考。我对电调这块是外行,只是刚入门学习。这里重点是代码理解的整理分析,他哪里写了很多原理性的知识。

https://blog.csdn.net/lida2003/category_12753961.html?spm=1001.2014.3001.5482

        这是第六篇,前面分析的部分已经覆盖了电调控制的大部分路径,接下来是剩余代码的理解。简单介绍main.c文件函数的作用,部分函数前面的文章介绍,这里是个总结整理,为后面穿起来理解运行做准备。

1、doPidCalculations

pid计算函数,用于恒速、失速、限流的PID计算

2、loadEEpromSettings

配置参数读取换算。早期版本参数是一个一个赋值的,使用联合体数据结构,这只需要换算的处理了。个人认为这个函数挺重要,配置不同参数,是为了适应不同的应用场景,每个参数的作用是啥?对电调的运行理解有很大帮助。

3、saveEEpromSettings

保存配置参数

4、getSmoothedCurrent

计算平滑的电流值,这个算法可以减少计算量而且电流是最近100次的平均值

5、getBemfState

获取反电动势状态

6、commutate

相位计算、上下沿计算、同步检查标志位处理、换相、比较器管脚切换、比较器功率切换、比较器上下延中断切换

7、PeriodElapsedCallback

定时回调函数,检测到过零点后等待waitTime换相

8、interruptRoutine

比较器中断处理。

剔除无效过零点

main函数卡死判断保护

连续读取比较器输出符合预期filter_level次则判断为过零点

连续读取正确次数不符合预期,不是过零点,跳过

关闭比较器中断

更新本次换相时间

换相时间计数器清零

设置换相定时器等待时间并且使能定时器

9、startMotor

执行一次换相,设置平均换相时间,然后切换为运转状态

10、setInput

根据newinput应用油门数据

11、tenKhzRoutine

20khz 定时任务函数。

油门置低解锁

串口上报标志

启动阶段反电动势判断换相

PID调速

加速度处理

adjusted_duty_cycle生效

油门超时计数

12、processDshot

计算dshot,调用setInput生效油门数据

13、advanceincrement

正弦驱动3个相位duty值计算

14、zcfoundroutine

找到过零点例程,电机转动后才能在比较器的输出波形判断出过零点,所以这个函数的作用是找到过零点后推一下,为下次找过零点

15、runBrushedLoop

包含特定于有刷电机的循环

16、checkDeviceInfo

Uboot的尾部预留信息,用于指示配置参数信息存储位置,APP根据这个信息确认配置信息地址

http://www.lryc.cn/news/2379591.html

相关文章:

  • ubuntu24.04上安装NVIDIA driver+CUDA+cuDNN+Anaconda+Pytorch
  • AutoVACUUM (PostgreSQL) 与 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC (Oracle) 对比
  • Rust中的交叉编译与vendered特性
  • 3、函数和约束
  • PhpStudy | PhpStudy 工具安装 —— Windows 系统安装 PhpStudy
  • Debezium快照事件监听器系统设计
  • 基于vue框架的订单管理系统r3771(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【2025年前端高频场景题系列】使用同一个链接,如何实现PC打开是web应用、手机打是-个H5 应用?
  • 语音识别-2
  • React useState 的同步/异步行为及设计原理解析
  • 语音识别——语音转文字
  • 兰亭妙微:用系统化思维重构智能座舱 UI 体验
  • 计算机视觉----基础概念、卷积
  • 第三十七节:视频处理-视频读取与处理
  • 【自然语言处理与大模型】向量数据库:Chroma使用指南
  • NSSCTF [GFCTF 2021]where_is_shell
  • WSL 安装 Debian 12 后,Linux 如何安装 vim ?
  • 电子数据取证(数字取证)技术全面指南:从基础到实践
  • Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
  • Spark SQL 之 Analyzer
  • c/c++数据类型转换.
  • Django 项目的 models 目录中,__init__.py 文件的作用
  • 实验六:FPGA序列检测器实验
  • 网络的知识的一些概念
  • 芋道项目,商城模块数据表结构
  • yarn任务筛选spark任务,判断内存/CPU使用超过限制任务
  • 【氮化镓】HfO2钝化优化GaN 器件性能
  • c#的内存指针操作(仅用于记录)
  • 常见机器学习算法简介:回归、分类与聚类
  • SpringBoot项目里面发起http请求的几种方法