LAT1432
Local Application Tips
LAT1432 Rev 1.0 Jan. 2025
变频控制中的 TIMER 寄存器更新话题
关键字:变频控制,高精度定时器,寄存器更新
1. 引言
采用 LLC 功率拓扑的变换器需要采用 PFM(Pulse Frequency Modulation)控制方式完成
环路控制,由于开关频率变化范围宽,在高频段无法完成单开关周期控制,所以一般的做法是将
环路算法的运行频率和开关频率解耦,即环路算法运行频率不与开关频率关联,而是以一个定频
的方式运行并按照环路计算结果进行开关频率的更新。由于环路算法运行频率与开关频率不
步,经常会出现当向定时器的多个寄存器进行写入操作中发生了更新事件,出现部分寄存器更新
延迟,从而导致 PWM 波形异常,严重时上下桥臂功率管直通损坏。
2. 寄存器更新问题的产生
寄存器更新延时的产生原理如下图所示,环路算法定时运行,图形上脉冲表示环路算法此时
正在进行寄存器写入操作,如果在所有寄存器写入操作还未完成的时候发生了更新事件(比如定时
器周期事件),在使能了预加载功能的情况下,此时会造成更新事件前写入的寄存器值立即生效,
而更新事件后写入的寄存器值需要延迟到下次更新事件才生效,这种情况下可能导致定时器所产
生的 PWM 输出波形异常。
如下图中的 PWM 输出所示,在第 N 环路中断中,定时 CMP1 的值在当前周期进行
更新,而周期 PER 的值被延时到下个更新事件生效,导致 PWM 输出长时间的高电平,在实际
的控制中需要避免该情况出现,保证所有寄存器在同一时刻完成更新,如 N+1 算法周期所示
LAT1432
LAT1432 - Rev 1.0 page 2/5
3. 解决方法
为了解决以上描述中的寄存器更新问题,在高精度定时器中有个专门的寄存器位 MUDIS
TxUDIS(x=A/B/C/D/E/F)来控制更新操作的使能与屏蔽,且所有位都在个寄存器中,在软
件中可以通过一个操作同时完成所有内部定时器更新操作的使能/屏蔽。
使用以上的方法,操作时序如下:
算法中断服务程序—>计算寄存器值—>屏蔽更新操作—>写寄存器操作—>使能更新操作
另外,在无法屏蔽的更新操作的情况下,则需要选择合适的时间点进行写寄存器操作,以防
止写操作未完成就发生了更新事件
比如在写寄存器操作前读取定时器计数器的值并与当前的周期值进行比较(周期事件触发寄
存器更新操作),只有当时间间隔确保能够完成所有写寄存器操作的情况下,才进行写操作,否则
放弃在本计数周期内更新。
也可以选择再使能一个高优先级中断,比如周期中断,在算法中断服务程序中完成寄存器值
的计算后,再开启周期中断,待下一个周期中断来到时,在周期中断中进行寄存器写操作,完成
后再将周期中断关闭,基本流程如下: