概述
注:以STM32F334为例。
1.断路功能:
两个断路通道。一个断路通道收集系统级故障(时钟失效和奇偶校验错误等)和应用故障(来自输入引脚和内置比较器),可以在死区持续时间后将输出强制为预定义的电平(有效或无效)。断路 2 通道只包括应用故障,能够将输出强制为无效状态。
2.互补输出和死区插入:
互补信号 OCx 和 OCxN 通过以下多个控制位的组合进行激活:TIMx_CCER 寄存器中的 CCxE 和 CCxNE 位以及 TIMx_BDTR 和 TIMx_CR2 寄存器中的 MOE、OISx、OISxN、 OSSI 和 OSSR 位。
相关位介绍:
MOE:主输出使能 (Main output enable)
只要断路输入(BRK 或 BRK2)为有效状态,此位便由硬件异步清零。此位由软件置 1,也可根据 AOE 位状态自动置 1(AOE为自动输出使能位)。此位仅对配置为输出的通道有效。
0:响应断路事件(2 个)。禁止 OC 和 OCN 输出。响应断路事件或向 MOE 写入 0 时:OC 和 OCN 输出被禁止或被强制为空闲状态,具体取决于 OSSI 位。
1:如果 OC 和 OCN 输出的相应使能位(TIMx_CCER 寄存器中的 CCxE 和 CCxNE 位)均置 1,则使能 OC 和 OCN 输出。
OSSR:运行模式下的关闭状态选择 (Off-state selection for Run mode)
此位在 MOE=1 时作用于配置为输出模式且具有互补输出的通道。如果定时器中没有互补输出,则不存在 OSSR。
0:处于无效状态时,禁止 OC/OCN 输出(定时器释放输出控制,由强制高阻态的 GPIO 逻辑接管)。
1:处于无效状态时,一旦 CCxE=1 或 CCxNE=1,便使能 OC/OCN 输出并将其设为无效电平(输出仍由定时器控制)。
注: 编程了 LOCK(TIMx_BDTR 寄存器中的 LOCK 位)级别 2 后,此位即无法修改。
OSSI:空闲模式下的关闭状态选择 (Off-state selection for Idle mode)
当由于断路事件或软件写操作而使 MOE=0 时,此位作用于配置为输出的通道。
0:处于无效状态时,禁止 OC/OCN 输出(定时器释放输出控制,由强制高阻态的 GPIO 逻辑接管)。
1:处于无效状态时,首先将 OC/OCN 输出强制为其无效电平,然后在死区后将其强制为空闲电平。定时器始终控制输出。
注: 编程了 LOCK(TIMx_BDTR 寄存器中的 LOCK 位)级别 2 后,此位即无法修改。
CCxP:捕获/比较x输出极性 (Capture/Compare output polarity)
CCx 通道配置为输出时:
0:OCx 高电平有效
1:OCx 低电平有效
CCxNP:捕获/比较x互补输出极性 (Capture/Compare complementary output polarity)
CCx 通道配置为输出时:
0:OCxN 高电平有效。
1:OCxN 低电平有效。
CCxE:捕获/比较x输出使能 (Capture/Compare output enable)
CCx 通道配置为输出时:
0:关闭——OCx 未激活。OC1 电平是 MOE、OSSI、OSSR、OISx、OISxN 和 CCxNE 位的函数。
1:开启——OCx 信号输出到相应的输出引脚上,具体取决于 MOE、OSSI、OSSR、OISx、OISxN 和 CCxNE 位。
CCxNE:捕获/比较x互补输出使能 (Capture/Compare complementary output enable)
0:关闭——OCxN 未激活。OC1N 电平是 MOE、OSSI、OSSR、OISx、OISxN 和 CCxE位的函数。
1:开启——在相应输出引脚上输出 OC1N 信号,具体取决于 MOE、OSSI、OSSR、OISx、OISxN 和 CCxE 位。
CCxP:捕获/比较x输出极性 (Capture/Compare output polarity)
CCx 通道配置为输出:
0:OCx 高电平有效
1:OCx 低电平有效
CCxNP:捕获/比较x互补输出极性 (Capture/Compare complementary output polarity)
CCx 通道配置为输出:
0:OCxN 高电平有效。
1:OCxN 低电平有效。
3.部分测试结果:
程序流程:配置输出(MOE=1),再制造BRKIN引脚输入事件(MOE=0)。
OISx:TIM_OCIdleState_Set;
OISxN:TIM_OCIdleState_Reset;
Channel0(白色):TIM1_CH1输出
Channel1(棕色):TIM1_CH1N输出
Channel2(红色):TIM1_CH2输出
Channel3(橙色):TIM1_CH2N输出
Channel4(黄色):TIM1_CH3输出
Channel5(绿色):TIM1_CH3N输出
注:经过测试,STM32F334中GPIO初始化后默认输出高电平。
图1 CCxE=1, CCxEN=1, OSSI=1, OSSR=1, CCxP=0, CCxNP=0
图2 CCxE=1, CCxEN=0, OSSI=0, OSSR=0, CCxP=0, CCxNP=0
图3 CCxE=1, CCxEN=0, OSSI=1, OSSR=1, CCxP=0, CCxNP=0
图4 CCxE=1, CCxEN=0, OSSI=1, OSSR=1, CCxP=1, CCxNP=1
图5 CCxE=0, CCxEN=0
图6 CCxE=1, CCxEN=1, OSSI=0, OSSR=0, CCxP=0, CCxNP=0
4.个人总结:
- 两个状态:
空闲状态→MOE=0→break事件后异步清零或软件清零
运行状态→MOE=1
- 输出使能(CCxE,CCxNE):
情况1:(CCxE,CCxNE)= (0,1)或(1,0)或(1,1),允许输出。
其中1或0代表的通道 在空闲模式下的状态选择由OSSI决定;
其中0代表的通道 在运行模式下关闭状态选择由OSSR决定;
情况2:(CCxE,CCxNE)= (0,0) ,禁止输出
该情况下,IO输出由GPIO逻辑接管
最后
以上就是忧心香水为你收集整理的STM32系列TIMER互补输出详解的全部内容,希望文章能够帮你解决STM32系列TIMER互补输出详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复