基于瑞萨R7FA2L1AB2DFL单片机的水位检测器制作方案

描述

 

概述

文章主要介绍如何使用e2studio灵活软件包(FSP)对瑞萨R7FA2L1AB2DFL单片机开发板进行ADC单通道采集电压,评估AD功能,以及制作水位检测器。其中重点介绍了使用EZ-CUBE3仿真器对RA-Eco-RA2L1-48PIN开发板成功烧录及调试;

同时还使用另一个J-Link烧录固件至J-Link OB-STM32F072,对其升级,支持ARM v8的Renesas芯片烧录及调试,显示p000脚值、ADC电压值、水深值。

AD功能评估

01 创建工程

打开e2 studio软件;

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

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

完成工程创建。

ADC及串口配置完成后,构建工程,确保无误。

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

02 使用瑞萨EN-CUBE3仿真器调试

adc

瑞萨EN-CUBE3仿真器

因RA-Eco-RA2L1-48PIN板上没有USB口,RA-Eco-RA2L1-48PIN调试时,左边档位先打到RA档,按下表RA SWD+串口列接线调试。之后,将左边档位打到USB+UART档,进行串口打印

adc

用瑞萨EN-CUBE3仿真器调试时,项目-属性-工具设置选项为下表所示。

adc

也可以对J-Link OB升级固件,用J-Link OB调试

因J-Link OB不支持ARM v8-M,J-Link OB进行如下改进

使用另一个J-Link或DAP-Link或ST-Link或PW-Link烧录更新的固件J-Link OB-STM32F072-128KB-CortexM 20231030.bin固件至STM32F072CBT6芯片。

adc

03 演示效果

EN-CUBE3

RA2L1-ADC

04 工程代码

左右滑动查看完整内容

 

#include"hal_data.h"
#include


FSP_CPP_HEADER
voidR_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER


fsp_err_t err = FSP_SUCCESS;
volatilebool uart_send_complete_flag = false;
voiduser_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

 

 

制作水位检测器

01 水位传感器运行原理

当平行铜线之间有水时,水浸没的高度不同,电流不同。铜线间的电阻根据水位的变化而变化。

电阻与水的高度成反比(传感器浸水越深,导电性越好,电阻越小,电流越大)。电路连接:

ADC读取电压(V)与水位高度(mm)为线性相关关系:Y=41.774-38.686

从而得出水位值。RA-Eco-RA2L1-48PIN开发板与水位传感器连线图如下

adc

02 主循环部分代码修改如下

左右滑动查看完整内容

 

while(1)
{
        uint16_t adc_data25=0;
        double a25,wl; // define wl (water level)
        (void) R_ADC_ScanStart(&g_adc0_ctrl);
        scan_complete_flag = false;
        while (!scan_complete_flag)
        {
        }


        err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_25, &adc_data25);
        assert(FSP_SUCCESS == err);
        a25=(double)(adc_data25/4095.0)*3.3;
        wl = (double)(41.774 * a25 - 38.686); // water level definition equation
        printf("P510(AN25)=%d, voltage=%f, water level=%f mm
",adc_data25,a25,wl); // print water level (mm)


        R_BSP_SoftwareDelay (1000, BSP_DELAY_UNITS_MILLISECONDS);
}

 

03 演示效果

RA2L1-水位测试

结果结论

瑞萨RA2L1微控制器集成的外设,简化了设计并能加快开发过程。它有优越的关键性能,比如:灵活的连接性(UART通信接口等)满足工业自动化项目的需求。

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分