关于CW32微控制器(以CW32F030系列为例)的PWM移相功能及三相移相实现,具体分析如下:
TIM_REP寄存器实现,作用于当前TIM模块的所有通道。TIM_REP寄存器的值定义了计数器初始计数值(相位偏移量),范围为 0x0000 - 0xFFFF。计数器从 REP 值开始计数。TIM_REP会影响该TIM模块输出的所有4路PWM信号的整体相位。需要非常关键的额外配置:
虽然所有通道都有移相能力(通过TIM_REP设置整体偏移),但TIM_REP只能设置一个全局偏移值。三相移相需要三个相位互差120° 的PWM信号(例如U, V, W相)。仅靠TIM_REP无法为每个通道设置独立的相位差。
实现三相移相的核心方法:
利用通道的“输出比较”功能 + 中央对齐模式 + TIM_REP设置基准相位。
以下是配置步骤:
选择TIM模式:
配置TIM工作于中央对齐模式1或2(Up-Down计数模式)。这是生成对称PWM的基础。
配置全局相位基准 (TIM_REP):
设置TIM_REP寄存器为所需起始相位(例如0°对应的计数值)。这决定了整个TIM模块输出波形的基准相位。
配置各通道相位差:
这是关键!通过设置不同通道的捕获/比较寄存器 (TIM_CHxCCR) 来实现各相之间的相位差。
REP值开始向上计数到TIM_AAR(自动重载值),然后向下计数到0(或某个值,具体模式决定)。TIM_OCMode_Toggle)或PWM模式1/2。TIM_CHxCCR寄存器值时,会发生比较匹配事件。TIM_CH1CCR(假设CH1为U相)。TIM_CH2CCR = TIM_CH1CCR + (1/3)*Period(Period为周期对应的计数值 = TIM_AAR)。TIM_CH3CCR = TIM_CH1CCR + (2/3)*Period(或等效的 TIM_CH2CCR + (1/3)*Period)。例如:
周期计数值 Period = 60000(对应360°)。
TIM_CH1CCR = 0 (或任意基准值,最终相位由REP和CCR共同决定)。 TIM_CH2CCR = 20000 (120°对应 60000 / 3 = 20000)。 TIM_CH3CCR = 40000 (240°对应 60000 * 2/3 = 40000)。TIM_REP设置的全局偏移,即可得到相位互差120°的三相PWM。配置输出模式和极性:
根据需要使用TIM_OCMode(输出比较模式)配置为翻转模式或PWM模式,并用TIM_OCPolarity设置初始输出极性(高有效或低有效)。
死区时间(Dead Time)配置:
对于驱动三相全桥逆变器等应用,同一桥臂的上下管信号(如UH/UL, VH/VL, WH/WL)需要插入死区时间防止直通。这需要额外的硬件支持:
同步处理:
TIMx_CR1.CEN位),确保三个TIM模块的计数严格同步。否则相位关系会漂移。TIM_REP设置)作用于整个TIM模块的所有通道,并非仅通道1可用。它为该TIM的所有通道设定一个共同的相位偏移基准。TIM_CHxCCR) 值。这是产生通道间独立相位差的关键。TIM_REP 设置全局相位基准。因此,CW32完全有能力在一个TIM模块内(如TIM1或任意TIMx)生成相位互差120°的三相PWM信号,但核心是靠配置各通道不同的CCR值来实现相位差,而不是仅靠TIM_REP。死区控制是三相驱动不可或缺的部分,需要特别注意硬件支持(首选TIM1)。
参考配置流程(以TIM1三相为例):
TIM1_REP为期望的基准相位(例如0)。TIM1_BDTR:BDT[7:0])。MOE = 1)。TIM1_CCMRx中的OCxPE)。TIM1_CR1.CEN = 1)。按照以上步骤即可在TIM1的CH1、CH2、CH3(及其互补通道CH1N、CH2N、CH3N,带死区)上输出相位互差120°的三相PWM信号。
举报
更多回帖