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根据这个信息确认配置信息地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hyhsandy1803

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值