FOC控制中使用定时器触发ADC采样的一些问题及解决方案
创作时间:
作者:
@小白创作中心
FOC控制中使用定时器触发ADC采样的一些问题及解决方案
引用
CSDN
1.
https://m.blog.csdn.net/qq_44348981/article/details/139172395
在FOC(磁场定向控制)控制中,精确的电流采样是至关重要的。本文详细描述了在STM32平台上使用定时器触发ADC采样的具体实现方法,包括定时器配置、ADC设置以及遇到的问题和解决方案。对于从事电机控制和嵌入式开发的工程师具有较高的参考价值。
背景
在FOC控制中,电流采样需要使用STM32的ADC。采用低侧电流采样时,需要在半桥的上桥臂关闭、下桥臂打开时进行电流采样。之前使用的方法是在定时器更新中断中判断计数器计数方向来软件触发AD采样,但这种方法的数据采集实时性可能不够理想。最近参考了一些论坛帖子,尝试使用定时器的通道四输出(TRGO)触发ADC采样,遇到了一些问题。以下记录了解决过程,仅供参考。
问题描述
参考了一些帖子和视频的设置,具体配置如下:
- Prescaler(预分配系数):为了不损失定时器的分辨率,一般都设为0,但在实验中调大一些,方便逻辑分析仪捕捉。
- Counter Mode(计数模式):这里一定要选择中心对齐模式,具体是123无所谓,只会影响到捕获比较中断。
- Counter Period(装载值):根据具体需求设置。
其中:
- 通道1、2、3设置为PWM模式1,即CNT大于CCR时为低电平,反之高电平。通过逻辑分析仪可以知道高电平的中点为计数值0处。
- 通道4设置为PWM模式2,即CNT大于CCR时为高电平,反之低电平,用于触发ADC采样。
设置Trigger Out Event为OC4REF,理论上应该在通道1、2、3的两个高电平中间进行采样。但是实际情况并非如此。
ADC的设置如下:
- 使用ADC1和ADC2分别采集两相电流,配置为注入组,触发源为Timer 1 Trigger Out Event。
- 由于规则组有几项,包括母线电压和温度传感器,担心数据错位所以没有开启连续采样。
在main函数中进行如下初始化:
MX_GPIO_Init();
MX_ADC1_Init();
MX_ADC2_Init();
MX_TIM1_Init();
HAL_ADCEx_InjectedStart_IT(&hadc1);
__HAL_ADC_ENABLE_IT(&hadc1, ADC_IT_JEOC);
HAL_TIM_Base_Start_IT(&htim1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4);
__HAL_TIM_ENABLE_IT(&htim1, TIM_IT_UPDATE);
在注入组转换完成回调函数里翻转GPIO的状态,方便逻辑分析仪采集。然而,并没有像预想的那样进入回调函数。
原因分析
调试时发现,将断点打在回调函数处,第一次执行时可以进入,将ADC输入接到3.3v数据为4090,一切正常,但是之后就卡死了。思考会不会是因为函数HAL_ADCEx_InjectedStart_IT(&hadc1)只是开启了一次ADC注入组转换就停止了。由于规则组有母线电压和温度传感器,担心数据错位不能开启连续采样,规则组只能使用扫描+DMA传输的方式。
解决方案
在定时器的更新中断里调用HAL_ADCEx_InjectedStart_IT(&hadc1),在下一次的采样时刻之前再次打开注入组转换。使用逻辑分析仪测量波形,发现回调函数的GPIO翻转出现了。
具体配置如下:
- 设置RCR的值为1,因此在蓝色箭头处发生定时器的更新事件。
- 设置
TIM1->CCR4 = 980,而ARR = 1000,因此OC4REF触发注入组转换会出现在下图红色箭头处,也就是接近在计数器的上溢点,就能做到连续转换了。
热门推荐
专家共识:合理膳食降血同,预防心血管疾病
补充叶黄素能改善丝状角膜炎吗?
丝状角膜炎患者的眼部护理小妙招
二战阿图岛战役,发生在美国领土上的战争,为何被称玉碎之战
菜煎饼制作教程:多种食材做馅料,营养丰富口感超棒
潮汕美食文化深度游:三天春节行程攻略
秋冬耳骨夹搭配指南:从基础佩戴到流行款式全解析
胆囊引流管什么时候可以拔?医生这样判断拔管时机
济泰磁悬浮列车最新进展曝光!
铁锅炒菜不粘锅的秘密大揭秘!
美国留学期间如何进行约会和社交活动
美国新移民全方位生活指南:从入境到安家,必做的10件事情
轮胎冷知识:花纹深度竟影响行车安全
精通API规范:构建明确指导和预期的指南
API是什么?1分钟就能看懂的API白话介绍与范例解析
最受Web开发者欢迎的12种编程语言!你学了哪几种?
什么是 API(应用程序编程接口)?
住房公积金提取,究竟需要准备哪些材料?
重要提醒!事关住房公积金
公积金不买房也能提取,了解提取条件和流程
公积金代取规定及注意事项
边玩《王者荣耀》边充电?小心你的手机!
苹果手机闪屏怎么办?多种原因及解决方案全解析
红曲:从古至今的健康守护神
李时珍认证:红曲泡水的正确姿势
红曲:心血管健康的天然守护者
DeepSeek R1 7B模型:最佳硬件配置指南
不让指尖划破梦想 ——我区家校社携手开展“放下手机 健康成长”主题活动小记
新技术推动探索中国动画工业化新路径
长时间用眼引发头痛?简单方法帮你告别眼疲劳!