打印
[触摸8051核FLASH系列]

HC88T3671 6路PWM问题

[复制链接]
5039|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lianziyexiawa|  楼主 | 2024-6-6 13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发现一个问题,用PWM0输出PWM波形发现频率不对,直接用客户给的例程发现也不对。

        CLKSWR = 0x51;                                                //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz
        CLKDIV = 0x01;                                                //Fosc 1分频得到Fcpu,Fcpu=16MHz
/*************************************PWM初始化****************************************/
       
        P7M0 = 0xC2;                        //P01设置为推挽输出
        P0M2 = 0xC2;                        //P02设置为推挽输出
        PWM0_MAP = 0x02;                                        //PWM0通道映射P01口
        PWM01_MAP = 0x70;                                        //PWM01通道映射P02口
        PWM0C = 0x03;                                                //时钟8分频,使能自动重载
        PWMM = 0X01;
        PWM0EN = 0x13;                                                //使能PWM1以及PWM01 边沿对齐 PWM0高有效,PWM01高有效 独立模式                               
       
        //独立模式下,PWM0和PWM01共用一个周期寄存器
        //PWM0的占空比调节使用                        PWM0组的占空比寄存器
        //PWM01的占空比调节使用                        PWM0组的死区寄存器
        //周期计算         = 0x03ff / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
        //                        = 0x03ff / (16000000 / 8)                       
        //                         = 1023   /2000000
        //                        = 511.5us                                   约1.955kHz

        PWM0PH = 0x03;                                                //周期高8位设置为0x03
        PWM0PL = 0xFF;                                                //周期低8位设置为0xFF

        //占空比计算= 0x0155 / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
        //                        = 0x0155 / (16000000 / 8)                       
        //                         = 341          / 2000000
        //                        = 170.5us                   占空比为 170.5/511.5 = 33.3%

        PWM0DH = 0x01;                                                //PWM0高8位占空比0x01
        PWM0DL = 0x55;                                                //PWM0低8位占空比0x55
        PWM0DTH = 0x01;                                                //PWM01高8位占空比0x01
        PWM0DTL = 0x55;                                                //PWM01低8位占空比0x55

使用特权

评论回复
沙发
stormwind123| | 2024-7-31 17:14 | 只看该作者
PWM的频率通常与MCU的时钟源和PWM模块的时钟分频设置有关。首先确认你的MCU的主时钟频率是否正确设置,以及PWM模块是否使用了正确的时钟源。

使用特权

评论回复
板凳
laocuo1142| | 2024-7-31 17:14 | 只看该作者
检查PWM配置

使用特权

评论回复
地板
flycamelaaa| | 2024-7-31 17:15 | 只看该作者
尝试在MCU的评估板或开发板上运行例程,以排除因硬件差异(如外部元件、布局差异等)导致的问题。

使用特权

评论回复
5
powerantone| | 2024-7-31 17:15 | 只看该作者
检查外部因素

使用特权

评论回复
6
probedog| | 2024-7-31 17:16 | 只看该作者
检查是否有可用的固件更新或补丁,这些更新可能修复了与PWM相关的问题。

使用特权

评论回复
7
classroom| | 2024-7-31 17:16 | 只看该作者
硬件故障?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

9

帖子

0

粉丝