首页 > 其他分享 >【WCH蓝牙系列芯片】-基于CH582开发板—基础外设输出PWM波形讲解

【WCH蓝牙系列芯片】-基于CH582开发板—基础外设输出PWM波形讲解

时间:2023-09-02 15:25:50浏览次数:32  
标签:ENABLE GPIO PWMX 开发板 64 占空比 WCH CH582 PWM

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

在WCH官方提供的CH583的EVT资源包中,我们可以找到PWMX的例程,这是一个8位的PWM输出,占空比和周期可调的例程。

  

 1 int main()
 2 {
 3     SetSysClock(CLK_SOURCE_PLL_60MHz);  //系统时钟60M--Fsys
 4     /* 配置GPIO *///推挽输出
 5     GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_5mA); // PA12 - PWM4
 6     GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_5mA); // PA13 - PWM5
 7     GPIOB_ModeCfg(GPIO_Pin_0, GPIO_ModeOut_PP_5mA);  // PB0 - PWM6
 8     GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);  // PB4 - PWM7
 9     GPIOB_ModeCfg(GPIO_Pin_6, GPIO_ModeOut_PP_5mA);  // PB6 - PWM8
10     GPIOB_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA);  // PB7 - PWM9
11     GPIOB_ModeCfg(GPIO_Pin_14, GPIO_ModeOut_PP_5mA); // PB14 - PWM10
12 //  GPIOB_ModeCfg(GPIO_Pin_23, GPIO_ModeOut_PP_5mA); // PB23 - PWM11 此脚复用为外部复位脚,需要关闭此功能才能开启PWM功能
13 
14     PWMX_CLKCfg(4);  //4分频                                 // 周期cycle = 4/Fsys(主频60M),一个时钟频率为60/4=15MHz
15     PWMX_CycleCfg(PWMX_Cycle_64);                     // 周期 = 64*cycle,配置PWM周期为64倍的PWM时钟周期
16     PWMX_ACTOUT(CH_PWM4, 32, Low_Level, ENABLE);  // 50% 占空比 ,周期的二分之一
17     PWMX_ACTOUT(CH_PWM5, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
18     PWMX_ACTOUT(CH_PWM6, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
19     PWMX_ACTOUT(CH_PWM7, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
20     PWMX_ACTOUT(CH_PWM8, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
21     PWMX_ACTOUT(CH_PWM9, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
22     PWMX_ACTOUT(CH_PWM10, 64 / 4, Low_Level, ENABLE); // 25% 占空比
23 
24     while(1);
25 
26 }

 

在这个例程中,先设置系统时钟60M,然后再配置相对应的GPIO为推挽输出模式,

其中PWMX_CLKCfg(4);是将时钟分频系数设置为4,这样可以算出时钟频率为60M/4=15M


PWMX_CycleCfg(PWMX_Cycle_64);是将PWM周期配置为64倍的PWM时钟周期。因此PWM周期为64*(1/15MHz)= 4.267us.


PWMX_ACTOUT(CH_PWM4, 32, Low_Level, ENABLE);
第一个参数是将配置GPIO口对应的PWM通道4,
第二个参数是设置占空比,这是为32,即为64周期的二分之一,(32/64)*100% = 50%,这样占空比就设置为50%,

对应的脉冲宽度为4.267us的一半,为 2.1335us
第三个参数表示定义 PWM 的极性设置,低电平有效
第四个参数为使能PWM通道


PWMX_ACTOUT(CH_PWM5, 64 / 4, Low_Level, ENABLE); 这里设置PWM通道5输出的占空比为25%,占空比计算为(64/4)/64*100% = 25%

通过逻辑分析仪,抓取了PA12对应的PWM通道4的波形,可以看出占空比为50%,周期为4.265us,频率是234.47KHz。

如果在使用PWM外设中,使用蓝牙功能,主频设置为60M最好不要轻易改动,其中PWMx时钟分频寄存器(R8_PWM_CLOCK_DIV)的范围是1-255PWM时钟周期配置可以有八种,(31、32、63、64、127、128、255、256)。

所以当主频60M
最低频率为:60M/255/256 = 919.12Hz
最高频率为:60M/1/31 = 1.935MHz

 

标签:ENABLE,GPIO,PWMX,开发板,64,占空比,WCH,CH582,PWM
From: https://www.cnblogs.com/ZYL-FS/p/17673694.html

相关文章

  • iTOP-i.MX8MM开发板添加RIL驱动程序库
    将Quectel提供的相应RIL库文件放入Android系统的以下路径。作者拷贝到了源码的android_build/device/fsl/imx8m/evk_8mm/lib目录下,如下图所示:然后将apns-conf.xml拷贝到android_build/device/fsl/imx8m/evk_8mm/下,如下图所示:......
  • HDMI输入配套SIL9293C开发板
    HDMI输入配套SIL9293C开发板1.概述    HDMI输入开发板主芯片是SIL9293C。配套国产GOWIN的2AR-18和NR-9C的开发板,测试HDMI输入功能。  输入分辨率最高1080P60Hz,支持HDCP,以及音频功能。支持其他分辨率。  2. 文档  HDMI输入开发板说明文档:HDMI输入说明文......
  • 龙芯LoongArch架构2K0500开发板应用于车辆管理和控制系统解决方案
         迅为iTOP-LS2K0500开发采用龙芯LS2K0500处理器,基于龙芯自主指令系统(LoongArch®)架构,片内集成64位LA264处理器核、32位DDR3控制器、2DGPU、DVO显示接口、两路PCIe2.0、两路SATA2.0、四路USB2.0、一路USB3.0、两路GMAC、PCI总线、彩色黑白打印接口、HDA及其他常用接口。......
  • 迅为RK3588开发板Android12 设置系统默认不锁屏
    修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml文件,修改为如下所示:-<boolname="def_lockscreen_disabled">false</bool>+<boolname="def_lockscreen_disabled">true</bool>修改完,保存修改,重新编译android源码。......
  • 基于友晶科技 FPGA开发板 DE2-115、DE1-SOC 和 DE10-STANDARD 的VGA图片显示(ADV7123)
      选择一个图 调整像素 转换成mif文件   ......
  • 凌蒙派-RK3568开发板-基础外设类:简易HDF驱动
    1、案例简介该程序是基于OpenHarmony标准系统编写的基础外设类:简易HDF驱动。目前已在凌蒙派-RK3568开发板跑通。详细资料请参考官网:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony2、基础知识2.1、OpenHarmonyHDF开发简介HDF(HardwareDriverFoun......
  • 开发板评测-新定义MCU TBK-RD8T3x开发板
    很幸运从合肥新定义公司申请到一块TBK-RD8T3x开发板,笔者第一次做测评有点紧张,希望大家多多见谅哈,老规矩,咱们先看看这块开发板的实际外观吧(以下为实物开箱后的正反面图片)。图1(正面):图2(反面):  从这块开发板的外观上......
  • 玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server
    前言基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s等方案的测试验证。考虑过使用二手服务器,比如DellR730,还搞了一套配置清单,如下:DellR7303.5尺寸规格硬盘CPU:2686v4*2内存:16g*8存储:480Gintelssd系统盘+6tsas希捷*2个数据盘RAID卡:h73......
  • 玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server
    前言基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s等方案的测试验证。考虑过使用二手服务器,比如DellR730,还搞了一套配置清单,如下:DellR7303.5尺寸规格硬盘CPU:2686v4*2内存:16g*8存储:480Gintelssd系统盘+6tsas希捷*2个数据盘RAID卡:h7......
  • RK3588开发板编译环境Ubuntu20.04编译配置增加交换内存
    迅为提供的编译环境Ubuntu20.04默认配置了交换内存是9G,如果在编译过程中,因内存不够而编译报错,可以参考本小节进行设置。这里举例分配5G交换内存。在开始之前,使用命令检查一下您的ubuntu的swap分区。sudoswapon--show通过以下命令创建一个用于swap的文件sudofallocate......