STMCU小助手
发布时间:2022-2-25 19:35
|
前言 STM32F334 内部集成了高精度 Timer,最高主频 4.6GHz,灵活的控制用于产生数字电源等产品的 PWM 控制信号,内部丰富的联动机制可以产生各种实际需求波形,本文针对多相相移信号的产生给开发者一定启示,抛砖引玉,开发者可以根据不同需求产生应用所需的波形。# R X3 f: ]/ t& i STM32F334 内部 HRTIMER 结构 下图为 HRTIMER 的框图,可以看到该高精度 Timer 拥有五路独立的计数器,可以产生独立的五路带死区互补输出的 PWM波形,同时 Master Timer 这个没有输出端口的独立 Timer 可以作为五路其他 Timer 的清零同步信号。$ l# @+ m! N: t3 _2 F. M ( c! Y! ? |$ z {( Y, S2 g X! [- A/ B. K
Y% b# w: x$ C$ r$ P" S3 a 需要产生的波形 假定需要输出四路带死区互补输出 PWM 波形,频率相同,但各路波形存在相移: PWM1,PWM2,PWM3,PWM4, 需要控制这四路波形的相位,7 h) u6 Y" e/ y2 x8 D! b2 T& a% J PWM1 为 0 度,PWM2 为 30 度相移,PWM3 为 85 度相移,PWM4 为 100 度相移占空比假定都是 50%的占空比( B/ H+ H# @5 D; T _! g & k4 a8 ]# \( M6 w% U 产生上述波形的机制1 x6 O% {$ m: \5 s& O. j STM32F334 的波形产生采用了比较输出模式,也就是说可以单独设定波形的 Set,Reset 位置,当需要将各路波形统一起来,需要同一个触发源,在不同相位点去触发 Timer 计数器复位,这样当设定好比较模式时,波形将自动输出,准确快速,并且可靠;! n# t2 R7 i0 S- h7 n / E9 ^) L, N5 A& D # f0 R0 Y& t9 ?/ q4 r 配置步骤 配置管脚以及时钟3 G5 A3 `+ |: K+ R# M; A # p& V- j7 f4 r: G; {- X 3 S5 q+ U* I1 C) s
: q+ s6 S$ u3 Z+ y3 a " J" ?8 X( Q% w* b' P# Z 配置 Master Timer 假定使用 128MHz*8 = 1024MHz 作为基本时钟源,Master Timer 设定为 50KHz,则 Master Timer 的 ARR 寄存器数据为1024MHz/50KHz = 20480,即 360 度对应 20480; Master Timer 的 Update 事件作为 TimerA 的计数 reset 信号,此时设定相移为 0 度 Master Timer 的 Compara Value 1 作为 TimerB 的计数 reset 信号,如果设定相移为 30 度,则 Compara Value 1 =ARR*30/360 = 1706 Master Timer 的 Compara Value 2 作为 TimerC 的计数 reset 信号,如果设定相移为 60 度,则 Compara Value 1 =ARR*85/360 = 3413 Master Timer 的 Compara Value 1 作为 TimerD 的计数 reset 信号,如果设定相移为 90 度,则 Compara Value 1 =ARR*100/360 = 5120
配置各个独立 Timer Timer 的计数 Reset 信号分配如上面所示,因为这里设定的占空比为 50% ,那么只需要使用到独立 Tiemr 的 ComparaValue1 作为该 Timer 的 Set 信号,而 Timer 的 update 事件作为该 Timer 的 Reset 信号即可,当然这里还要说明,如果如果设定不同占空比信号输出,也可以直接配置该 Timer 的 Compara Value2 作为该 Timer 的 Reset 信号即可;" _1 k: S0 b E* H. V 本例因为是 50%的占空比,那么直接设定 Compara Value1x(x=A,B,C,D) = 20480/2 = 10240;死区时间固定的上升下降都为数字 100,该数据可根据实际调整;
实际测试波形: 为方便观察,只取每相的通道 1 的波形进行观察。如下,可看到清晰的移相信号: / j6 s9 b- {9 L. ]
|
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版
非常感谢楼主分享,学习满满的知识点,不过文中有点小问题,前面文字说的是85、100度相位角,后面例子中的也是85、100,但注释中确实60、 90度,应该是笔误吧!