你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

PWM 硬件间隔触发 ADC

[复制链接]
STMCU小助手 发布时间:2022-8-2 19:04
前言 $ ]" }; ^6 `+ z4 l) y# A9 g
在各种应用场景中,比如电机,电源,变频器等应用中,ADC 的采样点会有很严格的要求,如果采样点选择错误,会给整个控制系统造成严重后果,本文针对 STM32Fxxx 的 PWM 波硬件间隔 ADC 采样实现方式做简要介绍;- G  H& l& f$ D& s6 _
) s4 I+ H% Y! K1 t
PWM 硬件触发 ADC
. v* ^' c! J- i* H在 STM32Fxxx 中 Timer1 一般用于产生互补输出的 ADC,一般的设定都是使用 PWM 波中心点,或者是 Timer1 的第四通道 (TIM1_CH4) 作为 ADC 的触发输入信号(可改变采样点的选取);该设定一般是每个 PWM 周期触发 ADC 采样一次,软件设定也比较成熟:& L% D9 l4 X: q! h7 i: U
PWM 波中心点触发 ADC 设定:
  1. TIM_SelectOutputTrigger(TIM1,TIM_TRGOSource_Update); // 设定 Timer1 的输出触发信号2 r; m4 i8 p& B+ c0 n8 h
  2. ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_TRGO; //设定 T1_TRGO 作为4 N- p7 L8 o- x( W
  3. ADC 触发信号源
复制代码

7 Y7 t9 B$ D7 m- f% g3 PTIM1_CH4 作为 ADC 的触发信号设定:8 w$ ~6 P0 D! X2 k/ t; v2 Z
  1. TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_OC4Ref); // 设定 Timer1 的输出触发信号+ [0 w4 H6 o7 a6 h& f
  2. ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_TRGO; //设定 T1_TRGO 作为
    4 ^% _1 E" k2 L$ u* T3 n
  3. ADC 触发信号源
复制代码
% e1 l% m" k0 e
PWM 硬件间隔触发 ADC ) K+ E/ V$ r- w% ]5 k) y
有些应用场景下,ADC 硬件触发转换结束后会进行系统的关键程序的计算,比如电机的 FOC 算法,电源的电流环控制等,当客户使用的芯片速度没有足够快,比如使用了 STM32F0xx(48MHz 主频),或者 PWM 波太快,比如电源 60KHZ 的 PWM波,在一个 PWM 波周期内无法完成 ADC 转化以及核心算法计算,这时候需要在 2 个 PWM 周期或者是多个 PWM 周期进行ADC 的触发转化,此时就需要将 ADC 的硬件触发转化变为间隔采样;
$ t. _7 A5 g2 \# v  V

3 q) y. T  G  l% z4 L L8_]1KG8MAC%E~REBYCBXHA.png
3 w1 x! d! x* V! u1 ^! ]6 r+ v& W/ E: C6 P+ [1 Z
PWM 波中心点间隔触发 ADC 设定
! m1 ]/ {9 V; V# q( N# \0 c在 STM32Fxxx 中最直接有效的设定,使用 Repetition 寄存器,同时设定 Timer1 的 update 信号作为触发输出,图一的蓝色箭 头即为此种情况的触发点设定
4 \# R1 w. _0 {0 w. O) Q
  1. TIM_TimeBaseStructure.TIM_RepetitionCounter = 1;. {- a+ z6 G4 h2 J' ~! j
  2. TIM_SelectOutputTrigger(TIM1,TIM_TRGOSource_Update); // 设定 Timer1 的输出触发信号
    ( x& a3 k" t- l5 ^- i% R
  3. ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_TRGO; //设定 T1_TRGO 作为8 b; L' J, t! K3 l4 V$ w, n- B- c1 L
  4. ADC 触发信号源
复制代码

- a* y- y% Q% l/ v" K" b
可改变采样点的间隔触发 ADC 设定 0 V+ A* ?; ^( r' J( G
可改变采样点的间隔 ADC 触发,即图一中的绿色箭头,使用 TIM1_CH4 这种方式不能实现纯硬件触发采样,这种情况下有两 种方法可实现这个采样方式:
. Q0 C7 Y; C+ w9 [6 X& e7 R. a' y4 e
一,硬件触发+软件计数方式 $ u0 m( y& B5 x. g7 n6 O* a$ _
ADC 的采样及转化时间很短,基本上需要间隔采样方式,时间基本上都是消耗在算法实现上,所以可以采用每个 PWM 周期都进行硬件触发 ADC,但算法计算则是间隔实现,使用全局变量的计数方式,也就是在 ADC 转换完成结束后,进行计数,当计数值达到间隔采样数据后才进行算法计算,这种方法即兼容了 ADC 可改变采样点以及间隔计算的目的,比较实用
1 I, w  ]9 m' A8 G
6 w4 y4 F1 u. l+ O+ G
二,纯硬件方式
2 Q4 s# n! H  h, k4 P此时需要引入辅助 Timer 来实现,辅助 Timer 的频率设定为 Timer1 的倍数关系,倍数的数值设定为间隔周期,辅助 Timer 的比较寄存器数据设定为采样点的数据(比如上面所说的 TIM1_CCR4). }3 R, Y; R3 o: y- U! l5 r; x' D3 h

* m8 h. ~  g8 r% T+ j0 a
: K! ?: A, @' m" |7 J4 H' c! l& M
% A% X( ?+ {7 |0 w! c5 H
MPF]}`@E5QC}0QDRO65C)VU.png
! @5 A# R1 C* H& l, o6 }9 Z# F1 y  X2 c5 C

; T; L1 {' i! }  H完整版请查看:附件. d3 o% I. d2 X6 R. l' W
' [4 `6 E8 J3 k. t

" L& `: m$ W; L& m3 c: M. i) G: N+ V
7 g2 C6 m# o. X4 k7 ]

PWM硬件间隔触发ADC.pdf

下载

259.83 KB, 下载次数: 8

赞 收藏 评论0 发布时间:2022-8-2 19:04

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版