【RA-Eco-RA2L1-48PIN】ADC 电压表
【RA-Eco-RA2L1-48PIN】ADC 电压表
本文介绍了 RA-Eco-RA2L1-48PIN 开发板通过瑞萨 e2 Studio 灵活软件包(FSP)编程实现 ADC 串口采集电压的项目设计,包括 串口通信、打印字符串、UART 和 ADC 配置、关键代码、ADC 电压转换、电压值串口打印、效果展示等流程。
项目介绍
- 使用 FSP 灵活软件包和 e2 studio 软件创建工程;
- 配置串口,实现串口printf重定向,打印 字符串;
- 进一步配置 ADC 实现 GPIO 电压信号采集和串口打印电压值。
串口通信
介绍了串口打印字符串的项目设计流程。
工程创建
-
打开 e2 studio 软件
-
依次点击
文件
-新建
-瑞萨 C/C++ 项目
-Renesas RA
-
依次进行工程命名,路径设置,FSP版本,目标开发板选择,Device 选择
R7FA2L1AB2DFL
,工具链选择GNU ARM Embedded
,调试器选择 J-Link -
完成工程创建
串口配置
-
设置目标串口对应的 GPIO 引脚
- 依次选择
Pins
-Peripherals
-Connectivity:SCI
-SCI9
对应 P109 (TXD9) 和 P110 (RXD9) 引脚;
- 依次选择
-
新建串口通信堆栈
New Stack
-Connectivity
-UART (r_sci_uart)
- 选中 uart 堆栈方框,打开属性标签,配置串口参数
-
属性设置:
属性
-Module g_uart9 UART (r_sci_uart)
-General
、Baud
、Interrupts
设置回调函数 -
点击
Generate Code
按钮,生成工程代码。
工程代码
工程框架创建完成后,进入左侧主函数所在文件夹,打开 src/hal_entry.c
文件,添加串口printf重定向及驱动代码
#include "hal_data.h"
#include <stdio.h>
FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTERfsp_err_t err = FSP_SUCCESS;
volatile bool uart_send_complete_flag = false;
void user_uart_callback (uart_callback_args_t * p_args)
{if(p_args->event == UART_EVENT_TX_COMPLETE){uart_send_complete_flag = true;}
}// 重定向 printf 到 UART9
#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endifPUTCHAR_PROTOTYPE {fsp_err_t err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);if (FSP_SUCCESS != err) __BKPT();while (uart_send_complete_flag == false) {}uart_send_complete_flag = false;return ch;
}// 重定向 _write 函数(支持 printf)
int _write(int fd, char *pBuffer, int size) {for (int i = 0; i < size; i++) {__io_putchar(*pBuffer++);}return size;
}void hal_entry(void)
{/* TODO: add your own code here *//* Open the transfer instance with initial configuration. */err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);assert(FSP_SUCCESS == err);while(1){printf("Hello World!\n");R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);}
#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter();
#endif
}
保存代码,构建工程,调试工程。
Tips
若报错,则打开项目属性 - C/C++ 构建 - 设置 - 工具设置 - GNU Arm Cross C Linker
勾选 Use float with nano printf
选项,在 Other linker flags
填写代码 --specs=rdimon.specs
,点击 应用并关闭
,
重新构建工程即可。
工程调试
- 点击上方工具栏
小锤子
按钮(或右键工程选择调试方式
-调试配置
); - 选择
Renesas GDB Hardware Debugging
,选择构建的相应的 Flat ; - 确保调试器已正确连接,点击调试按钮,进入调试模式;
- 点击左上角绿色三角形启动按钮,再次点击启动调试;
- 打开串口调试助手,配置串口信息,打开串口,可获得相应的字符串输出。
详见:fsp5.0.0 cannot print data to UART by redirecting printf .
硬件连接
SWDIO
-> J-Link (DIO)SWCLK
-> J-Link (CLK)P109
-> J-Link (RXD)P110
-> J-Link (TXD)
这里使用 JLink-OB 调试器,详见:J-Link OB 改进版(含外壳) - 立创开源硬件平台 .
ADC 采集电压
在完成串口通信的基础上,介绍了进一步实现 ADC 电压值采集和串口发送的项目设计。
工程创建
-
设置 ADC 通道对应的 GPIO 配置
- 依次选择
Pins
-Peripherals
-Analog:ADC
-ADC0
- 右侧通道选项AN000
打开对应值P000
引脚;
- 依次选择
-
新建 ADC 堆栈
New Stack
-Analog
-ADC (r_adc)
-
属性配置
-
General 选项下设置 ADC 单次扫描
-
Input
选项下勾选Channel0
,配置中断与回调函数;
-
ADC 及串口配置完成后,构建工程,确保无误。
工程代码
#include "hal_data.h"
#include <stdio.h>FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTERfsp_err_t err = FSP_SUCCESS;
volatile bool uart_send_complete_flag = false;
void user_uart_callback (uart_callback_args_t * p_args)
{if(p_args->event == UART_EVENT_TX_COMPLETE){uart_send_complete_flag = true;}
}/*------------- 串口重定向 -------------*/
#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else#endifPUTCHAR_PROTOTYPE
{err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);if(FSP_SUCCESS != err) __BKPT();while(uart_send_complete_flag == false){}uart_send_complete_flag = false;return ch;
}int _write(int fd,char *pBuffer,int size)
{for(int i=0;i<size;i++){__io_putchar(*pBuffer++);}return size;
}volatile bool scan_complete_flag = false;
void adc_callback (adc_callback_args_t * p_args)
{FSP_PARAMETER_NOT_USED(p_args);scan_complete_flag = true;
}void hal_entry(void)
{/* TODO: add your own code here *//* Open the transfer instance with initial configuration. */err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);assert(FSP_SUCCESS == err);/* Initializes the module. */err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);/* Enable channels. */err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);assert(FSP_SUCCESS == err);while(1){uint16_t adc_data0 = 0;double a0;/* Enable scan triggering from ELC events. */(void) R_ADC_ScanStart(&g_adc0_ctrl);scan_complete_flag = false;while (!scan_complete_flag){/* Wait for callback to set flag. */}err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adc_data0);assert(FSP_SUCCESS == err);a0=(double)(adc_data0/4095.0)*3.3;printf("P510(AN0)=%d,voltage=%f\n",adc_data0,a0);R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);}
#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter();
#endif
}
保存代码,重新构建工程。
工程调试
- 点击上方工具栏
小锤子
按钮(或右键工程选择调试方式
-调试配置
); - 选择
Renesas GDB Hardware Debugging
,选择构建的相应的 Flat ; - 确保调试器已正确连接,点击调试按钮,进入调试模式;
- 点击左上角绿色三角形启动按钮,再次点击启动调试;
- 打开串口调试助手,配置串口信息,打开串口,可获得相应的字符串输出。
效果演示
- 使用 USB 转 TTL 工具或 JLink 虚拟串口连接开发板对应串口引脚
P109
-> J-Link (RXD)P110
-> J-Link (TXD)
- 打开串口调试助手,配置串口参数,打开串口,即可接收主控发送的信息。
串口打印 Hello World!
串口打印ADC值和转换电压值
硬件展示
Typora 软件绿色版制作详见:Typora-Portable 和 Typora 2025 .
总结
本文介绍了 RA-Eco-RA2L1-48PIN 开发板通过瑞萨 e2 Studio 灵活软件包(FSP)编程实现 ADC 串口采集电压的项目设计,包括 串口通信、打印字符串、UART 和 ADC 配置、关键代码、ADC 电压转换、电压值串口打印、效果展示等流程,为瑞萨单片机 串口通信和 ADC 的相关产品设计和快速应用提供了参考。
相关文章:

