标题: 请教前辈,STC单片机芯片PWM硬件设置 [打印本页]

作者: happy2058    时间: 2023-12-7 22:21
标题: 请教前辈,STC单片机芯片PWM硬件设置
芯片8H3K32S2  系统24M  PWMA_ARR周期 PWMA_CCR占空比
//********************************************************PWMA 互补*****************************************
#define PWM_PSC                         (12-1)        //12分频,0.5us  
#define PWM_PERIOD                 10                        //周期5us
#define PWM_DUTY                         2                        //占空1us        
        
        
void PWMA_Config()                                //
{
        PWMA_PS =  0x40;                                   //P2.6P2.7 管脚
        
        PWMA_PSCRH = (u16)(PWM_PSC >> 8);
        PWMA_PSCRL = (u16)(PWM_PSC);                 
        
        PWMA_CCER2 = 0x00; // 写 CCMRx 前必须先清零 CCERx 关闭通道
        PWMA_CCMR4 = 0x60; // 设置 CC2 为 PWMA 输出模式,PWM模式1
        PWMA_CCER2 = 0x50; // 使能 CC4P4n


        
        PWMA_CCR4H = (u16)(PWM_DUTY >> 8);  //设置占空比
        PWMA_CCR4L = (u16)(PWM_DUTY);
        
        PWMA_ARRH = (u16)(PWM_PERIOD >> 8); // 设置PWM周期
        PWMA_ARRL = (u16)(PWM_PERIOD);
        
        //PWMA_IER
        //PWMA_DTR = 1;
        PWMA_ENO = 0xc0; // 使能 PWM4p4n 端口输出
        PWMA_BKR = 0x80; // 使能主输出
        PWMA_CR1 = 0x01; // 启动PWM定时器
}        
下图是12分频,PWMA_CCR 1us  PWMA_ARR 5us 占空比0.2

下图是6分频,PWMA_CCR 1us  PWMA_ARR 5us 占空比0.2


周期要比设置的ARR要大,大了接近一个正脉宽。在两种分频下还不一样。是硬件清耗吗?产生事件消耗?我把其它功能已经全部关闭,中断也没开。只留了一下PWMA。
然后再改快一点
12分频,PWMA_CCR 0.5us  PWMA_ARR 1us 占空比0.5


实际周期是3倍正脉宽
12分频,PWMA_CCR 0.5us  PWMA_ARR  0.5us 占空比0.5


PWMA_ARR  成了 1us ,正负都一样了,是不是产生事件要消耗0.5US时间?这个怎么计算。对于指令周期现在还是不太懂。


作者: szb314    时间: 2023-12-9 12:00
自己仿真一下,这个单片机就这么快,0.5us 能执行几个指令?IO翻转速度多少 自己测一下就知道了
作者: happy2058    时间: 2023-12-9 17:46
szb314 发表于 2023-12-9 12:00
自己仿真一下,这个单片机就这么快,0.5us 能执行几个指令?IO翻转速度多少 自己测一下就知道了

我不会,我直接打板,写程序调试,不会仿真
作者: npn    时间: 2023-12-9 20:18
szb314 发表于 2023-12-9 12:00
自己仿真一下,这个单片机就这么快,0.5us 能执行几个指令?IO翻转速度多少 自己测一下就知道了

仿真没有这些硬件PWM的寄存器,必须实物测试。
作者: Y_G_G    时间: 2023-12-10 13:37
PWM频率不要设定得太高.你这都1MHZ了
很多应用是用不到那么高的频率的
频率太高,单片机时钟误差影响就越大
建议你试一下100KHZ或者更低的频率试一下
作者: coody_sz    时间: 2023-12-10 17:19
周期 = 设置值+1
作者: happy2058    时间: 2023-12-11 09:12
Y_G_G 发表于 2023-12-10 13:37
PWM频率不要设定得太高.你这都1MHZ了
很多应用是用不到那么高的频率的
频率太高,单片机时钟误差影响就越 ...

谢谢大佬
作者: happy2058    时间: 2023-12-11 09:12
coody_sz 发表于 2023-12-10 17:19
周期 = 设置值+1

你好,我在手册上没找到你说的这个设置。
作者: happy2058    时间: 2023-12-11 10:49
coody_sz 发表于 2023-12-10 17:19
周期 = 设置值+1

为什么要+1.我搞不懂了,烦死人了

作者: Y_G_G    时间: 2023-12-11 18:17
happy2058 发表于 2023-12-11 10:49
为什么要+1.我搞不懂了,烦死人了

这不就是代入公式计算就可以了呀,没有什么高难度的东西,只是麻烦了一点而已
而且,PWM在控制上,一般来说,更重要的占空比,频率并不会要求过高的
比如说,10KHZ,有时候是9KHZ,有时候是11KHZ,这其实影响不大的
除非是频率控制电路
作者: happy2058    时间: 2023-12-11 20:23
Y_G_G 发表于 2023-12-11 18:17
这不就是代入公式计算就可以了呀,没有什么高难度的东西,只是麻烦了一点而已
而且,PWM在控制上,一般来说, ...

谢谢前辈。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1