【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM
【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM
本文介绍了瑞萨 RA2E1 开发板使用内置时钟和定时器实现 PWM 输出以及呼吸灯的项目设计。
项目介绍
介绍了 PWM 和 RA2E1 的 PWM 资源。
PWM
脉冲宽度调制(Pulse Width Modulation, PWM)是一种对模拟信号电平进行数字编码的方法。

PWM 的工作原理是通过调节脉冲信号的占空比(即高电平持续时间与整个周期的比值)来控制输出信号的平均电压或平均功率。
特点
- 高效性:在调节功率时,PWM方式避免了传统线性调节方式中电阻发热造成的能量损耗,能将大部分能量有效地传递到负载,效率通常可达80% - 90%以上。
- 精确控制:可以通过微处理器或专用的PWM控制器,精确地控制脉冲的宽度和频率,实现对电机转速、灯光亮度等物理量的精确调节。
- 抗干扰能力强:数字信号相比模拟信号具有更强的抗干扰能力,PWM信号在传输过程中不易受到噪声干扰,能够保证控制信号的准确性。
应用领域
- 电机控制:广泛应用于直流电机和步进电机的调速控制。通过改变PWM信号的占空比,可以轻松地调节电机两端的平均电压,从而控制电机的转速。
- 电源管理:在开关电源中,PWM技术用于控制功率开关管的导通和关断,实现对输出电压的稳定调节。此外,还可用于电池充电管理,根据电池的充电状态调整充电电流和电压。
- 音频处理:在音频功率放大器中,利用PWM技术将音频信号调制为高频脉冲信号,通过低通滤波器还原出音频信号,可提高音频放大器的效率和音质。
- LED照明:用于调节LED灯的亮度。通过改变PWM信号的占空比,可以精确地控制LED灯的发光强度,实现节能和调光的目的。
RA2E1的PWM资源
瑞萨RA2E1的PWM资源主要与定时器相关,具体如下:
- 32位通用PWM定时器(GPT32):1个,GPT 模块是一个高精度定时器,可用于计数事件、测量外部输入信号、生成周期性中断,或输出周期性信号/PWM 信号到 GTIOC 引脚。它使用PCLKD(外设时钟D)作为主时钟源,该时钟可以通过可配置的分频器进行调整,最大分频因子为1024;
- 16位通用PWM定时器(GPT16):6个,可用于多种定时和 PWM 相关的应用。每个计数器支持递增计数或递减计数(锯齿波)或递增/递减计数(三角波),每个通道可选择独立时钟源,可控制两个I/O引脚,还可以在每个输入路径上设置噪声滤波器,每个通道有两个输出比较/输入捕捉寄存器及四个缓冲寄存器;
- 低功耗异步通用定时器(AGT):2个,AGT 模块也提供灵活的计时和事件捕获功能,支持16位和32位定时器,并具有多种工作模式,适用于需要高精度时间控制和事件捕获的应用。
本文介绍了瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板使用内置时钟和 GPT 定时器实现 PWM 输出以及呼吸灯的项目设计流程。
新建工程
在安装 e2 studio 软件和 FSP 软件包的基础上,新建项目工程
打开 e2 studio 软件,依次点击 文件 - 新建 - 瑞萨 C/C++ 项目 - Renesas RA ;
依次进行工程命名,路径设置,FSP版本,目标开发板选择,Device 选择 R7FA2E1A72DFL ,工具链选择 GNU ARM Embedded ;
点击 Generate 完成工程创建。
定时器
根据原理图可知,2 个板载 LED 控制引脚为 P103 和 P104(这里选择 P104 作为 PWM 输出引脚进行配置)

引脚配置
进入 FSP 配置 界面,依次选择 Pins 标签 - GPIO-P104 - 可视化引脚界面;
进入 FSP 芯片视角,右键目标 PWM 输出引脚 P104,选择 GTIOCB 输出;
依次进入 Pin Selection - Timers:GPT - GPT4 - Pin Configuration - Input/Output - 使能定时器对应的引脚输出;

时钟配置

PWM堆栈
FSP Configuration - Stacks - 新建堆栈(New Stacks) - 定时器(Timer) - 通用 PWM