【RA-Eco-RA2L1-48PIN】ADC 电压表
【RA-Eco-RA2L1-48PIN】ADC 电压表 本文介绍了 RA-Eco-RA2L1-48PIN 开发板通过瑞萨 e2 Studio 灵活软件包(FSP)编程实现 ADC 串口采集电压的项目设计,包括 串口通信、打印字符串、UART 和 ADC 配置、关键代码、ADC 电压转换、电压值串口打印…...
Oracle 数据文件被删除后使用rman备份恢复过程
有个环境,因空间使用率100%,现场直接误删了数据文件,log记录恢复过程下 SQL > select file#,name,checkpoint_change# from v$datafile; FILE# NAME CHECKPOINT_CHANGE# ------…...

KS107BG型超声体模的结构及性能
KS107BG型超声体模适用于工作频率在5~10MHz之间的B超设备的性能检测。 一、外部结构 体模外壳和底座由有机玻璃加工组装而成,底面板上开有两个直径36mm的圆孔,其上封有2mm厚的真空橡皮,作为抽气及注射保养液的入口。体模外壳外表…...
visual studio重新安装如何修改共享组件、工具和SDK路径方案
安装了VsStudio后,如果自己修改了Shared路径,当卸载旧版本,需要安装新版本时发现,之前的Shared路径无法进行修改,这就很坑了 但是却遇到了路径无法修改的问题…真让人头大,当然不修改也可以,有时候&#x…...

