【RA-Eco-RA2L1-48PIN】ADC 电压表

news2025/5/23 12:35:40

【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) - GeneralBaudInterrupts 设置回调函数

  • 点击 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_FOOTER

fsp_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)
#endif

PUTCHAR_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_FOOTER

fsp_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

#endif

PUTCHAR_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 的相关产品设计和快速应用提供了参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KS107BG型超声体模的结构及性能

KS107BG型超声体模适用于工作频率在5~10MHz之间的&#xff22;超设备的性能检测。 一、外部结构 体模外壳和底座由有机玻璃加工组装而成&#xff0c;底面板上开有两个直径36mm的圆孔&#xff0c;其上封有2mm厚的真空橡皮&#xff0c;作为抽气及注射保养液的入口。体模外壳外表…

目标检测评估指标mAP详解:原理与代码

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

【风控】模型算法区分度指标KS

一、KS指标的定义原理 背景 KS&#xff08;Kolmogorov–Smirnov&#xff09;原本用于检验样本分布与理论分布或两个样本分布是否一致。风控建模中&#xff0c;将“好样本”&#xff08;Good&#xff09;与“坏样本”&#xff08;Bad&#xff09;的模型输出概率看作两组经验分布…

win11下jenkins+docker+maven自动部署springboot项目

win11下jenkinsdockermaven自动部署springboot项目 一、前置软件安装二、jenkins配置三、springboot项目准备四、jenkins打包部署项目到本地docker中五、jenkins打包部署项目到远程服务器docker中 一、前置软件安装 docker安装 需要开启wsl&#xff0c;以管理员身份运行docke…

《决策科学与艺术》No1: 决策树:概念、原理、发展历史、特点及应用

决策树&#xff1a;概念、原理、发展历史、特点及应用 摘要 决策树是一种广泛使用的机器学习和决策分析方法&#xff0c;以其可解释性、简洁性和多功能性著称。本文全面介绍了决策树的概念基础、基本原理、发展历程、显著特征及其在商业、医疗、金融和工程等多个领域的典型应用…

【苍穹外卖】Day01—Mac前端环境搭建

目录 一、安装Nginx &#xff08;一&#xff09;安装Homebrew &#xff08;二&#xff09;Homebrew安装Nginx 1. 执行安装命令&#xff1a; 2. 验证安装&#xff1a; &#xff08;三&#xff09;启动与停止Nginx 二、配置Nginx 1. 替换nginx.conf 2. 替换html文件夹 三…

软考中级软件设计师——设计模式篇

一、设计模式核心分类 设计模式分为 3 大类&#xff0c;共 23 种模式&#xff08;考试常考约 10-15 种&#xff09;&#xff1a; 分类核心模式考试重点创建型模式工厂方法、抽象工厂、单例、生成器、原型单例模式的实现&#xff08;懒汉、饿汉&#xff09;、工厂模式的应用场…

Axure系统原型设计列表版方案

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

微软全新开源命令行文本编辑器:Edit — 致敬经典,拥抱现代

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

年会招标抽奖活动软件———仙盟创梦IDE

年会是企业一年的总结与欢庆时刻&#xff0c;而抽奖环节更是点燃全场气氛的关键。如何让抽奖环节既大气又充满仪式感&#xff1f;选对抽奖软件至关重要&#xff01;本文精心挑选了 3 款兼具实用性与氛围感的年会抽奖软件&#xff0c;从界面设计到功能特色&#xff0c;全方位为你…

智防火灾,慧控能耗:物联网赋能金融行业电气安全革新

摘要 随着金融行业对电气安全需求的不断提升&#xff0c;传统用电管理模式已难以满足现代金融机构对火灾防控、能耗管理和智能运维的要求。本文基于物联网、云计算及大数据分析技术&#xff0c;提出一套针对金融行业的安全用电解决方案。该方案通过智能化硬件部署与平台化管理…

在 JavaScript 中正确使用 Elasticsearch,第二部分

作者&#xff1a;来自 Elastic Jeffrey Rengifo 回顾生产环境中的最佳实践&#xff0c;并讲解如何在无服务器环境中运行 Elasticsearch Node.js 客户端。 想获得 Elastic 认证&#xff1f;查看下一期 Elasticsearch Engineer 培训的时间&#xff01; Elasticsearch 拥有大量新…

更新nvidia-container-toolkit 1.17.7-1后,运行--gpus all 卡死问题

用Arch每日一滚&#xff0c;结果今天用 sudo docker run -it --runtimenvidia --gpus all居然卡死了&#xff0c;排雷排了几小时&#xff0c;才从开源库发现问题 nvidia-container-toolkit 1.17.7-1 是有问题的&#xff0c;而且在ubuntu和arch上都存在问题。 只好Downgrade 1.…

通义灵码 2.5 版深度评测:智能编程的边界在哪里?

通义灵码 2.5 版深度评测&#xff1a;智能编程的边界在哪里&#xff1f; 评测目标 全面测试智能体模式&#xff1a;是否真正具备自主决策能力&#xff1f;MCP 工具集成体验&#xff1a;能否提升开发效率&#xff1f;AI 记忆自感知能力&#xff1a;是否能真正理解开发者习惯&a…

电商项目-商品微服务-规格参数管理,分类与品牌管理需求分析

本文章介绍&#xff1a;规格参数管理与分类与品牌管理的需求分析和表结构的设计。 一、规格参数管理 规格参数模板是用于管理规格参数的单元。规格是例如颜色、手机运行内存等信息&#xff0c;参数是例如系统&#xff1a;安卓&#xff08;Android&#xff09;后置摄像头像素&…

零基础设计模式——创建型模式 - 工厂方法模式

第二部分&#xff1a;创建型模式 - 工厂方法模式 (Factory Method Pattern) 上一节我们学习了单例模式&#xff0c;它关注如何保证一个类只有一个实例。现在&#xff0c;我们来看另一个重要的创建型模式——工厂方法模式。它关注的是如何创建对象&#xff0c;但将创建的决定权…

蓝桥杯5130 健身

问题描述 小蓝要去健身&#xff0c;他可以在接下来的 1∼n 天中选择一些日子去健身。 他有 m 个健身计划&#xff0c;对于第 i 个健身计划&#xff0c;需要连续的 天&#xff0c;如果成功完成&#xff0c;可以获得健身增益 si​ &#xff0c;如果中断&#xff0c;得不到任何…

电商虚拟户:重构资金管理逻辑,解锁高效归集与智能分账新范式

一、电商虚拟户的底层架构与核心价值 在数字经济浪潮下&#xff0c;电商交易的复杂性与日俱增&#xff0c;传统账户体系已难以满足平台企业对资金管理的精细化需求。电商虚拟户作为基于银行或持牌支付机构账户体系的创新解决方案&#xff0c;通过构建“主账户子账户”的虚拟账户…

腾讯2025年校招笔试真题手撕(二)

一、题目 最近以比特币为代表的数字货币市场非常动荡&#xff0c;聪明的小明打算用马尔科夫链来建模股市。如图所示&#xff0c;该模型有三种状态&#xff1a;“行情稳定”&#xff0c;“行情大跌”以及“行情大涨”。每一个状态都以一定的概率转化到下一个状态。比如&#xf…

安装完dockers后就无法联网了,执行sudo nmcli con up Company-WiFi,一直在加载中

Docker服务状态检查 执行 systemctl status docker 确认服务是否正常 若未运行&#xff0c;使用 sudo systemctl start docker && sudo systemctl enable docker 网络配置冲突 Docker会创建docker0虚拟网桥&#xff0c;可能与宿主机网络冲突 检查路由表 ip route sho…