编辑: 笨蛋爱傻瓜悦 | 2018-10-24 |
6 Freescale Semiconductor, Inc. 子模块)一同定义PWM周期.边沿调整操作的原理如图7所示.此电路对用户不可见,用户无需 执行任何操作. 图6. 高分辨率 PWM 频率的产生 图7. 自动计算新边沿位置的硬件支持 2.3 采用细分延迟逻辑产生互补信号 由于细分延迟逻辑位于互补和死区逻辑后面,因此仍然可以不受限制地使用产生的互补信号.这 样就能确保带死区时间的互补信号能够安全由硬件产生,但用户需要注意细分边沿在互补信号中 的位置. 例如,如果PWM23信号用作互补信号产生的来源,则用户不仅要设置PWMx_SMnFRACVAL2和PWMx_SMnFRACVAL3的小数部分,而且要设置PWMx_SMnFRACVAL4和PWMx_SMnFRACVAL5的小数部分.这对MC56F82xx DSC系列有效. MC56F84xxx、 MC56F823xx 和MC56F827xx等新的DSC系列改进了这一功能.如果选择互补模式,寄存器 PWMx_SMnFRACVAL2和PWMx_SMnFRACVAL3中的值会被自动复制到寄存器 PWMx_SMnFRACVAL4和PWMx_SMnFRACVAL5中,即PWMx_SMnFRACVAL2 = PWMx_SMnFRACVAL5,PWMx_SMnFRACVAL3 = PWMx_SMnFRACVAL4. 利用MC56F82xx、MC56F84xxx、MC56F823xx和MC56F827xx DSC系列产生高分辨率PWM信号,Rev. 0,06/2013 Freescale Semiconductor, Inc.
7 死区分辨率仅由数字时钟决定,但如果用户需要更高的分辨率,可以通过适当设置两个上升沿的 细分延迟来 实现. 例如,要将 死区时 间设置为10 个整数 时钟和5个 细分单 位,可设置 PWMx_SMnDTCNT0 = 10,PWMx_SMnFRACVAL2 = PWMx_SMnFRACVAL5 + 5.类似地, PWMx_SMnDTCNT1 = 10,PWMx_SMnFRACVAL4 = PWMx_SMnFRACVAL3 + 5. 2.4 在软件中使用细分延迟逻辑 细分延迟逻辑由PWMx_MCTRL2和PWMx_SMnFRCTRL这两个寄存器控制. ? PWMx_MCTRL2控制PLL时钟丢失情况下细分延迟逻辑的行为. o 位0控制PLL时钟丢失情况下是否禁用细分延迟逻辑. o 位1锁定该寄存器的设置,直至下一次复位. ? PWMx_SMnFRCTRL用于使能细分延迟逻辑的运行. o FRAC_PU区域(PWMx_SMnFRCTRL[FRAC_PU])用于为细分延迟逻辑上电. o FRAC45_EN和FRAC23_EN区域(PWMx_SMnFRCTRL[FRAC45_EN]和PWMx_SMnFRCTRL[FRAC23_EN])用于使能各PWM输出(PWM23和PWM45)的 细分功能. o FRAC1_EN区域(PWMx_SMnFRCTRL[FRAC1_EN])用于使能PWM周期/频率的细 分功能. 使能细分功能后,所有比较值都包括两部分,值寄存器0(PWMx_SMnVAL0)中数值除外. ? 第一个部分是比较值的整数部分,存储在PWMx_SMnVALy寄存器中,其中y =
1、2…5. ? 第二个部分是比较值的细分部分, 存储在PWMx_SMnFRACVALy寄存器中, 其中y =
1、 2…5. 这两个部分构成一个21 位值,用于定义边沿位置或PWM 周期.PWMx_SMnVALy 和PWMx_SMnFRACVALy寄存器彼此相邻,因此可作为单个32位值加以访问. 虽然边沿位置或PWM周期由21位定义,但计算仍可保持在16位范围内.细分延迟逻辑通常用于产 生高频率.例如,200 kHz PWM信号的分辨率低于9位(假设输入时钟为100 MHz).这意味着, ........