目标检测评估指标mAP详解:原理与代码
目标检测评估指标mAP详解:原理与代码 目标检测评估指标mAP详解:原理与代码一、前言:为什么需要mAP?二、核心概念解析2.1 PR曲线(Precision-Recall Curve)2.2 AP计算原理 三、代码实现详解3.1 核心函数ap_pe…...

【风控】模型算法区分度指标KS
一、KS指标的定义原理 背景 KS(Kolmogorov–Smirnov)原本用于检验样本分布与理论分布或两个样本分布是否一致。风控建模中,将“好样本”(Good)与“坏样本”(Bad)的模型输出概率看作两组经验分布…...
道可云人工智能每日资讯|浙江省人民政府印发《关于支持人工智能创新发展的若干措施》
道可云元宇宙每日简报(2025年5月21日)讯,今日元宇宙新鲜事有: 浙江省人民政府印发《关于支持人工智能创新发展的若干措施》 为抢占人工智能发展制高点,打造全球人工智能创新发展高地,浙江省人民政府于近日…...

win11下jenkins+docker+maven自动部署springboot项目
win11下jenkinsdockermaven自动部署springboot项目 一、前置软件安装二、jenkins配置三、springboot项目准备四、jenkins打包部署项目到本地docker中五、jenkins打包部署项目到远程服务器docker中 一、前置软件安装 docker安装 需要开启wsl,以管理员身份运行docke…...
密码学标准(Cryptography Standards)介绍
密码学标准(Cryptography Standards)是为确保信息安全传输、存储和处理而制定的一系列技术规范和协议,广泛应用于通信、金融、互联网等领域。以下从分类、主流标准、应用场景和发展趋势四个方面进行详细介绍: 一、密码学标准的分类 密码学标准可根据技术原理和应用场景分…...
2 卡尔曼滤波
卡尔曼滤波是啥? 卡尔曼滤波就像是一个“智能猜谜大师”,专门用来在不确定的情况下,算出最接近真实值的答案。 核心思想: 预测(猜):根据之前的经验,猜现在大概是什么状态ÿ…...

《决策科学与艺术》No1: 决策树:概念、原理、发展历史、特点及应用
决策树:概念、原理、发展历史、特点及应用 摘要 决策树是一种广泛使用的机器学习和决策分析方法,以其可解释性、简洁性和多功能性著称。本文全面介绍了决策树的概念基础、基本原理、发展历程、显著特征及其在商业、医疗、金融和工程等多个领域的典型应用…...
手机合集(不定期更新)
一、华为手机: 1.华为手机自助维修的方法: https://blog.csdn.net/humors221/article/details/145946128 2.华为手机实用功能介绍: https://blog.csdn.net/humors221/article/details/132514011 3.华为手机清理大数据的方法:…...
掌握正则表达式:从基础语法到工程实践
引言:正则表达式的力量与边界 在信息爆炸的数字时代,正则表达式(Regular Expression) 作为文本处理的“瑞士军刀”,已成为开发者、数据分析师、运维工程师等群体的核心技能。它能用简洁的符号逻辑描述复杂…...
Prometheus 基础入门文档
目录 概述 核心组件详解 Prometheus Server Exporters Alertmanager 存储解决方案 安装与配置 安装方法 基本配置 示例配置文件 数据模型与查询语言 数据模型 PromQL 查询语言 示例查询 告警系统 告警规则 示例告警规则 Alertmanager 配置 示例 Alertmanager…...
【数据分析】什么是特征蒸馏?
引言 —— “ 在数据洪流中提炼真金——解密特征蒸馏的艺术。” 在数据爆炸的时代,我们每天产生的信息量已远超人类处理能力的极限。当企业拥有百万维的用户行为数据,医疗研究者面对TB级的基因测序记录,工程师试图从千万张图像中识别关键模式…...

