PWM
本篇使用 RA6M4 的 PWM 输出,来驱动舵机转动
硬件准备
1、RA6M4 开发板
2、舵机
3、杜邦线若干
接线方式
舵机:
| DuoS 开发板引脚 |
舵机引脚 |
|---|
| 3V3 |
VCC |
| GND |
GND |
| P415 |
SIGN |
软件说明
舵机
• 舵机接受 50 Hz(周期 20 ms)PWM,脉宽 0.5–2.5 ms 对应角度 0–180°
在 RASC 软件里进行 PWM 配置:
引脚配置:

PWM 外设配置:

配置完成后,编写代码输出波形,使用逻辑分析仪测量脉冲信号如下:

由于是 100M 的时钟,100 个时钟是 1us,设置 50Hz 即 20ms 的值如下:R_GPT_PeriodSet(&g_timer0_ctrl, 2000000);
设置 1.5ms 脉宽的值如下:R_GPT_DutyCycleSet(&g_timer0_ctrl, 150000, GPT_IO_PIN_GTIOCA);
代码如下:
void PWM_Demo(void)
{
fsp_err_t err = R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg);
assert(FSP_SUCCESS == err);
(void) R_GPT_Start(&g_timer0_ctrl);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
err = R_GPT_PeriodSet(&g_timer0_ctrl, 2000000);
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
while (1)
{
R_GPT_DutyCycleSet(&g_timer0_ctrl, 50000, GPT_IO_PIN_GTIOCA);
Delay_Ms(1000);
R_GPT_DutyCycleSet(&g_timer0_ctrl, 150000, GPT_IO_PIN_GTIOCA);
Delay_Ms(1000);
R_GPT_DutyCycleSet(&g_timer0_ctrl, 250000, GPT_IO_PIN_GTIOCA);
Delay_Ms(1000);
R_GPT_DutyCycleSet(&g_timer0_ctrl, 150000, GPT_IO_PIN_GTIOCA);
Delay_Ms(1000);
}
}
|