RA-ECO-RA6E2-64PIN-V1.0单通道采集ADC及串口打印
bili_73131580727
2025年08月07日 18:49

1 概述

本篇文章主要介绍如何使用e2 studio灵活软件包(FSP)对瑞萨RA-ECO-RA6E2-64PIN-V1.0 单通道采集ADC及UART串口打印电压值,进行AD功能评估。

2参考教学视频​

3 单通道采集ADC及UART串口打印步骤

打开 e2 studio 软件

依次点击 文件 - 新建 - 瑞萨 C/C++ 项目 - Renesas RA

依次进行工程命名,路径设置,FSP版本,目标开发板选择,Device 选择R7FA6E2BB,工具链选择 GNU ARM Embedded

完成工程创建。ADC 及串口配置完成后(具体步骤见下面的各个图,详细过程参考上面的教学视频),构建工程,确保无误。

输入代码,实现 ADC 采集与重定向串口打印输出。

时钟设置

4 完整工程代码:

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

{

  err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);

  assert(FSP_SUCCESS == err);

  printf("hello world!\n");

  err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);

  assert(FSP_SUCCESS == err);

  err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);

  assert(FSP_SUCCESS == err);

  while(1)

  {

    uint16_t adc_data0=0;

    double a0;

       (void) R_ADC_ScanStart(&g_adc0_ctrl);

    scan_complete_flag = false;

    while (!scan_complete_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("P000(AN0)=%d,voltage=%f\n",adc_data0,a0);

    R_BSP_SoftwareDelay (1000, BSP_DELAY_UNITS_MILLISECONDS);

  }

#if BSP_TZ_SECURE_BUILD

  /* Enter non-secure code */

  R_BSP_NonSecureEnter();

#endif

}

void R_BSP_WarmStart(bsp_warm_start_event_t event)

{

  if (BSP_WARM_START_RESET == event)

  {

#if BSP_FEATURE_FLASH_LP_VERSION != 0

    R_FACI_LP->DFLCTL = 1U;

#endif

  }

  if (BSP_WARM_START_POST_C == event)

  {

    R_IOPORT_Open (&IOPORT_CFG_CTRL, &IOPORT_CFG_NAME);

#if BSP_CFG_SDRAM_ENABLED

    R_BSP_SdramInit(true);

#endif

  }

}

FSP_CPP_HEADER

BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();

BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()

{

}

FSP_CPP_FOOTER

#endif

5 ADC采集及串口打印视频演示效果如下:(使用Renasas Flash Programmer 下载代码到开发板里)

6 结果结论及心得体会:

本人还通过programmer烧录LED灯点亮程序(见下面一个视频)。瑞萨RA-ECO-RA6E2-64PIN-V1.0成的外设,简化了设计并能加快开发过程。它有优越的关键性能,比如:灵活的连接性(UART通信接口等)满足工业自动化项目的需求。