【苍穹外卖】Day01—Mac前端环境搭建
目录 一、安装Nginx (一)安装Homebrew (二)Homebrew安装Nginx 1. 执行安装命令: 2. 验证安装: (三)启动与停止Nginx 二、配置Nginx 1. 替换nginx.conf 2. 替换html文件夹 三…...
Apollo10.0学习——planning模块(9)之参数详解一
planning.conf --flagfilemodules/common/data/global_flagfile.txt # 加载全局通用配置,包含基础运行参数 --traffic_rule_config_filenamemodules/planning/planning_component/conf/traffic_rule_config.pb.txt # 交通规则配置文件,定义信号灯、停车…...
Python-多进程编程 (multiprocessing 模块)
目录 一、创建进程1. Process 的语法结构2. 进程不共享全局变量 二、进程间通信1. 队列通信2. 管道通信 三、进程池1. 常用函数2. 进程池中的 Queue 四、应用:复制文件夹(多进程版)五、守护进程和进程同步六、注意事项 通过使用 multiprocess…...
GraphQL在.NET 8中的全面实践指南
一、GraphQL与.NET 8概述 GraphQL是一种由Facebook开发的API查询语言,它提供了一种更高效、更灵活的替代REST的方案。与REST不同,GraphQL允许客户端精确指定需要的数据结构和字段,避免了"过度获取"或"不足获取"的问题。…...
在mobaxterm下面执行shell脚本报错
关键步骤:在 MobaXterm 的 SSH 会话中强制指定 Bash 解释器 若你曾通过 高级 SSH 设置中的「执行命令」 填写 /bin/bash 解决脚本问题,以下是具体操作和原理说明: 1. 设置位置 打开 MobaXterm,选择需要配置的 SSH 会话࿰…...
系统集成项目管理工程师学习笔记之启动过程组
第十章 启动过程组 制定项目章程 定义 制定项目章程是编写一份正式批准项目并授权项目经理在项目活动中使用组织资源的文件的过程。 正式批准的项目文件 作用 1、明确项目与组织战略目标之间的直接联系 2、确立项目的正式地位 3、展示组织对项目的承诺 本过程仅开展一…...
OceanBase数据库全面指南(数据操作篇DML)
文章目录 一、OceanBase插入数据全指南1.1 INSERT语句基础用法1.2 高级INSERT用法1.2.1 插入查询结果1.2.2 多表插入1.2.3 条件插入1.3 INSERT性能优化技巧1.3.1 批量插入优化1.3.2 使用APPEND提示1.3.3 并行插入二、OceanBase批量插入优化2.1 多行插入语法详解2.2 批量绑定技术…...
深入解析AI中的Prompt工程:从理论到实践
目录 引言:Prompt在AI中的核心地位 第一部分:Prompt基础理论 1.1 什么是Prompt 1.2 ICIO框架:Prompt设计的结构化方法 1.3 为什么需要Prompt 1.4 Prompt的终极价值 第二部分:Prompt工程实践 2.1 Prompt工程概述 2.2 Prompt工程的具体内容 2.3 Prompt Engineer的工…...

软考中级软件设计师——设计模式篇
一、设计模式核心分类 设计模式分为 3 大类,共 23 种模式(考试常考约 10-15 种): 分类核心模式考试重点创建型模式工厂方法、抽象工厂、单例、生成器、原型单例模式的实现(懒汉、饿汉)、工厂模式的应用场…...
matlab二维随机海面模拟
二维随机海面模拟是一种重要的技术,广泛应用于海洋工程、船舶设计、雷达系统和光学通信等领域。利用蒙特卡罗方法结合二维海浪功率谱模型,可以生成符合实际海面特性的随机表面。 步骤 1: 定义海浪功率谱模型 海浪功率谱模型描述了海浪能量在不同频率和…...

Axure系统原型设计列表版方案
列表页面是众多系统的核心组成部分,承担着数据呈现与基础交互的重要任务。一个优秀的列表版设计,能够极大提升用户获取信息的效率,优化操作体验。下面,我们将结合一系列精心设计的列表版方案图片,深入探讨如何打造出实…...

微软全新开源命令行文本编辑器:Edit — 致敬经典,拥抱现代
名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、引言:命令行的新利器二、Edit:致敬经典,拥抱现代1. 命令行的“新升级”2. 为什么要有 Edit?三、核心功能与特性一览1. 完全开源、MIT 许可证…...

年会招标抽奖活动软件———仙盟创梦IDE
年会是企业一年的总结与欢庆时刻,而抽奖环节更是点燃全场气氛的关键。如何让抽奖环节既大气又充满仪式感?选对抽奖软件至关重要!本文精心挑选了 3 款兼具实用性与氛围感的年会抽奖软件,从界面设计到功能特色,全方位为你…...

智防火灾,慧控能耗:物联网赋能金融行业电气安全革新
摘要 随着金融行业对电气安全需求的不断提升,传统用电管理模式已难以满足现代金融机构对火灾防控、能耗管理和智能运维的要求。本文基于物联网、云计算及大数据分析技术,提出一套针对金融行业的安全用电解决方案。该方案通过智能化硬件部署与平台化管理…...
Any类(C++17类型擦除,也称上帝类)
Any类(C17类型擦除,也称上帝类) 在C中,std::any 是C17标准引入的一个灵活的类型安全容器,用于存储任意类型的单个值。 1. std::any 的核心特性 类型安全:存储的值必须通过明确的类型转换(any_…...