stm32  有pwm输出,可以用来驱动电机,刹车就是关掉pwm紧急停止的意思。
高级控制定时器(TIM1 和 TIM8)可以输出两路互补信号,并管理输出的关断与接通瞬间。
这段时间通常称为死区,用户必须根据与输出相连接的器件及其特性(电平转换器的固有延
迟、开关器件产生的延迟...)来调整死区时间
打算使用stm32f100系列开发一款风机驱动器,发现刹车输入的结果和手册上的有所不同,请高手解释一下刹车输入后的具体时序,谢谢!!

输出状态.jpg (28.44 KB, 下载次数: 0)

刹车输入状态.jpg (46.79 KB, 下载次数: 1)

STM32输出互补PWM时,设置死区和刹车::::OSSR位,0:当定时器不工作时,禁止OC/OCN输出(OC/OCN使能输出信号=0);
1:当定时器不工作时,一旦CCxE=1或CCxNE=1,OC/OCN使能并输出无效电平,
然后置OC/OCN使能输出信号=1。
解释:定时器不工作的含义:就是令某一通道失能,即CCxE=0或CCxNE=0。这时一旦当CCxE或CCxNE其中有一个使能时,而另一个失能时,这时失能的通道输出无效电平,使能的通道输出程序中配置的模式。
死区用来防止全桥短路,刹车就是全导通,你做过h桥就知道了

死区和刹车功能配置,高级定时器才有的,通用定时器不用配置TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Disable;//运行模式下输出选择TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Disable;//空闲模式下输出选择TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;         //锁定设置TIM_BDTRInitStructure.TIM_DeadTime = 0x90;                                         //死区时间设置TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;                 //刹车功能使能TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;//刹车输入极性TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;//自动输出使能;//1:MOE(主输出使能)能被软件置’1’或在下                   一个更新事件被自动置’1’(如果刹车输入无效)。TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);
在配置完pwm后,开启所有输出(MOE为1)

刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态;
高级控制定时器 TIM1 能够输出两路互补信号并且能够管理输出的瞬时关
断和接通。这段时间通常被称为死区,应该根据连接到输出的器件和它们的特性
(电平转换的延时、电源开关的延时等)来调整死区时间。
特别的是,在转换到 IDLE 状态时(MOS 下降到 0)死区被激活。
同时设置 CCxE 和 CCxNE 位将插入死区,如果存在刹车电路,则还要设置
MOE 位。 每一个通道都有一个 10 位的死区发生器。 参考信号 OCxREF 可以产生 2
路输出 OCx 和 OCxN。如果 OCx 和 OCxN 为高有效:
· OCx 输出信号与参考信号相同,只是它的上升沿相对于参考信号的上
升沿有一个延迟。
· OCxN 输出信号与参考信号相反,只是它的上升沿相对于参考信号的下
降沿有一个延迟。
如果延迟大于当前有效的输出宽度(OCx 或 OCxN), 则不会产生相应的脉冲。

