STM32刹车后的输出通道详解

        网上看了很多资料,感觉对刹车后的互补输出通道的解释都有点乱,我分享一下我的思路,如果有问题,请指出~

        首先,要明确一个概念是,刹车的信号可以来自刹车输入引脚,也可以来自时钟安全系统CSS的时钟失败事件(晶振异常,时钟源异常等),这里不讨论时钟存不存在的问题。

        看刹车和死区寄存器TIMx_BDTR,其中的位15有以下描述,

MOE位,控制了输出比较通道OC和互补输出OCN的输出。当刹车输入时,就会被清0,即禁止OC和OCN输出或强制为空闲状态。注意这里的或,说明OC和OCN输出什么还需要其它的因素。

在手册中有这么一句,”由OSSI位选择“。

刹车和死区寄存器TIMx_BDTR的位10(即OSSI位)有以下描述,

OSSI位是用于当MOE=0(也就是刹车输入清0),这里就需要结合另一个表看,看下表中红色框选部分。

当OSSI位为0,异步地执行OCx=CCxP(也就是输出无效电平,可以简单举个例子,如果输出有效电平,OCREF=1,CCxP=1,OCx=CCxP=1高电平,但是由于CCxP=1,此时高电平是无效电平。),OCxN=CCxNP类似,以及OCx_EN=0和OCxN_En=0关闭输出。这里我有个疑惑没得到解决,就是我的OSSI位是0,根据描述输出使能会被禁止,但是当我MOE再次打开时,PWM又能正常输出。(希望大佬解惑!!!)

当OSSI位为1,异步地执行OCx=CCxP(也就是输出无效电平,可以简单举个例子,如果输出有效电平,OCREF=1,CCxP=1,OCx=CCxP=1高电平,但是由于CCxP=1,此时高电平是无效电平。),OCxN=CCxNP类似,以及OCx_EN=1和OCxN_En=1开启输出,但是其实此时MOE是为0的,输出没有真正输出。我理解这个功能是为了后续MOE置1开启输出时,不需要再次配置。

OSSI位不管是0还是1,都会在一个死区时间后OCx=OISx, OCxN=OISxN,也就是空闲状态,

看TIM1和TIM8控制寄存器2(TIMx_CR2),

位8 OIS1的解释就是当MOE=0(也就是刹车输入清0),OC1输出该位的值,就是说OIS1值是1,OC1输出高电平;OIS1值是0,OC1输出低电平。“如果实现了OC1N,则死区后“就是说如果OC1的互补通道也使用了,在死区时间后才会输出高低电平。其实很好理解,死区时间的作用就是要防止输出互补通道重叠,如果互补通道没用,只用了一个通道,就不需要在死区时间后了。

位 9 OIS1N解释类似位8,当MOE=0(也就是刹车输入清0),OC1N输出该位的值,就是说OIS1N值是1,OC1N输出高电平;OIS1N值是0,OC1N输出低电平。

下面的pwm信号,配置互补通道的有效电平都是高电平,所以OC的无效电平是低电平。同时设置OC的空闲电平是高电平。所以当刹车信号输入时,会先输出无效电平低电平,然后又马上被拉高为空闲电平。(这个配置得刹车信号在OC刚好是高电平的时候输入才能观测到)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值