完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
28035芯片,总共要用到8个PWM端口输出,当PWM频率设置为20KHz时,TBPRD设置为1500,那么实际可调占空比的数值范围为0-1500,如何在频率不变的情况下,提高占空比数值范围?
下面是PWM设定程序 void InitEPWM_AQ_DB(void) [ char i; volatile struct EPWM_REGS *PWMDef[] = [&EPwm1Regs,&EPwm2Regs,&EPwm3Regs,&EPwm4Regs]; InitEPwm1Gpio(); //PWM1AB 引脚配置 InitEPwm2Gpio(); //PWM2AB 引脚配置 InitEPwm3Gpio(); //PWM3AB 引脚配置 InitEPwm4Gpio(); //PWM4AB 引脚配置 for(i=0;i<4;i++) [ EALLOW; //T_PWM =2 x TBPRD x T_TBCLK PWMDef->TBPRD = 1500; //频率20KHz //EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; PWMDef->CMPA.half.CMPA = 0; //占空比 PWMDef->CMPB = 0; //PWMxB占空比 PWMDef->TBPHS.half.TBPHS = 0x0000; // Phase is 0 PWMDef->TBCTR = 0x0000; // Clear counter // Setup TBCLK PWMDef->TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up down,中间对其计数模式 PWMDef->TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading PWMDef->TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; PWMDef->TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT; PWMDef->TBCTL.bit.CLKDIV = TB_DIV1; PWMDef->AQCTLA.bit.CAU = AQ_SET; PWMDef->AQCTLA.bit.CAD = AQ_CLEAR; PWMDef->AQCTLB.bit.CBU = AQ_SET ; PWMDef->AQCTLB.bit.CBD = AQ_CLEAR; PWMDef->DBCTL.bit.OUT_MODE = DB_DISABLE; //S1 = 0; S0 = 0 关闭死区控制 EDIS; ] ] |
|
相关推荐
5 个讨论
|
|
28035芯片,总共要用到8个PWM端口输出,当PWM��率设置为20KHz时,TBPRD设置为1500,那么实际可调占空比的数值范围为0-1500,如何在频率不变的情况下,提高占空比数值范围?
Eric: 使用高精度PWM。 C:ticontrolSUITEdevice_supportf2803xv130DSP2803x_examples_ccsv5hrpwm C:ticontrolSUITEdevice_supportf2803xv130DSP2803x_examples_ccsv5hrpwm_duty_sfo_v6 - ERIC |
|
|
|
|
|
按照例程的做法,分辨率只能比原来提高1倍,不知道有没有更好的方法实现更高的分辨率 // Some useful Period vs Frequency values // SYSCLKOUT = 60 MHz // --------------------------- // Period Frequency // 1000 60 kHz // 800 75 kHz // 600 100 kHz // 500 120 kHz // 250 240 kHz // 200 300 kHz // 100 600 kHz // 50 1.2 Mhz // 25 2.4 Mhz // 20 3.0 Mhz // 12 5.0 MHz // 10 6.0 MHz // 9 6.7 MHz // 8 7.5 MHz // 7 8.6 MHz // 6 10.0 MHz // 5 12.0 MHz void HRPWM1_Config(Uint16 period) [ // ePWM1 register configuration with HRPWM // ePWM1A toggle low/high with MEP control on Rising edge EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load EPwm1Regs.TBPRD = period-1; // PWM frequency = 1 / period EPwm1Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially EPwm1Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension EPwm1Regs.CMPB = period / 2; // set duty 50% initially EPwm1Regs.TBPHS.all = 0; EPwm1Regs.TBCTR = 0; EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // EPwm1 is the Master EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // PWM toggle low/high EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR; EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; EALLOW; EPwm1Regs.HRCNFG.all = 0x0; EPwm1Regs.HRCNFG.bit.EDGMODE = HR_REP; //MEP control on Rising edge EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP; EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; EDIS; ] |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
684 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
600 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1055 浏览 1 评论
741 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
525 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
166浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
128浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
53浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 02:22 , Processed in 0.842990 second(s), Total 51, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号