自记:
还是没有理解了
互补通道与刹车
互补通道与刹车功能是高级寄存器特有的功能。
在使用互补通道时,往往还需要考虑死区等特殊功能。而本文为了简单起见,不再考虑死区区间。通过配置TIMx_CCER寄存器,来使能互补通道,且将OCxREF 重定向到 OCx 输出或 OCxN 输出。
互补信号 OCx 和 OCxN 通过以下多个控制位的组合进行激活:TIMx_CCER 寄存器中的 CCxE 和 CCxNE 位以及 TIMx_BDTR 和 TIMx_CR2 寄存器中的 MOE、OISx、OISxN、OSSI 和 OSSR 位。
注意:
此处中文文档过于陈旧,最新的英文参考手册有不同的描述,如下所示:
关于OSSR和OSSI的作用:
OSSR在MOE=1时起作用,即PWM处于运行状态。下面分条陈述:
若互补通道都使能(CCxE=CCxNE=1),此时很容易理解,两个端口按照配置正常输出PWM波。
若互补通道都禁用(CCxE=CCxNE=0),此时存疑,可以认为两个端口都处于高阻状态。
若互补通道有一个使能,一个禁用。则使能的端口正常输出PWM波,禁用的端口的状态与OSSR相关。
若OSSR=0,则禁用端口输出高阻(存疑),与CCxP或者CCxNP无关。
若OSSR=1,则禁用端口输出无效电平。假设OC1N为被禁用,即(CC1NE=0),则此时OC1N的输出为无效电平,即CC1NP为0时,高电平有效,输出电平为0,CC1NP为1是,低电平有效,输出电平为1。
OSSI与OSSR的作用很类似,其只有在MOE=0时起作用,即PWM处于高阻状态。我们假定互补的两个通道都使能,下面分条陈述:
若OISx与OSIxN不同,有且只有一个电平为高电平,则通道输出的电平对应空闲状态。即OCxN=OSIxN,OCx=OISx。
若OISx=OSIxN=1时,只有CCxP=CCxNP=0时,OCx=OCxN=0;其余时候OCx=OCxN=1。
若OISx=OSIxN=0时,与前面相似,只有CCxP=CCxNP=1时,OCx=OCxN=1,其余时候OCx=OCxN=0。
上面3种情况是OSSI=1的效果,若OSSI=0,此时输出高阻(存疑)。
可以这样理解:若是OISx=OSIxN且CCxP=CCxNP时,此时输出的是无效电平。其余的时候,OCxN=OSIxN,OCx=OISx。
真值表如下: