本文档记录如何修改镜像内核源码,如何在e2 studio中配置fsp、管脚等来达到开发板CM33核输出指定频率和占空比的PWM。一下是本文档的参考链接:
- RZ/V2H Quick Start Guide for RZ Multi-OS Package 多核异构参考应用文档
- https://www.renesas.cn/zh/document/dst/rzv2h-group-datasheet RZ/V2H数据手册,查看管脚电源约束
- MYZR-RZV2H-MB320.REVB.20250527.pdf 明远智睿EK320底板原理图
1. 修改内核,开启GPT时钟
为了保证GPT的时钟不被linux给枪毙,我们需要前往内核驱动源文件给时钟打上使能。
打开内核源码目录,修改文件:~/linux/drivers/clk/renesas/r9a09g057-cpg.c
在343行左右,将两个GPT中最后的0都改为1。

修改完成之后按照博主的编译指南重新编译Image,烧录系统。
2. 查阅原理图,确定PWM输出引脚
查阅原理图,找到Extended GPIO,这里博主选择下图黑框框出的GPIO作为PWM输出引脚。

3. 查阅RZ/V2H数据手册,进行e2 studio管脚配置与编译
查看datasheet 2.2.1 List of External Pins,我们往下翻,可以看到关于管脚P77的一些定义,如下图:

可以看到这个管脚的电平标准为1.8V或者3.3V。经过博主测试,明远智睿厂家的核心板这些扩展引脚都是以1.8V作为电平标准,所以如果直接输出,那么PWM幅值必为1.8V。要想获得3.3V的PWM波有两种方式:
- 将管脚设置为开漏输出,无上下拉,自己外接一个上拉电阻到3.3V。
- 输出的1.8V PWM波后接一个电平转换模块。
这里博主主要是先快速验证,就用面包板搭了一个上拉电路。
打开e2 studio,点击导航栏中的项目->Open FSP Configuration。等待e2 studio加载完毕后在下方任务窗口选择Stacks,可以看到我们的HAL/Common Stacks窗口。这个时候可以发现其中并没有g_timer。我们点击窗口右上角的New Stack->Timers->general PWM。就可以发现多出了一个g_timer模块,如下图:

为该模块分配管脚。点击该模块,点击下方任务窗口的Pins,在Pin Selection窗口中找到Peripherals中的Timer:GPT中的GPT6,按照下图所示进行配置:

在Pin Selection中找到Ports->P7->P77,按照下图配置为开漏输出,无上下拉:

点击上方任务栏->窗口->显示视图->属性,返回Stacks窗口,点击g_timer0模块,点击下方任务窗口中的属性菜单,按照下图进行配置:

这里配置的意思为开启管脚输出使能,选择通道6,因为我们刚刚配置的GPT为GPT6。模式选择Saw-wave PWM可以输出方波,Period Unit选择Hertz表示以赫兹为单位,所以我们想生成50HZ方波我们直接在Period填写50即可(十分的方便!不用自己再去计算预分频,重装载什么的了,好评!!),下面的Output|Duty Cycle Percent (only applicable in PWM mode) 填写50表示占空比为50%。使能Output|GTIOCB Output Enabled,因为我们刚刚勾选的是这个管脚。
一切准备就绪,点击右上角Generate Project Content,为我们进行项目代码初始化(比较像stm32cubemx配置操作)。完成过后回到我们的资源管理器页面。编辑src/main_task_entry.c文件,在ret = platform_init(proc_id, rsc_id, &platform);这一行代码前添加:
fsp_err_t err = R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg);
if (FSP_SUCCESS == err)
{
R_GPT_Start(&g_timer0_ctrl);
LPRINTF("PWM Started on P77 (50Hz, 50%% Duty Cycle)!\n");
}

点击锤子进行编译!得到产物,按照编译指南中的方法拷贝到开发板。
4. 搭建外部上拉,查看PWM波形
博主这里直接使用板子上的3.3V进行上拉,具体排针位置可以查阅原理图,上拉电阻选择15K,电路连接图如下图:

按照编译指南中的方法启动cm33固件,再用示波器去打,可以发现PWM生成效果良好,电源有一点偏差是正常现象(板子上的3.3确实就是这么大)如下图:

如果发现波形存在高频噪声,如下图,可以尝试更换质量更好的电源:

以上就是此次文档的全部内容,想要进行更多开发可以翻看项目文件下的HAL库函数,按照自己的需求生成PWM,达到随时更改占空比,频率的效果。
