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
    +关注

    关注

    146

    文章

    18074

    浏览量

    370900
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9395

    浏览量

    379851
  • 嵌入式
    +关注

    关注

    5161

    文章

    19784

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【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 ?888次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>RA单片机在<b class='flag-5'>e2</b> <b class='flag-5'>studio</b>环境下printf编译出错的问题解析

    使用e2studio软件新建RA系列MCU工程

    打开e2studio软件,会默认弹出一个名为“e2studio启动程序”的小窗口,它提示我们“选择一个目录作为工作空间”。如下图所示。
    的头像 发表于 04-30 14:41 ?1908次阅读
    使用<b class='flag-5'>e2studio</b>软件新建<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>RA系列MCU工程

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

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

    RA8D1单片机IO中断配置实现方法

    本文为结合e2 studio工具,以及CPKCOR_RA8D1B评估板,给大家讲述RA8
    的头像 发表于 04-09 15:05 ?1106次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>RA8D1单片机IO中断配置实现方法

    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 ?1130次阅读
    <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 ?1457次阅读
    <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入门学习】RA2L1开发环境搭建

    Eclipse 衍生的 IDE,e? studio 保留了 Eclipse 的灵活性,同时针对 MCU 进行了大量优化。尤其是FSP 的配置工具 ,相比手写寄存器初始化代码,可视
    发表于 03-07 11:33

    基于RA0E1开发板的IIC OLED测试

    基于前面关于e? studio开发软件的使用,以及工程测试基础,本文进一步探索实现硬件IIC OLED的文字和图片显示。
    的头像 发表于 02-13 13:36 ?907次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>RA0<b class='flag-5'>E</b>1开发板的IIC OLED测试

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

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

    RA2L1入门学习】1. 点亮LED

    首次使用单片机,先说一下使用感受。 本次学习使用的是RA-Eco-RA2L1-48PIN-V1.0开发板+e2studio(官方的集成开发环境)+RAFP(官方的程序烧录工具)。
    发表于 01-29 22:17

    FPB-RA6E2 评估板入门学习

    FPB-RA6E2 评估板入门学习
    的头像 发表于 12-11 09:22 ?831次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b> FPB-RA6<b class='flag-5'>E2</b> 评估板入门学习

    e2studio(1)----芯片之搭建FSP环境

    视频教学 样品申请 请勿添加外链 e2studio软件 e2studio的集成开发环境,FSP 提供了众多可提高效率的工具,用于开发针对
    发表于 09-30 15:28