占空比的计算:
STM32 的高级定时器时钟 TIM1CLK 为固定 72MHz, TIM1 预分频为 0x0(系统
高速时钟不分频), 所以 TIM1 计数器时钟频率为 72MHz。I/O 口时钟为固定值
50MHz,PA8、PA9、PA10、PA11 设为推拉模式。
TIM1 在下面定义的频率下工作:
TIM1 频率= TIM1CLK/(TIM1_Period + 1) = 17.57 KHz。
TIM1 CC1 寄存器的值为 0x7FFF, 所以 TIM1_CH1 和 TIM1_CH1N 产生一个频
率为 17.57KHz 的信号,这个信号的占空比为:
TIM1_CH1 占空比 = TIM1_CCR1 /(TIM1_Period + 1) = 50%。
TIM1 CC2 寄存器的值为 0x3FFF, 所以 TIM1_CH2 和 TIM1_CH2N 产生一个
17.57KHz 的信号,它的占空比为:
TIM1_CH2 占空比 = TIM1_CCR2 / (TIM1_Period + 1)= 25%。
TIM1 CC3 寄存器的值为 0x1FFF, 所以 TIM1_CH3 和 TIM1_CH3N 产生一个
17.57KHz 的信号,它的占空比为:
TIM1_CH3 占空比 = TIM1_CCR3 / (TIM1_Period + 1) = 12.5%。
TIM1 波形可以在示波器上显示出来。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1. //Set the Dead time
  2. /*
  3. To set the deadtime(TD),is to determ the regesiter DTG[7:0]
  4. DTG[7:0]:(Dead-time generator setup)
  5. DTG[7:5]=0xx => DT=DTG[7:0]*Tdtg, Tdtg = Tdts;
  6. DTG[7:5]=10x => DT=(64+DTG[5:0])*Tdtg, Tdtg = 2*Tdts;
  7. DTG[7:5]=110 => DT=(32+DTG[4:0])*Tdtg, Tdtg = 8*Tdts;
  8. DTG[7:5]=111 => DT=(32+DTG[4:0])*Tdtg, Tdtg = 16*Tdts;
  9. Tdts is determined by CKD[1:0], which is from Timer control regesity TIMx_CR1[9:0]
  10. representing the meaning of the Timer clock Devider
  11. CKD[1:0] = 00    Tdts = TCK_INT
  12. CKD[1:0] = 01    Tdts = 2 * TCK_INT
  13. CKD[1:0] = 10    Tdts = 4 * TCK_INT
  14. CKD[1:0] = 11    Reserved
  15. Where TCK_INT is the Timer Clock.
  16. Here, the Tdts = TCK_INT = 1/72 uS.
  17. So, the DT maybe as long as follows:
  18. 0nS  ~   1763nS  The step is 1/72 uS
  19. 1777nS   ~   3527nS  The step is 2*1/72 uS
  20. 3555nS   ~   7000nS  The step is 8*1/72 uS
  21. 7111nS   ~   14000nS     The step is 16*1/72 uS
  22. Here, We make the DT equals to 600 nS, which is in the limitation of No.1.
  23. So, DTG[7:0] = 0.6/(1/72) = 43 = 0x2B.
  1. TIM_BDTRInitStructure.TIM_DeadTime = 0x2B;
时钟的周期是(1/72)us,Tdts = TCK_INT,CKD[1:0] = 00,600ns=0.6us,0.6/(1/72)=72*0.6=43.2=0x2b

stm32 刹车 功能相关推荐

  1. 高级定时器实例-PWM互补输出与刹车功能

    前言 仅以此篇文章梳理我编写该实例的过程 概述 我手中的正点原子STM32MINI板所用的主控型号为STM32F103C8T6,因此高级定时器只有TIM1和TIM8,本章我所使用的资源为TIM1的CH ...

  2. 步进电机为何要有刹车功能(brake)

    一般的步进电机是不带刹车功能的,但对于断电就需要停止的电机需要刹车功能

  3. stm32温度控制按键_干货 | STM32常用功能介绍

    RM校内赛就在眼前,但是咸鱼了一个寒假,对比赛毫无准备,肿么办?? 莫得事!因为我们给大噶带来了新一波干货!今天介绍的STM32单片机,能统领"虾兵蟹将", 大噶好我们是虾兵蟹将( ...

  4. stm32 引脚功能重复_STM32的复用时钟何时开启?

    STM32的AFIO时钟真的是在开启引脚复用功能的时候开启吗?其实并不是~ 什么是复用? 我们知道,STM32有很多外设,这些外设的外部引脚都是与GPIO共用的.我们可以通过软件来配置引脚作为GPIO ...

  5. STM32定时器功能概括

    定时器分类 不同的芯片定时器的个数也是不同的,以STM32F103ZE有8个定时器(定时器的具体个数查相关手册). 定时器的分类:高级定时器.通用定时器.基本定时器,这3类定时器的功能各不相同. 定时 ...

  6. 项目实战第三篇:STM32多功能智能小车硬件选型2(传感器选型篇)

    目录预览 1.概述 2.传感器选型 2.1.超声波传感器 2.2.蜂鸣器 2.3.蓝牙模块 2.4.显示模块 2.5.循迹模块 3.自由扩展功能 3.1.机械臂 3.2.视觉抓取小车 4.总结 1.概 ...

  7. STM32入门100步 第5期 STM32内部通信功能

    文 / 杜洋  洋桃电子 到洋桃电子全部文章:http://www.doyoung.net/YT/index.html  这篇文章PDF百度云下载:https://pan.baidu.com/s/1h ...

  8. stm32 断路功能和互补输出

    CR2 CCxE 和 CCxNE 位同时置 1 并且 MOE 位置 1(如果存在断路)时,将使能死区插入. TIMx_BDTR 寄存器中的 DTG[7:0] 位用于控制所有通道的死区生成.将基于参考波 ...

  9. STM32部分功能所在文件位置

    NVIC所在文件:misc.c EXTI所在文件:stm32f10x_it.c 关于定时器包括PWM的:stm32f10x_tim.c

最新文章

  1. UVA 10306 e-Coins(全然背包: 二维限制条件)
  2. android relativelayout 点击事件,Android Relativelayout点击背景行为
  3. Windows 8.1 PLSQL_32连接到RHEL6.1 Oracle10gr2_64
  4. Leetcode - 144. Binary Tree Preorder Traversal (层次遍历)
  5. 【Matlab】如何把数组矩阵写入txt文件?并用逗号或空格隔开
  6. OpenCV 机器视觉入门精选 100 题(附 Python 代码)
  7. web.xml初始化spring容器
  8. controller方法名一样参数传递不同如何根据参数匹配_【Java学习 | Javase】方法
  9. 【CSWS2014 Summer School】互联网广告中的匹配和排序算法-蒋龙(上)
  10. 全国计算机等级考试题库二级C操作题100套(第23套)
  11. Android 第十九课 大喇叭--广播机制----动态注册监听网络变化与静态注册实现开机启动
  12. Eclipse 控制console
  13. C++学习之路 | PTA(甲级)—— 1114 Family Property (25分)(带注释)(并查集)(精简)
  14. 利用TCN网络实现MNIST手写体数据集的识别
  15. 2017-3-23校内训练
  16. Python之代码性能分析工具(时间+内存)
  17. java 神经网络算法_70行Java代码实现深度神经网络算法分享
  18. KODI(原XBMC)二次开发完全解析(一)
  19. python打开文件,出现OSError
  20. 医学图像笔记(一)dicom数据格式

热门文章

  1. 纵横内外·突破盲区|BF-TR8500​高功率全频段数字中继台
  2. 录屏功能怎么打开?检查一下你的电脑这些设置
  3. 多测师肖sir_高级讲师_第2个月第35讲解monkey
  4. 遥感数据处理流程新概念(一) ——RSD的面向任务
  5. 用scoop代替chocolatey做Windows包管理器
  6. 酷早报:7月21日Web3加密行业新闻大汇总
  7. 李白打酒 话说大诗人李白,一生好饮。幸好他从不开车。
  8. ifix如何设画面大小_IFIX优化_画面设计.pdf
  9. android 播放短信铃声,Android 播放自定义铃声
  10. 马斯克成全球首富!万字最新访谈披露,信息量极大,远见令人震撼