常见问题
每个 PWM 控制器的两路输出信号有什么关系?
每个控制器可以控制两路输出 PWM 信号,这两路信号从设计上有三个约束条件:
-
共用同一个 time-base 信号,即共用一路输入时钟信号,也共用了一个计数器
-
共用同一个 PWM 信号频率 配置参数。
-
共用同一个 占空比 配置参数。
上述 “PWM 信号频率” 和 “占空比” 由 PWM 的 调用者运行时配置。 两路信号可以完全相同,也可以做到亮点差别:
-
相位相反,在占空比上看到的是一个为正、一个为负。
-
可以关闭其中一路,在 DTS 参数中将对应的 Action 配置为 “none” 即可。
PWM 信号的占空比是反向的
得到的占空比相位是反向的。比如配置 80%,得到的是 20%。
原因分析
PWM 信号的电平跳变方向完全是由几个关键时点的配置参数决定,所以如果碰到占空比反向的情况,直接的调整方法是将配置参数反向设置即可。
驱动配置 提供了一些典型的参考配置,可以看到相邻的“负占空比”和“正占空比”参数配置基本是反向的。
PWM 输出频率范围如何计算
目前 Luban-Lite 中会根据配置的周期(单位纳秒),自动计算出最佳工作时基。本节仅描述如何计算同一时基下的最大最小频率。
PWM 输出频率与工作时钟频率、配置的周期以及 action
信息相关。
工作时钟频率和父时钟、分频有关。更多时钟问题,参考 时钟配置。
Tclk = 1 / fclk
Tprd = Tclk * (prd + 1)
Tprd = (prd + 1) / fclk
fprd = fclk / (prd + 1)
-
fclk
:工作时钟频率。 -
fprd
:PWM 输出频率:
最小频率: fprd = 24000000 / (0xFFFF + 1) ≈ 367 Hz
PRD
则可以不动作,“互补”工作交由ZRO
与CMP
即可。最大频率: fprd = 24000000 / (1 + 1) = 12 MHz
当
prd 寄存器
设置为 1 (最小为 1 )时,action
CMP
部分应配置为不动作,PRD
与ZRO
互补高低电平,即可输出 12 MHz。
最大频率可与最小频率、正常输出频率时一样,只配置 CMP
与 ZRO
动作,
PRD
不动作,此时配置 cmp 寄存器
与
prd 寄存器
相等理论上能产生一样的效果。但由于驱动中默认设计当 cmp 寄存器
与
prd 寄存器
相等时,为了输出 100% 占空比,cmp 寄存器
会默认增加
1。这个问题我们在下章节毛刺问题作出解析。