选中新建的 PWM 堆栈,在属性标签中设置参数,开启引脚输出、PWM频道、周期、占空比、使能 GTIOCA 或 GTIOCB 引脚输出等。
生成工程
配置完成后,点击 Generate Project Content 输出相应的工程代码。
代码
打开左侧的工程文件 src/hal_entry.c ,在主函数中添加如下代码
void hal_entry(void)
{/* TODO: add your own code here */fsp_err_t err = FSP_SUCCESS;/* Initializes the module. */err = R_GPT_Open(&g_timer4_ctrl, &g_timer4_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);/* Start the timer. */(void) R_GPT_Start(&g_timer4_ctrl);R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);/* Setting PWM period, clock frequency 48MHz, then pwm frequency is 48MHz/4800 = 10kHz*/err = R_GPT_PeriodSet(&g_timer4_ctrl, 4800);//频率/* Check period setting*/assert(FSP_SUCCESS == err);R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功/* breath LED */uint16_t duty_cycle = 0; // 占空比初始值int8_t direction = 1; //while(1){/* 设置PWM占空比 */err = R_GPT_DutyCycleSet(&g_timer4_ctrl, duty_cycle, GPT_IO_PIN_GTIOCB);assert(FSP_SUCCESS == err);R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);/* 更新占空比 */duty_cycle += (uint16_t) (direction * 400); // 需要强制类型转换if (duty_cycle >= 4800){duty_cycle = 4800;direction = -1;}else if (duty_cycle <= 0){duty_cycle = 0;direction = 1;}R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS); //20ms变化一次}
#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter();
#endif
}
保存并构建工程 - 调试工程。
效果
修改代码中的 duty_cycle += (uint16_t) (direction * 400) 占空比增量,即可实现呼吸灯的速度控制。

使用示波器查看输出的 PWM 波形

