【瑞萨RA6E2评估板】定时器设置测试和PWM测试
[复制链接]
本帖最后由 bigbat 于 2023-10-22 17:49 编辑
RA6E2的PWM输出主要有两种方式,AGT和GPT两种定时器输出,AGT是高级定时器、GPT是普通定时器。本次的测试是使用GPT5测试双路PWM输出。
首先是建立一个项目,这个项目的模板使用FPB-RA6E2模板,编译器使用Keil编译器。
项目建立后,打开FSP的配置文件。选择连接到LED1和LED2的引脚P206和P207,查看引脚的配置属性,可以作为GPT5的引脚属性,
配置GPT5的引脚属性,
如图所示,配置GTIOC5A和GTIOC5B的引脚为P206和P207,发现有红色的错误出现,说明设置有冲突,转到P206、P207配置项,关闭GPIO配置,
关闭完成后,GPT5的配置错误消失。
这是说明GPT5的引脚配置已经完成。转到Stacks配置处,配置PWM协议栈
将协议栈的Channel配置为5,这时软件自动导入GPT5的配置。
到这里整个PWM的配置已经完成了。接下来转到时钟设置
PWM使用的时钟为PCLKD,芯片的时钟为200MHZ,PSCLKD为时钟的2分频100MHZ。这时就可以看到高档芯片的优势了。
时钟的默认计数值,Period =10000,也就是PWM脉冲为 100M/10000=10K,占空比Duty =50%。这里的值为软件自动计算值。
两路输出为互补输出其它设置默认,以上的设置都可以通过函数动态进行修改。
void hal_entry(void)
{
/* TODO: add your own code here */
fsp_err_t err;
/* Initializes the module. */
err = R_GPT_Open(&g_timer5_ctrl, &g_timer5_cfg);
/* Handle any errors. This function should be defined by the user. */
assert(FSP_SUCCESS == err);
err = R_GPT_PeriodSet(&g_timer5_ctrl, 10000 );
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//
err = R_GPT_DutyCycleSet(&g_timer5_ctrl, 5000, GPT_IO_PIN_GTIOCA_AND_GTIOCB);//
//err = R_GPT_DutyCycleSet(&g_timer5_ctrl, 5000, GPT_IO_PIN_GTIOCB);//
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//
/* Start the timer. */
R_GPT_Start(&g_timer5_ctrl);
for(;;){
R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);
}
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
设置完成后,就可以使用代码进行调试了。
这里的程序有两处延时,设置计数值
err = R_GPT_PeriodSet(&g_timer5_ctrl, 10000 );
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//
另一处,设置占空比
err = R_GPT_DutyCycleSet(&g_timer5_ctrl, 5000, GPT_IO_PIN_GTIOCA_AND_GTIOCB);//
//err = R_GPT_DutyCycleSet(&g_timer5_ctrl, 5000, GPT_IO_PIN_GTIOCB);//
assert(FSP_SUCCESS == err);
R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//
|