• CH59x 系统16位PWM使用


    以下使用CH592X做验证(V1.2的例程已经包含16位pwm可直接下载沁恒官方的EVT使用

    CH59X系列相对于CH58X,CH57X系列的8位系统PWM多了6路的16位的PWM。

    CH59X除了定时器提供的 4 路 26 位 PWM 输出之外,系统还提供了 8 路 8 位 PWM 输出(PWM4~PWM11)或 6 路 16 位 PWM 输出(PWM4~PWM9),占空比可调。

    现在的PWMX例程中没有16位PWM的使用程序。

    先看手册中对16位PWM的使用说明。

    在使用是需要对PWMx 配置控制寄存器进行配置;

    需要使用16位的根据手册提示程序中做如下配置即可:PWMX_CycleCfg(PWMX_Cycle_32);/PWMX_CycleCfg(PWMX_Cycle_31);

    对应PWM通道根据现在支持的通道使用,下面以PWM4为例;现在提供的例程中没有将封好16位的PWM的API,现在使用的话参照8位的PWM的使用即可;

    下面是8位的PWM使用的函数:

    复制代码
    void PWMX_ACTOUT(uint8_t ch, uint8_t da, PWMX_PolarTypeDef pr, FunctionalState s)
    {
        uint8_t i;
    
        if(s == DISABLE)
        {
            R8_PWM_OUT_EN &= ~(ch);
        }
        else
        {
            (pr) ? (R8_PWM_POLAR |= (ch)) : (R8_PWM_POLAR &= ~(ch));
            for(i = 0; i < 8; i++)
            {
                if((ch >> i) & 1)
                {
                    *((volatile uint8_t *)((&R8_PWM4_DATA) + i)) = da;
                }
            }
            R8_PWM_OUT_EN |= (ch);
        }
    }
    复制代码

     

    (Low_Level) ? (R8_PWM_POLAR |= (CH_PWM4)) : (R8_PWM_POLAR &= ~(CH_PWM4));

    对比现有例程不免发现 占空比与本函数有关*((volatile uint8_t *)((&R8_PWM4_DATA) + i)) = da;对于16位的PWM根据手册的描述程序需要做如下修改;

      

    *((volatile uint32_t *)((&R32_PWM4_7_DATA) + i)

    再结合时钟周期计算公式,16位PWM和8位的时钟周期数的选择是不一样的;16位的时钟周期计算是:RB_PWM_CYC_VALUE;在手册中可以找到这个寄存器的说明:

    频率计算:Fsys/R32_PWM_REG_CYCLE 

    占空比计算:*((volatile uint32_t *)((&R32_PWM4_7_DATA) + i)) /R32_PWM_REG_CYCLE 

    简单举个例子:以频率10khz为例;主频是60M,采用1分频;计算方式如下:Fsys/PWMX_CLKCfg/R32_PWM_REG_CYCLE =60M/1/6000=10000HZ

     具体使用配置如下:

     
    (1);  PWMX_CycleCfg(PWMX_Cycle_32); { (Low_Level) ? (R8_PWM_POLAR |= (CH_PWM4)) : (R8_PWM_POLAR &= ~(CH_PWM4)); for(i = 0; i < 8; i++) { if((CH_PWM4 >> i) & 1) { *((volatile uint32_t *)((&R32_PWM4_7_DATA) + i)) = 30; } } R32_PWM_REG_CYCLE = 60; R8_PWM_OUT_EN |= (CH_PWM4); }

     实测效果:

     如有问题请指正。

     

  • 相关阅读:
    PHP实现赛邮【SUBMAIL】短信通知
    Tungsten Fabric Rabbitmq故障处理
    SLAM经验分享:少年不惧岁月长
    软考 系统架构设计师系列知识点之大数据(1)
    springboot项目经验
    迷你Ceph集群搭建(超低配设备)
    点云从入门到精通技术详解100篇-基于光谱共焦系统的三维点云数据处理(中)
    docker network
    1989-2022年企业排污许可证信息库数据(24万观测值)
    产品测试方案:视频接入平台并发性能测试方案和报告(即150路视频并发流媒体服务器模块的性能测试方案和报告)
  • 原文地址:https://www.cnblogs.com/frontier/p/17877203.html