PWM 的硬件设计,使用时基计数器产生上述的锯齿波信号,使用一个比较器可同时产生两路 PWM 信号。 PWM 模块的硬件原理图可简化如下:
图 1. 简化的 PWM 硬件框图
PWM 模块共支持 4 个 PWM 通道,上图只画出了其中一个 PWM 通道,每个通道的输出信号有两个:PWMx0 和 PWMx1,对应 DTS 参数中的 action0 和 action1 配置,详见
PWM 自定义参数。
PWM 模块支持的功能特性有:
每个 PWM 通道可以产生两个 PWM 输出信号: PWMx0 和 PWMx1,可遵循如下配置
两个独立的单边输出
两个独立的双边对称输出
一个独立的双边非对称输出
专用的 16 位可配置周期和频率的时基计数器(Time Base Counter)
系统时钟 100MHz
多种事件可配置产生对应的中断
注:
PWM 硬件 Spec 文档中,将两个 PWM 输出信号称作 PWMxA 和 PWMxB,为了避免和阈值 CMPA、CMPB 混淆,软件设计中将两个输出信号称作 PWMx0 和
PWMx1。
在 CMPA、CMPB 同时使用的情况下,锯齿波就会有两次和阈值的比较,共产生 4 个关键时点:
锯齿波信号波段
CMPA
CMPB
增斜率段
CAU (Compare A Up)
CBU (Compare B Up)
减斜率段
CAD (Compare A Down)
CBD (Compare B Down)
以增减模式的锯齿波为例,共 6 个关键时点:
图 2. 增减模式的 6 个关键时点
上图中的,6 个关机时点的触发行为配置是:(行为类型定义见 PWM 自定义参数)
关键时点
Action 类型
CBD
none
CBU
none
CAD
high
CAU
none
PRD
low
ZRO
low