PWM使用参考

Version 1.1


1. 概述

公板支持4路PWM输出。

PWM驱动路径:rtk/proj/sc/driver/sysdriver/pwm


2. 配置


2.1. 公板支持的PWM padmux

提供4组PWM,每组都有10种选择。

注意:对于某一组,只能选择其中一种, 请注意PAD没有其他用途。

PWM Index Mode PAD
PWM0 1 PAD_SR_IO00
2 PAD_SR_IO04
3 PAD_SR_IO08
4 PAD_TTL4
5 PAD_TTL14
6 PAD_TTL18
7 PAD_KEY0
8 PAD_KEY10
9 PAD_SD_CMD
10 PAD_GPIO1
PWM1 1 PAD_SR_IO01
2 PAD_SR_IO05
3 PAD_SR_IO09
4 PAD_TTL5
5 PAD_TTL15
6 PAD_TTL19
7 PAD_KEY1
8 PAD_KEY11
9 PAD_SD_D3
10 PAD_GPIO2
PWM2 1 PAD_SR_IO02
2 PAD_SR_IO06
3 PAD_SR_IO10
4 PAD_TTL6
5 PAD_TTL16
6 PAD_TTL20
7 PAD_KEY2
8 PAD_KEY12
9 PAD_SD_D2
10 PAD_GPIO3
PWM3 1 PAD_SR_IO03
2 PAD_SR_IO07
3 PAD_SR_IO11
4 PAD_TTL7
5 PAD_TTL17
6 PAD_TTL21
7 PAD_KEY3
8 PAD_KEY13
9 PAD_SD_GPIO0
10 PAD_GPIO4

2.2. PWM API

API名称 说明
Void DrvPWMPadSet (DrvPWMse ePWMIndex,DrvPadModese ePadMode ) 配对PWM模組Mode
Void DrvPWNOutputPulse (DrvPWMse ePWMIndex,DrvPadModese ePadMode ) 设定输出频率 & 占空比 & Invert以及是否shift偏移

API详情见rtk/proj/sc/driver/sysdriver/pwm/drv/pub/drv_pwm.h


2.3. 范例

以下为设置PAD_GPIO1输出PWM波型, 波型参数为5000Hz, 占空比50%。

#include “drv_pwm.h”

u32 PWMIndex = 0; //PWM0
u32 PadMode = PINMUX_FOR_PWM0_MODE_10; //Pad_GPIO1

PWMConfig_t sPWMConfig;
DrvPWMPadSet(PWMIndex, PadMode);

sPWMConfig.bInvert = 0;
sPWMConfig.nDuty = 100000;
sPWMConfig.nFrequency = 200000;
sPWMConfig.nPulseShift = 0;


DrvPWNOutputPulse(PWMIndex, sPWMConfig);

注:

nFrequency应该理解为周期,一个周期就是一个ns,所以设置5000HZ,nFrequency = 1000000000/5000,

nDuty = nFreqency*50% = 100000


2.4. 命令调试

预设未开启, 若需使用请将driver/sysdriver/pwm/drv/src/drv_pwm_test.c#if defined(__VER_PWM__)移除。

这样可加入编译,RTOS下控制台可直接输入PWM控制。

PWM0 搭配PADGPIO1 freq=5000, duty=50, PADMODE为PINMUX_FOR_PWM0_MODE_10, 0x18d

# pwm 0 0x18d 200000 0 100000 0

代码上API使用方法亦可参考如上命令的实现方法。