Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PWM
【开发板评测】Renesas RA2L1 开发板之PWM方波
发布于 2022-10-30 21:33:12 浏览:698
订阅该版
[tocm] # 1 开发板介绍 本次参与的是瑞萨的开发板评测活动,活动链接为 [【开发板评测】Renesas RA2L1开发板模块评测任务大挑战](https://club.rt-thread.org/ask/article/5839cb296d0416e8.html "【开发板评测】Renesas RA2L1开发板模块评测任务大挑战"),开发板实物图如下所示,开发板自带 JLink,方便调试,本次使用开发板自带的资源进行 PWM 方波输出的测试,使用逻辑分析仪进行方波波形的查看,验证配置是否正确。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/c25733f35940bcc69969c0272f0856d0.png.webp) 开发板的源码链接为 https://github.com/Rbb666/renesas_touch_demo 瑞萨官方的资料地址为 https://www2.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/cpk-ra2l1-evaluation-board#overview # 2 PWM 的配置 ## 2.1 工程的配置 ### 2.1.1 时钟的配置 本次直接基于官方的例程进行开发,使用瑞萨的 RA Configuration 进行工程的配置。RA Configuration 进入的方式如下,点击下图中的绿色小三角可以打开配置界面 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/82b440a14cbe617d25b2a5c4bf44c491.png.webp) 打开配置工具后我们可以找到时钟的配置如下图所示,可以看到系统时钟是 48MHz。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/7ae55746caeb3e9d4e7907935d7a5b3d.png.webp) ### 2.1.2 PWM的配置 查看开发板的原理图我们可以看到红色LED的引脚是 P502,如下图所示 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/d482ee55dc6a0ab4c231eddcad9d9642.png.webp) 查看芯片的数据手册可以看到 P502 引脚对应的是 PWM定时器的通道3,如下图所示。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/b6a0318240c471d86c29beb8f1b22e7d.png) 在配置时我们将 P502 引脚复用为 PWM 功能,如下图所示 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/90bf3df501ddcb7524557e4dc5d22809.png.webp) 然后新建一个定时器如下图所示。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/ee2ce180e690e6caa506339d255d8c79.png.webp) 定时器的配置如下图所示,需要配置的选项的含义在图片中进行标注。配置完成后点击图片右上角的 “Generate Project Content” 生成配置代码。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/276ec935aa2b77757e0121f1ecf0db15.png.webp) # 3 PWM 代码的编写 生成配置代码后在 Keil 中进行编译,不报错然后编写 PWM 的控制代码,如下所示。本例中生成了一个频率为 1KHZ,占空比为 50% 的方波。 ```c void hal_entry(void) { rt_kprintf("\nHello RT-Thread!\n"); led_blu = rt_pin_get("P501"); // 按键触发蓝色灯电瓶翻转 R_GPT_Open(&g_timer3_ctrl, &g_timer3_cfg); // 初始化定时器模块并应用配置 rt_thread_mdelay(10); // 不加延时可能会设置不成功 R_GPT_Start(&g_timer3_ctrl); // 开启定时器 rt_thread_mdelay(10); R_GPT_PeriodSet(&g_timer3_ctrl, 48000); // 48MHZ / 48000 = 1000Hz 设置频率 rt_thread_mdelay(10); R_GPT_DutyCycleSet(&g_timer3_ctrl, 24000, GPT_IO_PIN_GTIOCB); // 48000 * 0.5 = 24000 占空比 = 50% rt_thread_mdelay(10); } ``` # 4 烧写验证 本次使用逻辑分析仪对 PWM 产生的方波进行测量和验证,使用 Pulse View 上位机查看和分析波形可以明显的看到方波的周期为 1ms,占空比为 50%,与设定的一致。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20221030/94f9bda8e24f5d8da839c1828e1b3673.png.webp) # 5 PWM 设置函数说明 在上面编写的测试代码中,有两个关键的函数是设置 PWM 的频率和占空比,在此对这两个函数的用法进行说明。设置 PWM 频率函数的原型如下,参数 2 是控制频率的,PWM 的频率和时钟有关,例如本例中 PCLK 的频率为 48MHz,想设置 PWM 的频率为 1000Hz,那么参数 2 的值为 48MHz / 1000 = 48000。 ```c fsp_err_t R_GPT_PeriodSet(timer_ctrl_t * const p_ctrl, uint32_t const period_counts); ``` 设置占空比的函数原型如下,参数 2 是设置占空比大小的。如果想设置占空比为 50%,则用该值乘以上一部计算出来的结果即是参数 2 的值,也就是 50% * 48000 = 24000。 ```c fsp_err_t R_GPT_DutyCycleSet(timer_ctrl_t * const p_ctrl, uint32_t const duty_cycle_counts, uint32_t const pin); ``` # 6 源码和参考文章 本功能的源码链接为 [gitee 仓库地址](https://gitee.com/robot266/ral21_evb_pwmr "gitee 仓库地址"), 本文章参考了论坛中其他网友的测评文章,非常感谢大家的分享。后面也会添加按键控制 PWM 的频率和占空比,并使用显示屏将 PWM 的参数和波形实时的显示在显示屏中。 1 [【开发板评测】Renesas RA2L1 开发板之PWM呼吸灯功能实现](https://club.rt-thread.org/ask/article/5befd88f60c8eee3.html "【开发板评测】Renesas RA2L1 开发板之PWM呼吸灯功能实现") 2 [【开发板评测】Renesas RA2L1 开发板之PWM](https://club.rt-thread.org/ask/article/bea89e58f5ac5a67.html "【开发板评测】Renesas RA2L1 开发板之PWM") 3 [【开发板评测】Renesas RA2L1 开发板之开发环境准备(内有避坑提示)](https://club.rt-thread.org/ask/article/33cef8fb4cb6224f.html "【开发板评测】Renesas RA2L1 开发板之开发环境准备(内有避坑提示)") 4 [瑞萨e2studio(8)----PWM](https://blog.csdn.net/qq_24312945/article/details/121045981 "瑞萨e2studio(8)----PWM") 5 [RTT&瑞萨高性能 CPK-RA6M4 开发板测评——PWM呼吸灯与输出方波](http://m.eeworld.com.cn/bbs/forum.php?mod=viewthread&tid=1203225&page=1 "RTT&瑞萨高性能 CPK-RA6M4 开发板测评——PWM呼吸灯与输出方波")
5
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
crystal266
嵌入式
文章
14
回答
547
被采纳
161
关注TA
发私信
相关文章
1
玩iot camera笔记之3测试试用3路pwm
2
[已解决]PWM输出异常分析
3
给RT-Thread添加PWM驱动框架
4
关于rt-thread-3.1.0 pwm
5
关于rt-thread的PWM框架在stm32f103vf应用的疑问
6
rt-thread stm32 bsp adc pwm 外设适配好了吗
7
stm32f103ze 添加pwm 设备失败
8
【正点原子】潘多拉IoT-STM32L475开发板 用menuconfig 看不到PWM....
9
关于rtthread 4.0.0版本中pwm的初始化定时器寄存器读写问题
10
RT-Thread正点原子战舰V3使用PWM设备驱动没有输出
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部