【手写FOC底层驱动代码】1、使用高级定时器产生PWM与死区

【手写FOC底层驱动代码】1、使用高级定时器产生PWM与死区,第1张

【手写FOC底层驱动代码】1、使用高级定时器产生PWM与死区 1、HAL库配置

说明:
参考:FOC和SVPWM的C语言代码实现
硬件:STM32F405RGT6
软件:STM32CubeMX、Keil

1、系统配置



2、定时器1配置
(1)选择通道与引脚


(2)自定义用户常量
将以下值依次加入到User Constants

#define CKTIM	    ((u32)72000000uL)  //主频
#define PWM_PRSC    ((u8)0)            //TIM1分频系数
#define PWM_FREQ    ((u16) 15000)      //PWM频率(Hz)
#define PWM_PERIOD  ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))))
#define REP_RATE    (1)                //该参数可以调整电流环的刷新频率,刷新周期:(REP_RATE + 1)/(2*PWM_FREQ) 秒
                                       //因为电流环的采样是靠TIM1来触发的
#define DEADTIME_NS	((u16)1000)         //死区时间(ns),范围:0-3500
#define DEADTIME    (u16)((unsigned long long)CKTIM/2 * (unsigned long long)DEADTIME_NS/1000000000uL) 
————————————————
版权声明:本文为CSDN博主「qlexcel」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qlexcel/article/details/95227991



(3)配置定时器1

3、生成工程

2、硬件测试

在主函数中加入下列代码测试PA8、PB13的互补PWM与死区时间。

  
	
	HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
	HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);
	__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,2800);

  


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4949224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存