• Stm32高级定时器(三)


    Stm32高级定时器(三)

     

    1 互补输出和死区插入

    1.1 死区:某个处于相对无效状态的时间或空间

    clip_image002

    本来OCX信号与OCXREF时序同相同步,OCXN信号与OCXREF时序反相同步。但为了安全考虑,以OCXREF为参考基准,OCXN和OCX通道将理论上本该导通的时间点往后延时一下,即做从截止切换到导通状态的延时。

    特点:

    ● OCx输出信号与参考信号相同,只是它的上升沿相对于参考信号的上升沿有一个延迟。

    ● OCxN输出信号与参考信号相反,只是它的上升沿相对于参考信号的下降沿有一个延迟。

    1.2 STM32高级定时器中的死区的计算(请看底部参考文献)

    计算时,先确定Tdts,然后结合你需要的死区时间选择相应的计算档位,最后确定DTG[7:0]。假设STM32f407的TIM1工作在168M,设置Tdts=1/168 us,死区设置为4us,经过估算该死区时间落在DTG[7:5]=111段。

    先算得DTG[4:0]=01010B,再跟DTG[7:5]组合在一起,最后算得DTG[7:0]=11101010B,即0xEA.

    需要注意的是,死区时间的计算是分段计算的,各段的时间步长和计算方式有差别,不可随便填写数据。

    1.3 STM32高级定时器配置死区参数不合适时的问题

    死区时间不能比嵌入死区前的互补通道的有效脉冲还宽,否则相应通道的输出呈无效状态。

    当死区时间比有效电平还长时,就没有机会输出有效电平了。

    clip_image004

    死区波形延迟大于负脉冲

    clip_image006

    死区波形延迟大于正脉冲

    2 使用刹车功能:PWM急停

    通过硬件紧急终止输出

    当使用刹车功能时,依据相应的控制位(TIMx_BDTR寄存器中的MOE、OSSI和OSSR位,TIMx_CR2寄存器中的OISx和OISxN位),输出使能信号和无效电平都会被修改。

    刹车源既可以是刹车输入引脚又可以是一个时钟失败事件。时钟失败事件由复位时钟控制器中的时钟安全系统产生。

    clip_image008

    上图说明,刹车信号(BREAK[MOE])触发时,输出OCx与OCxN在不同的CCxE,CCxP,OISx,CCxNE, CCxNP, OISxN位控制下的输出组合

    3 单脉冲模式(OPM)

    这种模式允许计数器响应一个激励,并在一个程序可控的延时之后产生一个脉宽可程序控制的脉冲。

    clip_image010

    延时时间与脉冲宽度设置主要通过比较:定时器的计数值TIM_CNT、定时器的比较值TIM_CCRx与定时器的周期值TIM_ARR 这三个值来得出。具体如下:
    比较

    向上计数方式

    向下计数方式

    延时时间

    TIM_CCRx - 0

    TIM_ARR - TIM_CCRx

    脉冲宽度

    TIM_ARR - TIM_CCRx

    TIM_CCRx - 0

    4 参考文献

    [1] ST MCU定时器应用中的死区控制话题

    [2] stm32之通用定时器TIM

    [3] STM32高级定时器死区时间设置探究

  • 相关阅读:
    【LeetCode】141. Linked List Cycle
    linux配置java环境变量(详细)
    CUDA中的流与事件
    多语言协作与二进制交互【转】
    /usr/bin/ld: cannot find -lz
    机器学习经典书籍[转]
    Valgrind使用[转]
    Instructions函数对照表:02 xmmintrin.h与SSE指令集[转]
    Eclipse中10个最有用的快捷键组合
    C语言调试的几种方法
  • 原文地址:https://www.cnblogs.com/OneFri/p/5925599.html
Copyright © 2020-2023  润新知