这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 【瑞萨RA0E2开发板】07:学习一下RA0E2内部ADC功能

共1条 1/1 1 跳转至

【瑞萨RA0E2开发板】07:学习一下RA0E2内部ADC功能

高工
2025-10-01 13:21:58     打赏

使用瑞萨的e2s 5.9.0版本读取ADC的电压数据,并通过串口发送到电脑端查看数据。

一:RA0E2的ADC知识分享:

    A/D 转换器用于将模拟输入信号转换为数字值,并配置为控制多达 15 个 A/D 转换器模拟输入通道(AN000 至 ANO12、AN021 和 AN022)。通过 A/D 转换器模式寄存器 2(ADM2)中的 ADTYP[1:0] 位可选择 12 位、10 位或 8 位分辨率。A/D 转换器具有以下功能。表 25.1 列出了 ADC12 的规格,图 下展示了 ADC12 的框图。

1001-1.png

二:FSP库中的配置如下所示:

2.1  配置ADC的输入引脚

1001-2.png

2.2 添加ADC的任务,如下所示:

1001-3.png

ADC的配置过程:

2.2.1选中stacks一栏,选中输入一栏中,ADC选项;

2.2.2 如上图所示,配置ADC的借本参数,这里要注意下,时钟频率的使用,ADC的扫描频率需要做分频处理。

2.2.3 中断一栏,需要定义一个g_adc0_callback的回调函数,同时配置ADC的优先级别和触发模式;

2.2.4 在输入一栏,配置ADC的通道扫描模式,和具体的通道号(AN002)

2.2.5 配置完成后,检查有无错误,没有错误的话,直接点击生成代码;

三:软件代码编写:

编写的步骤如下所示:

a.初始化ADC模块:在代码中,首先需要初始化ADC模块。可以使用瑞萨提供的FSP(Flexible Software Package)库来简化这一过程。初始化时需要配置ADC的通道、分辨率等参数。

b.配置ADC通道:根据需要采集的信号,选择合适的ADC通道。RA0E2开发板支持多个ADC通道,可以根据具体的应用需求进行配置。

c.启动ADC扫描:启动ADC扫描以开始采集数据。可以设置为单次采样或连续采样模式,具体取决于应用需求。

d.读取ADC值:在ADC采集完成后,可以通过相应的API读取ADC转换后的值。通常会将读取的值转换为电压值,以便进行后续处理或显示。

e.显示或处理数据:采集到的电压值可以通过OLED显示屏显示,或者通过串口打印输出,便于调试和观察。

3.1 添加ADC的回调处理函数:

volatile bool scan_complete_flag = false;
void g_adc0_callback(adc_callback_args_t * p_args)
{
FSP_PARAMETER_NOT_USED(p_args);
scan_complete_flag = true;
}

3.2 添加ADC的初始化函数:

void ADC_Init(void)
{
err = R_ADC_D_Open(&g_adc0_ctrl, &g_adc0_cfg);
assert(FSP_SUCCESS == err);
err = R_ADC_D_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
assert(FSP_SUCCESS == err);
}

3.3 在500ms的任务中,添加读取ADC数值的处理函数:

读取部分如下所示:

double Read_ADC_Voltage_Value(void)
{
uint16_t adc_data;
double a0;
(void)R_ADC_D_ScanStart(&g_adc0_ctrl);

/*    scan_complete_flag = false; //重新清除标志位*/
while (!scan_complete_flag) //等待转换完成标志
{
;
}
scan_complete_flag = false;
/* 读取通道0数据 */
err = R_ADC_D_Read(&g_adc0_ctrl, ADC_CHANNEL_2, &adc_data);
assert(FSP_SUCCESS == err);

/* ADC原始数据转换为电压值(ADC参考电压为3.3V) */
a0 = (double)(adc_data*3.3/4095);
/*    printf("adc_data: %u", adc_data);*/
return adc_data;
}

输出部分如下所示:

case 5:
ADC0_data = Read_ADC_Voltage_Value();
printf("ADC0_data=  %5d\r\n" ,ADC0_data);

四:实物测试图片如下所示:

1001-4.png





关键词: 瑞萨     RA0E2     内部ADC    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]