开发环境:
IDE:MKD 5.38a
Renesas RA Smart Configurator:v5.9.0
开发板:RA-Eco-RA6M4开发板
MCU:R7FA6M4AF3CFP
脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。
在瑞萨RA6M4系列 MCU 中有两种定时器,一种是通用 PWM 定时器 GPT,另外一种是异步通用定时器 AGT,在这里我们使用通用定时器GPT进行PWM输出。

RA6M4系列共有共10个GPT定时器(即10个通道)。GPT 的计数器支持递增计数,递减计数和递增/递减计数。详细的通道名称如下表所示。

PWM 输出就是对外输出脉宽(即占空比)可调的方波信号, 信号频率由周期设定寄存器 GTPR 的值决定,占空比由比较寄存器 GTCCR 的值决定。
PWM(Pulse Width Modulation , 脉冲宽度调制) 是一种对模拟信号电平进行数字编码的方法,通过不同频率的脉冲使用方波的占空比用来对一个具体模拟信号的电平进行编码,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替所需要波形的设备。
在开启 PWM 设备框架以及 PWM驱动之后,应用程序通过 RT-Thread 提供的 PWM设备管理接口来访问 PWM设备,相关接口如下所示:
| 函数 | 描述 |
|---|---|
| rt_device_find() | 根据PWM设备名称查找设备获取设备句柄 |
| rt_pwm_set() | 设置PWM周期和脉冲宽度 |
| rt_pwm_enable() | 使能PWM设备 |
| rt_pwm_disable() | 关闭PWM设备 |
关于PWM的更多资料请参看RT-Thread官方手册:
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm
接下来配置PWM,只需要简单配置就可使用。
打开RA Smart Configurator,在配置界面里面依次打开“Pins->Peripherals->Timers:GPT”配置GPT模块,将GPT3 的 GTIOC3A 信号输出连接到 P111引脚。

接下来就是添加PWM stack。

接下来需要配置PWM的参数。

核心参数如下:
最后生成过程即可。
然后打开对应的通道。

核心代码如下:
#define PWM_DEV_NAME "pwm3"
#define PWM_DEV_CHANNEL 0
void open_pwm_output(void)
{
struct rt_device_pwm *pwm_dev;
/* turn on the LCD backlight */
pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
/* pwm frequency:100K = 10000ns */
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, 10000, 5000);
rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
}
接下来就看看PWM的输出,PWM 信号可以通过示波器看到,下面笔者就是用逻辑分析仪查看波形。
首先笔者使用的逻辑分析仪是Kingst LA5016,当然啦,其他的也可以,关于逻辑分析仪的相关使用笔者这里就不介绍了,可以查看官方资料。
首先将P111引脚接到逻辑分析仪的CH0,然后下载程序到板子中,打开Kingst VIS,然后进行采样。

从上图可以看到,实际测量的频率和占空比与理论是相符的。
更多回帖