stm32关于带死区时间的互补PWM输出

这篇具有很好参考价值的文章主要介绍了stm32关于带死区时间的互补PWM输出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.互补PWM输出简介

  • 在使用stm32输出PWM波形时,笔者所用的stm32f103zet6中的高级定时器TIM1和TIM8可以输出互补的PWM波形,使用互补的PWM波常见与一些半桥电路和全桥电路控制中,使用MCU自带的高级时钟可以简便的解决互补PWM输出问题。
    笔者在控制半桥电路中应用了MCU自带的TIM1时钟CH_1和CH_1N的输出带死区时间的互补PWM波形,输出稳定。

2.互补PWM波输出设置

/**
 * @brief 	互补的PWM输出初始化.
 * @param  	arr:计数总数;
			psc:预分频;
			ccr1_val:计数ccr1后翻转电平;
			deadtime:死区时间.
 * @retval 	None.
 * @msg	   	PWM输出频率为72MHz/(arr+1)*(psc+1)此处设置PWM频率为100KHz;
			死区时间设置为16*1/72us=222.2ns(0x10).
 */
void TIM1_PWM1_DeadtimeInit(u16 arr,u16 psc,u16 CCRx_val,u16 deadtime)
{
    GPIO_InitTypeDef GPIO_InitSturcture;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
    TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);

    GPIO_InitSturcture.GPIO_Pin = GPIO_Pin_8 ;
    GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitSturcture.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitSturcture);
	
	GPIO_InitSturcture.GPIO_Pin = GPIO_Pin_13 ;
    GPIO_InitSturcture.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitSturcture.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitSturcture);
 
    TIM_TimeBaseInitStructure.TIM_Period = arr;      	  					/*设置在自动重装载周期值*/
    TIM_TimeBaseInitStructure.TIM_Prescaler = psc;	 	  					/*设置预分频值*/
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;			/*向上计数模式*/
    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;				/*死区、输入滤波、输入采样不分频*/
    TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0x00;    				/*重复计数器设置为0*/
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure);
		
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;			 			/*PWM1输出方式*/
    TIM_OCInitStructure.TIM_Pulse = CCRx_val;								/*计数到CCRx_val电平反转,即设置CCRx的值*/
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;				/*输出通道电平极性配置,决定输出的有效电平*/
    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High;				/*互补输出通道电平极性配置,决定输出的有效电平*/
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 			/*输出使能*/
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;			/*互补输出使能*/
    TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;			/*输出通道空闲电平极性配置(刹车后为空闲状态)*/
    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Set;  			/*互补输出通道空闲电平极性配置*/
	
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);								/*根据TIM指定的参数初始化外设TIM1 OC1*/
	TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);						/*使能TIM1在CCR1上的预装载寄存器*/
		
    /*刹车和死区设置*/
    TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable; 			/*OSSR:运行模式下“关闭状态”选择*/
    TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable; 			/*OSSI:空闲模式下“关闭状态”选择*/
    TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1; 					/*锁定设置,级别为1*/
    TIM_BDTRInitStructure.TIM_DeadTime = deadtime;							/*死区延时时间*/
    TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;					/*禁止刹车输入*/
    TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low; 		/*刹车输入极性*/
    TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable; /*自动输出使能*/
    TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
	
	TIM_ARRPreloadConfig(TIM1,ENABLE);										/*设置ARR值(周期值)在当前周期即改变*/
	
	TIM_Cmd(TIM1, ENABLE);
    TIM_CtrlPWMOutputs(TIM1, ENABLE);										/*主输出使能,高级定时器专用*/							

	TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); 								/*TIM1 DMA请求使能,注:TIM1_Update请求对应DMA通道为DMA1_chanel5*/
}
  • 此处是笔者所初始化的一段互补PWM波形输出,通过此段初始化代码可以简单的看到互补PWM输出只需要通过相应的设计即可完成,不需要额外配置其他硬件电路,将两个3.3v的互补PWM接到相应的硬件电路与即可完成。
  • 关于死区时间计算可以仔细研读一下stm32的手册

stm32 tim1 互补pwm,stm32,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-615232.html

