欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

玩转TM4C1294XL(5)——PWM配置(死区互补输出)

发布时间:2023/12/20 编程问答 63 豆豆
生活随笔 收集整理的这篇文章主要介绍了 玩转TM4C1294XL(5)——PWM配置(死区互补输出) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.简介
       简单介绍芯片内部的PWM模块,分享PWM的配置。本人是边学习边记录,内容仅作参考,有错误的地方请见谅。

2.PWM介绍
       本部分内容参考自TI官方手册。
       芯片内部有一个独立的PWM产生模块,相比于使用Timer的PWM模式,这个独立的PWM模块功能更强,带有死区控制,最多可以输出4组带死区的互补PWM,这样的功能还是很不错的,用来驱动H桥电路或者三相逆变桥还是很实用的。
       除了基本特性外,PWM还有一些其他特性,比如支持外部故障输入,触发ADC等。外部故障输入我的理解就是检测到外部故障信号生效时快速关断PWM,比如PWM驱动H桥,H桥输出短路时,电路检测到故障生成一个故障信号反馈到芯片内部,PWM检测到这个故障信号可以快速关断PWM信号防止H桥上的管子损坏。PWM模块也支持中断,支持的中断也有挺多种,上面说的检测到故障可以进中断,同时4个PWM模块又有自己独立的中断控制器,中断控制十分灵活。总之这个独立的PWM模块功能非常多,更详细的内容可以查看手册。

图1 PWM模块功能框图

3.PWM配置
       PWM配置实现M0PWM0输出1k频率25%占空比的信号。M0PWM2和M0PWM3输出一组互补的信号,20k频率50%占空比,上升沿和下降沿死区时间均为500ns。

void bsp_InitPwm(void) {uint32_t ui32PWMClockRate;/********* M0PWM0输出1k 25%占空比的pwm ************/SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);GPIOPinConfigure(GPIO_PF0_M0PWM0);GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_0);PWMClockSet(PWM0_BASE, PWM_SYSCLK_DIV_4); //PWM时钟源4分频 120M/4=30Mui32PWMClockRate = SystemCoreClock / 4;PWMGenConfigure(PWM0_BASE, PWM_GEN_0,PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, (ui32PWMClockRate / 1000)); //1k频率PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0,PWMGenPeriodGet(PWM0_BASE, PWM_GEN_0) / 4); //脉宽1/4周期PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT, true);PWMGenEnable(PWM0_BASE, PWM_GEN_0);/******* 一组20k带 500ns死区的pwm **********/SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);GPIOPinConfigure(GPIO_PF2_M0PWM2); //配置IO功能为PWM输出GPIOPinConfigure(GPIO_PF3_M0PWM3);GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_2);GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_3);PWMGenConfigure(PWM0_BASE, PWM_GEN_1,PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, (ui32PWMClockRate / 20000)); //20k频率PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2,PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1) / 2); //50% Duty PWMDeadBandEnable(PWM0_BASE, PWM_GEN_1, 15, 15); //上升沿和下降沿都是500ns的死区PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT | PWM_OUT_3_BIT, true);PWMGenEnable(PWM0_BASE, PWM_GEN_1); }

       配置步骤,开启外设时钟->配置PWM输出引脚->配置PWM时钟->配置PWM频率->配置脉宽->设置输出状态true->开启对应模块的输出。对于带死区时间的互补输出,需要在输出前配置死区时间,上升沿和下降沿的死区时间都是独立可设置的。互补输出的PWM需要是同一个PWM模块下的一组信号,01、23、45、67这样四组信号可以配置成互补输出。

图2 1kHz 25%占空比PWM

图3 20kHz 500ns死区互补输出PWM

PWM配置keil工程下载

总结

以上是生活随笔为你收集整理的玩转TM4C1294XL(5)——PWM配置(死区互补输出)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。