STM32F0x互补波刹车功能

文章详细阐述了STM32定时器的刹车功能,包括刹车信号源、输出状态控制、MOE位变化以及死区时间的影响。在刹车事件发生时,输出会根据OISx和OISxN位进入无效或空闲状态,并可能触发中断。同时,内部实现的写保护机制确保参数配置的安全性。图77展示了输出对刹车信号的响应行为。
摘要由CSDN通过智能技术生成

当使用刹车功能时,输出使能信号无效电平会根据附加控制位(TIMx_BDTR寄存器中的MOEOSSIOSSR位,TIMx_CR2寄存器中的OISxOISxN位)进行修改。在任何情况下,OCxOCxN的输出不能在给定时间内被同时设置为有效电平。

刹车(BRK)通道的信号源可以是连接到BKIN引脚的外部信号源,也可以是以下内部信号源之一:

  • 内核LOCKUP输出
  • PVD输出
  • SRAM奇偶校验错误信号
  • CSS检测器生成的时钟故障事件
  • 比较器输出

注意,可以由软件主动产生一个刹车事件,通过设置TIMx_EGR寄存器中的BG位。

BG: 刹车信号生成
此位由软件设置,以便生成事件,它由硬件自动清除。

  • 0: 无动作
  • 1: 将生成一个刹车事件。MOE位被清除并且BIF标志被设置。并可以产生相关的中断或DMA传输(如果使能的话)。

当退出复位时,刹车电路被禁用,并且MOE位为低。您可以通过设置TIMx_BDTR寄存器中的BKE位来启用刹车功能。刹车信号的输入极性可以通过在同一寄存器中配置BKP位来选择。BKEBKP可以被同时修改。当BKEBKP位被写入时,会在写入生效之前施加1个APB时钟周期的延迟。因此,需要等待1个APB时钟周期,以便在写入操作之后正确地读回相应的位。

因为MOE下降沿可以是异步的,所以在实际信号(作用于输出的)和同步控制位(在TIMx_BDTR寄存器中访问)之间插入了再同步电路。这会导致异步信号和同步信号之间出现一些延迟。特别是,如果在MOE为低的情况下将其写入1,则必须在正确读取之前插入延迟(伪指令)。这是因为您写入异步信号并读取同步信号。

当刹车信号发生时(刹车输入端上选择的电平):

  • MOE位被异步清除,使输出处于无效状态、空闲状态或复位状态(由OSSI位选择)。即使MCU晶振是关闭的,此功能也能正常工作。
  • 一旦MOE=0,每个输出通道都会用TIMx_CR2寄存器OISx位中编程的电平进行驱动。如果OSSI=0,则定时器释放输出使能,否则输出使能保持高电平。
  • 当使用互补输出时:
    • 输出首先置于复位状态无效状态(取决于极性)。这是异步完成的,因此即使定时器没有时钟它也能工作。
    • 如果定时器时钟仍然存在,则死区时间生成器将重新激活,以便在死区时间之后用OISxOISxN位中编程的电平驱动输出。即使在这种情况下,OCxOCxN也不能被同时驱动为有效电平。请注意,由于MOE上的再同步功能,死区持续时间会比平时长一点(大约2个ck_tim时钟周期)。
    • 如果OSSI=0,则定时器释放输出使能,否则一旦CCxECCxNE位中的一个为高,输出使能会保持不变或变高。
  • 刹车状态标志(TIMx_SR寄存器中的BIF位)被置位。如果TIMx_ DIER寄存器中的BIE位被置位,则可以产生中断。
  • 如果TIMx_BDTR寄存器中的AOE位被置位,则MOE位在下一更新事件UEV处被再次自动置位。例如,这可以用于执行输出的调节。否则,MOE将保持低电平,直到您再次将其写入'1'。在这种情况下,它可以用于一些安全场合,您可以将刹车输入端连接到来自电源驱动器热传感器或任何安全组件的警报信号上。

注意:刹车的输入是作用于电平的。因此,当刹车的输入激活时(既不是自动的,也不是通过软件),不能设置MOE。与此同时,无法清除状态标志BIF

刹车可以由极性可编程的BRK输入信号和TIMx_BDTR寄存器中的使能位BKE产生。

除了刹车输入和输出管理之外,在刹车电路内部还实现了写保护,以保护应用程序。它允许您冻结几个参数的配置(死区持续时间、OCx/OCxN极性和禁用时的状态、OCxM配置、刹车使能位和极性)。您可以从TIMx_BDTR寄存器LOCK位选择的3个保护级别中进行选择。请参阅第290页第13.4.18节:TIM1刹车和死区时间寄存器(TIM1_BDTR)。在MCU复位后,LOCK位只能写入一次。

图77,显示了一个输出响应刹车的行为示例。
图77,显示了一个输出响应刹车的行为示例
据说,能读懂这张图的人寥寥无几。你的懂,也许未必真的懂!

问题是:

  • 为什么序号6中,两通道的波形允许同时为高,却还要插入死区时间?
  • 为什么序号9中,刹车到来后,没有插入死区时间,以及为什么在OISx, OISxN同时为1,或同时为0时波形是一样的?

如果你不能回答,说明被STM32官方的库和demo毒害的太深啦!

先说简单的,图中,序号1,2,3,4只有1个通道输出波形,MOE=1时的波形与CCxP有关,这里不解释,前文已讲过。由于只有一个通道,Table 46不起作用。当刹车信号到来时,MOE立即为0,输出的电平取决于空闲电平OISx。

图中的5,6,7,8,9都可以用同一个规则来解释,首先是MOE=1时的波形,要看Table 46,前文已解释,这里略过。另外就是刹车到来时,由于这5个序号中都是至少有一个通道使能,因此根据Table 46,输出波形的电平首先打为对应通道的极性值(CCxP,CCxNP),然后在一个死区时间之后(图中的delay),分别打为空闲电平(OISx, OISxN)。

好,开始解答问题。第一个问题是序号6,注意看,CCxNP为1,是低电平为有效电平,而另一个的CCxP=0,有效电平为高,芯片只保证两个通道不同时为有效电平!而跟高低无关。

第二个问题,当OISx, OISxN同时为1时,按理死区过后要把两个通道都打为1,但电平1都是它们的有效电平,这样是非法的,所以配置无效,全部打0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值