如何解决STM32F051-取决于过电流输入的不同空闲状态
我有一个STM32F051驱动H桥(通过适当的栅极驱动器和过电流脉冲发送回MCU),并使用TIM1和互补信号(和空载时间生成)为变压器供电。
我正在尝试根据收到的过电流脉冲配置其他“安全”状态:
- 在高压侧过电流时,请关闭低压侧FET,然后再打开高压侧FET。
- 在低压侧过电流时,请关闭高压侧FET,再打开低压侧FET。
想法是要提高逆变器的过电流性能。
当在GPIO上接收到脉冲时,是否可以立即将定时器的输出手动设置为定义的状态?我尝试使用break函数,但是您只能设置一个预定义的“安全”状态。对于我的应用程序,我需要两个(目前还有更多)。
解决方法
最后我找到了结果,并与您分享。
libopencm3的source code和examples帮助我找到了答案。
#define TIM_CCMR1_OC1M_INACTIVE (0x2 << 4)
#define TIM_CCMR1_OC1M_FORCE_LOW (0x4 << 4)
#define TIM_CCMR1_OC1M_FORCE_HIGH (0x5 << 4)
#define TIM_CCMR1_OC1M_PWM2 (0x7 << 4)
#define TIM_CCMR1_OC2M_INACTIVE (0x2 << 12)
#define TIM_CCMR1_OC2M_FORCE_LOW (0x4 << 12)
#define TIM_CCMR1_OC2M_FORCE_HIGH (0x5 << 12)
#define TIM_CCMR1_OC2M_PWM2 (0x7 << 12)
实用程序功能可禁用和启用输出。
void disable_pwm(){
TIM1->CCER &= ~(TIM_CCER_CC1E | TIM_CCER_CC1NE | TIM_CCER_CC2E | TIM_CCER_CC2NE);
}
void enable_pwm(){
TIM1->CCER |= (TIM_CCER_CC1E | TIM_CCER_CC1NE | TIM_CCER_CC2E | TIM_CCER_CC2NE);
}
以下是强制H桥将负载短路至地面的方法。
TIM1->CCMR1 &= ~TIM_CCMR1_OC1M_Msk;
TIM1->CCMR1 |= TIM_CCMR1_OC1M_FORCE_LOW;
TIM1->CCMR1 &= ~TIM_CCMR1_OC2M_Msk;
TIM1->CCMR1 |= TIM_CCMR1_OC2M_FORCE_LOW;
希望这对其他人有用!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。