到了这里,关于stm32关于带死区时间的互补PWM输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 互补PWM 带死区 HAL

      DT_time=DT_data/F DT_time:死区时间 DT_data:写入到单片机里的值 F:定时器主频 例如:Timer1主频64MHz,死区时间1us 1us=DT_data/64M DT_data=64 将64写入sBreakDeadTimeConfig.DeadTime即可将死区设置为1us  

    2024年02月15日
    浏览(39)
  • STM32 CubeMX PWM三种模式(互补,死区互补,普通)(HAL库)

    开启互补,设置周期500us(频率2Khz);(1/周期=频率) 实验现象:100/500=0.8;所以输出2Khz80%的占空比互补对称波形 设置死区时间1us 以上就是今天要讲的内容,本文仅仅简单介绍了PWM的使用,而PWM提供了大量能使我们快速便捷地处理数据的函数和方法。

    2024年02月04日
    浏览(44)
  • 一文搞懂如何使用STM32驱动直流电机(普通PWM输出和L298N、高级定时器输出带死区双通道互补PWM和IR2110S及自举电路、H桥电路和电机正反转)

    笔者从开始接触嵌入式单片机开始,就和驱动电机相伴而走。从最开始的直接买L298N驱动模块直接驱动直流电机,到现在自己设计PCB电路板驱动直流电机,可以说是和电机驱动共同成长了。现在笔者将这一过程的收获记录下来,希望对大家有所帮助。 不用详细了解L298N芯片和

    2024年02月02日
    浏览(46)
  • 【单片机】STM32单片机,定时器,多路PWM,TIM1、TIM2、TIM3、TIM4,STM32F103

    下图是定时器相关引脚: 在《STM32中文参考手册V10.pdf》有写: TIM1 的PWM是带互补输出的,较为高级和复杂,有兴趣可以参考其他介绍文章,这里的代码让7个引脚输出PWM。 调用: 这里没有重映射,注意不能把PA9 PA10 初始化成串口去了。 timer.c timer.h 调用: 这里没有重映射。

    2024年02月11日
    浏览(65)
  • STM32使用高级定时器输出互补pwm波

    最近做的一个项目用到stm32,网上查了很多资料,也踩了很多坑,这里记录一下配置的步骤和说明 硬件使用的是stm32h750vbt6; 软件用到了stm32cubemx和keil5; 打开Debug模式方便调试,可以忽略,不影响代码运行 在用cube配置时钟源时,有下面三个选项 Disable(禁用) BYPASS Clock Sou

    2024年02月16日
    浏览(71)
  • TIM-输出比较(PWM)——STM32

    Oc (Output Compare) 输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出的功能 第一步,

    2024年02月10日
    浏览(39)
  • 【正点原子STM32连载】第二十三章 高级定时器互补输出带死区控制实验 摘自【正点原子】APM32F407最小系统板使用指南

    本章将介绍使用APM32F407输出带死区和刹车控制的两路互补PWM。通过本章的学习,读者将学习到高级定时器的互补输出、死区插入和刹车的功能的使用。 本章分为如下几个小节: 23.1 硬件设计 23.2 程序设计 23.3下载验证 23.1 硬件设计 23.1.1 例程功能 定时器8通道1及其互补通道输

    2024年02月09日
    浏览(61)
  • STM32 TIM输出比较、PWM波形

    单片机学习! 目录 一、输出比较简介 二、PWM简介 三、输出比较通道 3.1通用定时器的输出比较部分电路 3.2高级定时器的输出比较部分电路 四、输出模式控制器 五、PWM基本结构 六、PWM参数计算 总结 前言         文章讲述STM32定时器的输出比较功能,它主要用来输出PWM波形

    2024年01月20日
    浏览(64)
  • 兆易GD32E508的SHRTIM配置 主从定时器 产生2对相位可调互补PWM 带死区

    GD32E50X的SHRTIM与STM32的HRTIM工作原理高度相似,但是兆易官方只有从定时器发波的例子(批评),这里教大家使用主定时器来改变从定时器的起始相位的方式产生移相互补PWM(库函数配置方式)。 SHRTIM 高分辨率时钟,在180MHz主频基础上64倍频,可以获得最高11.52GHz频率的PWM,用

    2024年02月11日
    浏览(51)
  • STM32-HAL库08-TIM的输出比较模式(输出PWM的另一种方式)

    STM32F103C6T6最小系统板 STM32CUBEMX(HAL库软件) MDK5 示波器或者逻辑分析仪 通过定时器TIM的输出比较模式得到预定频率与占空比的PWM波形;其中定时器输出比较模式与PWM模式的区别在于!!! PWM模式在同一个TIM下所有输出口的频率一致不能单独控制单个的频率 ,而输出比较模式

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包