可知 PWM 频率为 10kHz,占空比随时间在 0 到 1 之间连续变化。
示波器项目详见:基于地阔星STM32F103C8T6的示波器扩展板 - 立创开源硬件平台
总结
本文介绍了瑞萨 RA2E1 开发板使用内置时钟和定时器实现 PWM 输出以及呼吸灯的项目设计,包括方案介绍、项目工程创建、定时器配置、PWM配置、代码解析、效果展示等,为相关项目的开发和应用设计提供了参考。
相关文章:
【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM
【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM 本文介绍了瑞萨 RA2E1 开发板使用内置时钟和定时器实现 PWM 输出以及呼吸灯的项目设计。 项目介绍 介绍了 PWM 和 RA2E1 的 PWM 资源。 PWM 脉冲宽度调制(Pulse Width Modulation, PWM)是一种对模拟…...
高级:微服务架构面试题全攻略
一、引言 在现代软件开发中,微服务架构被广泛应用于构建复杂、可扩展的应用程序。面试官通过相关问题,考察候选人对微服务架构的理解、拆分原则的掌握、服务治理的能力以及API网关的运用等。本文将深入剖析微服务架构相关的面试题,结合实际开…...
数据流和重定向
1、数据流 不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两 条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去 标准输入(standard input,简称stdinÿ…...
Excel时间类型函数(包括today、date、eomonth、year、month、day、weekday、weeknum、datedif)
目录 1. TODAY()2. DATE()3. EOMONTH()4. YEAR()5. MONTH()6. DAY()7. WEEKDAY()8. WEEKNUM()9. DATEDIF()10.📌 函数扩展与应用11. 📚 时间函数基础概念与分类 Excel 提供了许多 日期与时间类型的函数,用于操作与处理日期或时间数据。这些函…...
【GPT入门】第33 课 一文吃透 LangChain:chain 结合 with_fallbacks ([]) 的实战指南
[TOC](【GPT入门】第33课 一文吃透 LangChain:chain 结合 with_fallbacks ([]) 的实战指南) 1. fallback概述 模型回退,可以设置在llm上,也可以设置在chain上,都带有with_fallbacks([])函数 2. llm的回退 2.1 代码 核心代码&…...
高级语言程序设计
第八章 结构体类型和自定义类型-CSDN博客 第九章 预编译处理-CSDN博客 第十章 文件-CSDN博客...
【51单片机】2-7【I/O口】点亮数码管
1.硬件 51最小系统数码管模块 2.软件 静态数码管 #include "reg52.h" //头文件 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8;sbit LSAP2^2;//位选 sbit LSBP2^3; sbit LSCP2^4;u8 code smgduan[17]{0x3f,0x06,0x5b,0x4f,0…...
叁仟数智指路机器人的智能导航精度如何?
哇塞!各位朋友们,来了解一下超厉害的叁仟数智指路机器人的智能导航精度吧!它的精度可是因为采用了不同的定位技术而展现出独特魅力哦! 先看蓝牙定位,这可是超实用的!一般精度能保持在 3 - 5 米左右呢&…...
华为存储考试内容HCIP-Storage
华为认证存储高级工程师 | Huawei Certified ICT Professional-Storage 是培训与认证具备对存储系统进行规划设计、部署实施、性能优化、管理运维和故障处理能力的存储高级工程师 通过该认证证明:工程师能理解闪存及分布式存储产品的相关功能及使用场景࿰…...
A*算法详解(新手入门)——图文并茂,学习笔记分享
前言 本文是博主在学习A*算法时做的一个小案例,有不懂的地方可以私信博主一起讨论学习,由于博主水平有限,可能存在部分知识点遗漏或书写不够严谨,欢迎各位志同道合的朋友批评指教,博主定当虚心学习,感谢各…...
初学STM32系统时钟设置
资料来自正点原子 在学习江科大教程示例的时候默认系统时钟是72MHZ,但是这个系统时钟是怎么过来的呢,通过时钟树以及相关的资料的学习可知,系统时钟它可以是内部RC时钟HSI 8MHZ通过锁相环倍频而来,也可以是外部晶振4-16MHZ通过锁相…...
如何在 Windows 10 上安装 PyGame
PyGame 是 Python 编程语言中的一组跨平台模块,这意味着您可以在任何操作系统上安装它,这篇文章告诉您如何在 Windows 10 上安装 PyGame。 如何在 Windows 10 上安装 PyGame? PyGame 依赖于 Python,这意味着您必须在安装 PyGame …...
STM32 × CLion 新建项目
STM32 CLion 新建项目 新建和配置一个 STM32 项目 1 创建项目 假如是 ST 官方开发板,比如 NUCLEO 板,选择从 ST 板创建 假如是单芯片或淘宝买的那种 F103 开发板,选择从 MCU 创建 2 STM CubeMX 配置 2.1 Pinout & Configuration 外…...
WebSocket 详解:构建一个复杂的实时聊天应用
文章目录 一、前言二、WebSocket 基础2.1 WebSocket 与 HTTP 的区别2.2 WebSocket 的优点 三、搭建 WebSocket 服务端3.1 安装 ws 和 redis 库3.2 创建 WebSocket 服务端3.3 创建用户身份验证 四、前端实现 WebSocket 客户端4.1 创建 Vue 3 项目4.2 实现 WebSocket 连接和用户注…...
详解七大排序
目录 一.直接插入排序 (1)基本思想 (2)算法步骤 (3)代码实现 (4)算法特性 (5)算法优化 (6)示例演示 二.希尔排序 (…...
python爬虫:小程序逆向实战教程
根据我之前发表的文章,我们进行延伸实战https://blog.csdn.net/weixin_64809364/article/details/146981598?spm1001.2014.3001.5501 1. 想要爬取什么小程序,我们进行搜索 2. 找到我们vx小程序的文件地址,我们就可以进行破解 破解步骤强看…...
day 8 TIM定时器
一、STM32 定时器概述 1. 定时器的概述定时器的基本功能,但是 STM32 的定时器除了具有定时功能之外,也具有定时器中断功能,还具有输入捕获(检测外部信号)以及输出比较功能(输出不同的脉冲)&…...
全星 研发项目管理APQP 软件:驱动汽车及制造业研发升级的数字化引擎
全星 APQP 软件:驱动汽车及制造业研发升级的数字化引擎 在汽车及制造业竞争白热化的当下,如何高效推进研发项目,同时确保严格合规,成为企业亟待解决的难题。 全星研发项目管理 APQP 软件系统,凭借卓越的功能与显著优势…...
【VUE】RuoYi-Vue3项目结构的分析
【VUE】RuoYi-Vue3项目结构的分析 1. 项目地址2. RuoYi-Vue3项目结构2.1 整体结构2.2 package.json2.2.1 🧾 基本信息2.2.2 🔧 脚本命令(scripts)2.2.3 🌍 仓库信息2.2.4 📦 项目依赖(dependenc…...
智能体和RPA都需要程序思维,如何使用影刀的变量?
欢迎来到涛涛聊AI, 不管AI还是RPA,都需要用到编程思想才能完成批量工作。今天研究了下影刀的变量。 变量类型 根据变量值选择相应的类型,可选择任意一种影刀所支持的数据类型 变量值 指定变量中保存的值,会根据不同的类型设置…...
详解 MySQL 三层 B+ 树能存多少数据的计算方法
MySQL三层B树能存多少数据 1. 内部节点(非叶子节点)的容量计算2. 叶子节点的数据记录容量3. 三层 B 树的存储能力计算4. 总结 1. 内部节点(非叶子节点)的容量计算 设定参数如下: P:每个节点页的大小&…...
论文笔记(七十五)Auto-Encoding Variational Bayes
Auto-Encoding Variational Bayes 文章概括摘要1 引言2 方法2.1 问题场景2.2 变分下界2.3 SGVB估计器与AEVB算法2.4 重参数化技巧 3 示例:变分自编码器(Variational Auto-Encoder)4 相关工作5 实验6 结论7 未来工作 文章概括 引用࿱…...
Sentinel[超详细讲解]-7 -之 -熔断降级[异常比例阈值]
📖 主要讲解熔断降级之 --- 异常比例阈值 🚀 1️⃣ 背景 Sentinel 以流量作为切入点,提供了很多的丰富的功能,例如🤗: 流量控制,熔断降级等,它能够有效的适用各个复杂的业务场景&am…...
《基于 C++ 的怪物掉落武器功能开发》
一、项目背景 在游戏开发中,怪物掉落武器机制是丰富游戏玩法与提升玩家体验的关键部分。本功能基于 C 语言开发,旨在实现一套逻辑清晰、扩展性强的怪物掉落武器系统,为游戏核心玩法增添策略性与趣味性。 二、功能需求 (一&#…...
C++11观察者模式示例
该示例代码采用C11标准,解决以下问题: 消除了类继承的强耦合方式;通知接口使用可变参数模板,支持任意参数; 示例代码 .h文件如下: #include <functional> #include <string> #include <…...
算法设计学习10
实验目的及要求: 本查找实验旨在使学生深入了解不同查找算法的原理、性能特征和适用场景,培养其在实际问题中选择和应用查找算法的能力。通过实验,学生将具体实现多种查找算法,并通过性能测试验证其在不同数据集上的表现ÿ…...
configurable_alternatives 方法与使用技巧
核心功能与应用场景 在开发调试过程中,当需要动态替换链中的完整组件(如大语言模型、提示词模板等)并保持对话连续性时,可通过 configurable_alternatives() 实现运行时组件热替换。典型场景包括: 调试时切换不同版…...
Angular 2 模板语法详解
Angular 2 模板语法详解 引言 Angular 2 作为一款强大的前端框架,以其组件化的开发模式和高效的性能被众多开发者所青睐。模板语法是Angular 2中用于定义组件UI的关键部分。本文将详细介绍Angular 2的模板语法,帮助开发者更好地理解和运用这一功能。 模板语法概述 Angula…...
对称加密:原理、算法与应用全解析
对称加密作为密码学领域的核心技术,凭借其高效性与广泛应用,在数据安全领域占据重要地位。本文将从基础概念、历史发展、核心算法到实际应用场景,全方位解析对称加密技术的全貌,并探讨其面临的挑战与未来方向。 一、对称加密的核心…...
多线程编程中的锁策略
目录 1.悲观锁vs乐观锁 关键总结 悲观锁: 乐观锁: 选择建议 用 悲观锁 当: 用 乐观锁 当: 2.重量级锁vs轻量级锁 选择建议 用 轻量级锁: 用 重量级锁: 3.挂起等待锁vs自旋锁 关键细节说明 选择…...
