[信息] 【实战经验】PWM硬件间隔触发ADC

[复制链接]
3315|3
 楼主| 香水城 发表于 2016-12-28 19:52 | 显示全部楼层 |阅读模式
本帖最后由 香水城 于 2017-8-14 14:36 编辑

PWM硬件间隔触发ADC

前言
在各种应用场景中,比如电机,电源,变频器等应用中,ADC的采样点会有很严格的要求,如果采样点选择错误,会给整个控制系统造成严重后果,本文针对STM32Fxxx的PWM波硬件间隔ADC采样实现方式做简要介绍;

PWM硬件触发ADC
在STM32Fxxx中Timer1一般用于产生互补输出的ADC,一般的设定都是使用PWM波中心点,或者是Timer1的第四通道(TIM1_CH4) 作为ADC的触发输入信号(可改变采样点的选取);该设定一般是每个PWM周期触发ADC采样一次,软件设定也比较成熟:
PWM波中心点触发ADC设定:
1.PNG
TIM1_CH4作为ADC的触发信号设定:
2.PNG

PWM硬件间隔触发ADC
有些应用场景下,ADC硬件触发转换结束后会进行系统的关键程序的计算,比如电机的FOC算法,电源的电流环控制等,当客户使用的芯片速度没有足够快,比如使用了STM32F0xx(48MHz主频),或者PWM波太快,比如电源60KHZ的PWM波,在一个PWM波周期内无法完成ADC转化以及核心算法计算,这时候需要在2个PWM周期或者是多个PWM周期进行ADC的触发转化,此时就需要将ADC的硬件触发转化变为间隔采样;
3.PNG

PWM波中心点间隔触发ADC设定
在STM32Fxxx中最直接有效的设定,使用Repetition寄存器,同时设定Timer1的update信号作为触发输出,图一的蓝色箭头即为此种情况的触发点设定
4.PNG

可改变采样点的间隔触发ADC设定
可改变采样点的间隔ADC触发,即图一中的绿色箭头,使用TIM1_CH4这种方式不能实现纯硬件触发采样,这种情况下有两种方法可实现这个采样方式:
一,硬件触发+软件计数方式
ADC的采样及转化时间很短,基本上需要间隔采样方式,时间基本上都是消耗在算法实现上,所以可以采用每个PWM周期都进行硬件触发ADC,但算法计算则是间隔实现,使用全局变量的计数方式,也就是在ADC转换完成结束后,进行计数,当计数值达到间隔采样数据后才进行算法计算,这种方法即兼容了ADC可改变采样点以及间隔计算的目的,比较实用;
二,纯硬件方式
此时需要引入辅助Timer来实现,辅助Timer的频率设定为Timer1的倍数关系,倍数的数值设定为间隔周期,辅助Timer的比较寄存器数据设定为采样点的数据(比如上面所说的TIM1_CCR4)
5.PNG


对应PDF:PWM硬件间隔触发ADC
更多实战经验请看:【ST MCU实战经验汇总贴】

huangcunxiake 发表于 2016-12-28 20:28 | 显示全部楼层
没想到还可以这么使用
在路上的程序猿 发表于 2016-12-29 20:09 | 显示全部楼层
ST的文档确实做得很完善,希望这些文档越来越多。
643757107 发表于 2016-12-29 20:21 | 显示全部楼层
意思是在间隔来检测ADC了?有趣,看看咋实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:STM32技术专家

596

主题

17195

帖子

291

粉丝
快速回复 在线客服 返回列表 返回顶部