stm32 刹车 功能
来源:互联网 发布:中文文章润色软件 编辑:程序博客网 时间:2024/04/28 14:42
stm32 有pwm输出,可以用来驱动电机,刹车就是关掉pwm紧急停止的意思。
高级控制定时器(TIM1 和 TIM8)可以输出两路互补信号,并管理输出的关断与接通瞬间。这段时间通常称为死区,用户必须根据与输出相连接的器件及其特性(电平转换器的固有延迟、开关器件产生的延迟...)来调整死区时间
打算使用stm32f100系列开发一款风机驱动器,发现刹车输入的结果和手册上的有所不同,请高手解释一下刹车输入后的具体时序,谢谢!!
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 波形可以在示波器上显示出来。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
- //Set the Dead time
- /*
- To set the deadtime(TD),is to determ the regesiter DTG[7:0]
- DTG[7:0]:(Dead-time generator setup)
- DTG[7:5]=0xx => DT=DTG[7:0]*Tdtg, Tdtg = Tdts;
- DTG[7:5]=10x => DT=(64+DTG[5:0])*Tdtg, Tdtg = 2*Tdts;
- DTG[7:5]=110 => DT=(32+DTG[4:0])*Tdtg, Tdtg = 8*Tdts;
- DTG[7:5]=111 => DT=(32+DTG[4:0])*Tdtg, Tdtg = 16*Tdts;
- Tdts is determined by CKD[1:0], which is from Timer control regesity TIMx_CR1[9:0]
- representing the meaning of the Timer clock Devider
- CKD[1:0] = 00 Tdts = TCK_INT
- CKD[1:0] = 01 Tdts = 2 * TCK_INT
- CKD[1:0] = 10 Tdts = 4 * TCK_INT
- CKD[1:0] = 11 Reserved
- Where TCK_INT is the Timer Clock.
- Here, the Tdts = TCK_INT = 1/72 uS.
- So, the DT maybe as long as follows:
- 0nS ~ 1763nS The step is 1/72 uS
- 1777nS ~ 3527nS The step is 2*1/72 uS
- 3555nS ~ 7000nS The step is 8*1/72 uS
- 7111nS ~ 14000nS The step is 16*1/72 uS
- Here, We make the DT equals to 600 nS, which is in the limitation of No.1.
- So, DTG[7:0] = 0.6/(1/72) = 43 = 0x2B.
时钟的周期是(1/72)us,Tdts = TCK_INT,CKD[1:0] = 00,600ns=0.6us,0.6/(1/72)=72*0.6=43.2=0x2b
- TIM_BDTRInitStructure.TIM_DeadTime = 0x2B;
0 0
- stm32 刹车 功能
- stm32 刹车
- stm32 死区 刹车 pwm
- stm32 死区 刹车 pwm
- 刹车
- STM32F051 刹车功能问题及解决方案
- 通过处理按键模拟加速度,刹车等功能
- 通过处理按键模拟加速度,刹车等功能
- 通过处理按键模拟加速度,刹车等功能
- 通过处理按键模拟加速度,刹车等功能
- 通过处理按键模拟加速度,刹车等功能
- 通过处理按键模拟加速度,刹车等功能
- 通过处理按键模拟加速度,刹车等功能
- 通过处理按键模拟加速度,刹车等功能
- 学会刹车
- 及时刹车
- 刹车总结
- stm32 fsmc 功能讲解
- ORACLE 收集统计信息
- MFC中获取窗口句柄以及相关API
- Android网络是否可用
- 网络大学是我最亲密的朋友,改变了我的生活
- Android Dialog用法
- stm32 刹车 功能
- JSP JDBC 连接 SqlServer2008 转载自--》凌云鹏韵
- 南宁玻尿酸丰胸去哪里好
- 黄聪:CodeSmith和PowerDesigner的使用安装和数据库创建(原创系列教程)
- 浅谈java异常[Exception]
- 配置文件编辑器
- 公司项目须知和自己在工作上的心得体会
- 高校智能教学新突破---CY-TIY物联网实验箱
- 安永华明:发挥知识领袖力量, 行中国特色知识管理