欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 【RA-Eco-RA2L1-48PIN】ADC 电压表

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

2025/5/23 18:11:31 来源:https://blog.csdn.net/qq_36654593/article/details/148127282  浏览:    关键词:【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) - 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_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 的相关产品设计和快速应用提供了参考。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词