AC57系列PWM使用说明文档
AC57系列PWM使用说明文档
目录TOC \o "1-2" \h \u
HYPERLINK \l _Toc16206 AC57系列PWM使用说明文档 PAGEREF _Toc16206 1
HYPERLINK \l _Toc30541 一、 定时器PWM配置方式 PAGEREF _Toc30541 1
HYPERLINK \l _Toc28301 二、 硬件PWM配置方式 PAGEREF _Toc28301 4
HYPERLINK \l _Toc262 1、 硬件PWM单路输出 PAGEREF _Toc262 5
HYPERLINK \l _Toc7966 2、 硬件PWM多路输出 PAGEREF _Toc7966 8
HYPERLINK \l _Toc18878 三、 PWM8输出方式 PAGEREF _Toc18878 10
AC57系列有三种输出PWM的方式,分别是定时器PWM方式、硬件PWM方式和PWM8输出方式。其中,这三种方式都支持映射到任意普通IO上输出PWM信号。
- 定时器PWM配置方式 定时器PWM方式是通过配置定时器计数产生PWM再映射到IO引脚进行输出。使用该方式需要注意的是:这个定时器在SDK其它地方是没有被占用到,公版SDK中,定时器3默认是没有被占用到,下面是以定时器3为例子的相关配置。(注:AC57系列的寄存器详细说明可以查看《AC570X用户手册》)。
(1).通过对IOMC1寄存器中的IOMC1[27:23]进行配置可以将channel3(其它channel配置也类似)选择为TMR3_PWM_OUT输出,如下:


(2)、设置PWM输出的引脚,下面是以映射到PH1引脚为例,如果需要其它引脚,只需要修改成对应的引脚即可。
(3)、频率与占空比设置,相关寄存器配置代码及寄存器说明如下:
其中PWM的频率是在定时器3控制寄存器T3_CON中的PSET[5:4]这两位进行分频系数的设置,MODE[1:0]工作模式选择,这里需要选择定时/计数模式

T3_PRD为定时器3的周期寄存器,具体如下:
T3_PWM寄存器决定PWM输出的占空比,说明如下:
T3_CNT为定时器3计数寄存器,初始化时需要置0。
- PWM占空比的设置,在跑了pwm_init函数之后就可调用pwm_duty_cycle函数去设置PWM的占空比,下面是初始化和占空设置函数


完整的PWM初始化和占空比设置函数在下面文件中
EMBED Package
2. 硬件PWM配置方式 硬件PWM的输出可以在原有的硬件PWM引脚(具体引脚如下图)上输出,一共有两组,每组有8个通道,但也不限于只能从这些引脚输出,也可以通过配置映射的方式映射到其它任意的普通IO上输出PWM信号。
这两组PWM在SDK中的pwm.h文件下有对应的宏定义
硬件PWM单路输出 该方式可以通过硬件PWM模块去给对应具有PWM功能的引脚输出PWM,也可以通过映射的方式给任意的普通IO输出PWM。下面是以A组的通道0(PG8引脚)和映射到PH1输出两种方式为例去输出PWM。
app_config.h中打开PWM使用的宏,如下

板级文件中需要确认输出的PWM引脚端口设置,PG8引脚对应的是PWM_PORTG,如下



- 使用时先调用pwm_ch0_init函数对PWM模块进行初始化后会输出默认设置的频率和占空比,再调用pwm_ch0_ctrl函数可动态设置PWM的占空比,pwm_ch0_freq_ctrl函数可以动态设置PWM的频率。其中初始化函数列举了映射和非映射这两种使用方法,非映射方式时是从A组的通道0(PG8引脚)输出PWM,使用映射方式时以映射到PH1输出为例,也可以修改为映射到其它的任意IO输出PWM。具体函数如下:



硬件PWM单路输出的相关函数定义在下面文件中 EMBED Package
- 硬件PWM多路输出 使用硬件PWM模块同时输出多路PWM,这个与硬件PWM单路输出的配置类似,且每路PWM都可以单独控制频率和占空比。下面是以A组(PWM_PORTG)的CH0到CH3这4个通道同时输出PWM为例,只需要在上面的硬件PWM单路输出的基础上修改初始化函数即可,下面是具体的实现函数。





使用时先调用pwm_mult_output_init函数对PWM模块进行初始化,需要修改占空比可以通过pwm_ctrl函数去动态设置PWM的占空比,pwm_freq_ctrl函数可以动态设置PWM的频率。硬件PWM多路输出的相关函数定义在下面文件中:
EMBED Package
如需要输出一组相位一致的pwm 波形,或分开多组 需用 motor pwm硬件方式 ,可参考如下列子 EMBED Package
PWM8输出方式 PWM8是将内部的各种时钟通过GPIO推到外部的一个功能模块。下面是PWM8映射到PH1上输出PWM的例子:
(1)、通过对IOMC1寄存器中的IOMC1[17:13]进行配置可以将channel1选择为PWM8_OUT输出,如下:


(2)、设置输出的引脚,下面是映射到PH1引脚,如果需要其它引脚只需要修改成对应的引脚即可:
(3)、设置分频系数(频率)和占空比,这两个参数的设置是在PWM8_CON寄存器中配置,具体如下:



完整的初始化函数如下,使用时调用该函数即可完成PWM8的硬件初始化并输出PWM
pwm8_init函数的定义的下面文件中:
EMBED Package
杰理科技
2023年03月01日