0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨e2studio----ADC通过单次扫描多通道方式采样

RA生态工作室 2021-11-02 16:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

pYYBAGGA3i6Af0z4AABdWrtWoBM374.png

1.概述

本篇文章主要介绍如何使用e2studio对瑞萨单片机进行Adc通过单次扫描多通道方式采样。

2.硬件准备

首先需要准备一个开发板,这里我准备的是芯片型号 R7FA2L1AB2DFL 的开发板。

3.新建工程

16000776-2dec-11ec-aa30-dac502259ad0.png

4.工程模板

16754e82-2dec-11ec-aa30-dac502259ad0.png

5.保存工程路径

16e5803a-2dec-11ec-aa30-dac502259ad0.png

6.芯片配置

本文中使用R7FA2L1AB2DFL来进行演示。

1727724c-2dec-11ec-aa30-dac502259ad0.png

7

7.工程模板选择

17698984-2dec-11ec-aa30-dac502259ad0.png

8.ADC配置

点击Stacks->New Stack->Driver->Analog -> ADC Driver on r_adc。

179ca7e2-2dec-11ec-aa30-dac502259ad0.png

9.ADC属性配置

17d0650a-2dec-11ec-aa30-dac502259ad0.png

180922dc-2dec-11ec-aa30-dac502259ad0.png

10.R_ADC_Open()函数原型

18466f48-2dec-11ec-aa30-dac502259ad0.png

故可以用R_ADC_Open() 函数进行配置,开启和初始化ADC模式。

	/* 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);

11.R_ADC_ScanCfg()函数原型

18840c0e-2dec-11ec-aa30-dac502259ad0.png

配置ADC扫描参数,赋能ADC通道。在此函数中设置通道特定设置。


	 /* Enable channels. */
    err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
    assert(FSP_SUCCESS == err);

12.R_ADC_ScanStart()函数原型

18bef292-2dec-11ec-aa30-dac502259ad0.png

启动扫描,若设置为单次扫描,没扫描完一次都需要重新开启。

		/* Enable scan triggering from ELC events. */
        (void) R_ADC_ScanStart(&g_adc0_ctrl);

故可以用R_IOPORT_PinRead()函数进行读取IO口电平状态,该函数只能读取一个端口的电平。

bsp_io_level_t p_port_value_port_151;
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_15, &p_port_value_port_151);

13. 回调函数adc_callback ()

每次扫描完之后都会进入回调函数中。

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;
}

故需要在扫描时候在主程序中等待其扫描完毕。


	    scan_complete_flag = false;
        while (!scan_complete_flag)
        {
            /* Wait for callback to set flag. */
        }

14.R_ADC_Read()函数原型

18ed9a02-2dec-11ec-aa30-dac502259ad0.png

读取单个通道的ADC值。

		err =R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adc_data1);
        assert(FSP_SUCCESS == err);

        a1=(double)(adc_data1/4095.0)*3.3;

15.多通道设置

以读取通道0(P000)和通道1 (P010)为例子,通道配置如下。

191798ca-2dec-11ec-aa30-dac502259ad0.png

通道配置要注意通道数,配置错误可能会读取错误。

195862c4-2dec-11ec-aa30-dac502259ad0.png

16.代码

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 */

    fsp_err_t err = FSP_SUCCESS;
    /* 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);

    double a0,a5;
    uint16_t adc_data1=0;
    uint16_t adc_data2=0;
    while(1)
    {

    /* 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_data1);
           assert(FSP_SUCCESS == err);
           a0=(adc_data1/4095.0)*3.3;

           err =R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_5, &adc_data1);
           assert(FSP_SUCCESS == err);
           a5=(adc_data1/4095.0)*3.3;

           R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
    }

	#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
	#endif
}

17.视频教学

视频教学稍后会在B站官方账号更新,请留意B站视频更新~

198d40e8-2dec-11ec-aa30-dac502259ad0.jpg

原文标题:瑞萨e2studio----ADC通过单次扫描多通道方式采样

文章出处:【微信公众号:RA生态工作室】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18609

    浏览量

    387084
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9499

    浏览量

    388729
  • 嵌入式
    +关注

    关注

    5186

    文章

    20149

    浏览量

    328848
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA6E2E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ

    ;amp;vd_source=7ab92f6a337b22fda39554fd6e70f01a 本报告旨在记录基于RA6E2 MCU评估板的初步开发体验。主要内容包括: 软件开发环
    发表于 12-01 22:42

    RA6E2ADC数据采集与数码管显示

    概述 项目简介 本报告基于RA6E2评估板,实现了一个完整的ADC数据采集与显示系统。通过板载ADC
    发表于 11-27 00:52

    RA6E2ADC、DAC 电压输入输出

    ); 代码中 dac 的值为 0 ~ 4095,对应 0 ~ 3.3v 电压 【ADC 电压输入】 RA6E2 支持 12 位 ADC
    发表于 11-10 01:29

    RA6E2ADC 电压温度计

    P000 引脚,用以测试 ADC 采样电压; 流程图 工程创建 打开 e^2^ studio 软件; 依次点击 文件 - 新建 -
    发表于 11-04 12:16

    RA6E2】Home Assistant物联网 ADC 温度计

    RA6E2】Home Assistant物联网 ADC 温度计 本文介绍了 RA-Ec
    发表于 11-03 22:10

    【EK-RA6E2开发指南】ADC获取电压值

    RA6E22ADC单元,每个ADC单元有12位、10位、8位读取数据的格式可以选择,在单元0上有13个ADC
    的头像 发表于 09-23 18:15 1732次阅读
    【EK-RA6<b class='flag-5'>E2</b>开发指南】<b class='flag-5'>ADC</b>获取电压值

    【RA4E2开发板评测】ADC+DAC

    收到了发过来的RA4E2开发板,之前也测试过相关的ARM单片机,
    发表于 09-02 13:35

    【RA4L1-SENSOR】RA4L1-SENSOR开发版开箱评测+e2studio软件安装

    RA4L1-SENSOR开发板。如下图所示 拿出里面的开发板,可以看到3件套,接上USB线, 二、e2studio软件安装 e2 studio (简称为 e2
    发表于 06-12 23:23

    RA单片机在e2 studio环境下printf编译出错的问题解析

    最近看到有一些网友在讨论关于:RA单片机在e2 studio环境下printf编译出错的问题。
    的头像 发表于 05-24 15:51 1228次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>RA单片机在<b class='flag-5'>e2</b> <b class='flag-5'>studio</b>环境下printf编译出错的问题解析

    【RA-Eco-RA4M2开发板评测】初学-使用flash programmer烧录程序

    本人刚入坑不久,对单片机的热情很高,于是也加入了的板子申请队伍,很荣幸也成为了试用者之一,此前对于的板子从未接触过,包括对于使用e2stud
    发表于 04-29 17:28

    RA2L1入门学习】+e2_studio软件安装及使用

    一、e2_studio软件安装及使用 注册e² studio | Renesas 电子 下载软件 安装 4.创建工程 更改工程位置 新
    发表于 03-27 13:25

    RA8快速上手指南:Cortex-M85内核RA8开发环境搭建 并点亮一个LED

    因为Cortex-M内核,RA8系列单片机支持多种市面上常见的开发环境,像Keil MDK、IAR EWARM等,而本文讲述的是自家官方的IDE(
    的头像 发表于 03-17 14:35 1566次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>RA8快速上手指南:Cortex-M85内核<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>RA8开发环境搭建 并点亮一个LED

    e²studio和Keil简介及如何安装e²studio开发环境

    (简称为e2e2s)是电子的一款包含代码开发、构建和调试的开发工具。e²studio基于开
    的头像 发表于 03-13 17:27 2260次阅读
    <b class='flag-5'>e</b>²<b class='flag-5'>studio</b>和Keil简介及如何安装<b class='flag-5'>e</b>²<b class='flag-5'>studio</b>开发环境

    **RA2L1入门学习】+**UART测试实验

    RA2L1入门学习】+UART测试实验 本篇文章主要介绍如何使用e2studio单片
    发表于 03-09 15:45

    RA2L1入门学习】2. PWM呼吸灯

    .烧录程序: 3.实验图片: 经过这两天的使用,发现e2studio中的stacks页面还是挺好用的,可以拖拽函数,编写程序更加方便快捷。在stacks页面还能看到用到了哪些堆栈,非常的赞。 本人第一使用该开发板,作为入门学习,主要是体验一下
    发表于 01-30 21:55