基于瑞萨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 创建工程
打开e2studio软件;
依次点击文件-新建-瑞萨C/C++项目-Renesas RA;
依次进行工程命名,路径设置,FSP版本,目标开发板选择,Device选择R7FA2L1AB2DFL,工具链选择GNU ARM Embedded;
完成工程创建。
ADC及串口配置完成后,构建工程,确保无误。
输入代码,实现ADC采集与重定向串口打印输出。
02 使用瑞萨EN-CUBE3仿真器调试

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

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

也可以对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芯片。

03 演示效果
EN-CUBE3
RA2L1-ADC
04 工程代码
左右滑动查看完整内容
#include"hal_data.h" #includeFSP_CPP_HEADER voidR_BSP_WarmStart(bsp_warm_start_event_tevent); FSP_CPP_FOOTER fsp_err_terr = 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__ #definePUTCHAR_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; returnch; } int_write(intfd,char*pBuffer,intsize) { for(inti=0;i
制作水位检测器
01水位传感器运行原理
当平行铜线之间有水时,水浸没的高度不同,电流不同。铜线间的电阻根据水位的变化而变化。
电阻与水的高度成反比(传感器浸水越深,导电性越好,电阻越小,电流越大)。电路连接:
ADC读取电压(V)与水位高度(mm)为线性相关关系:Y=41.774-38.686
从而得出水位值。RA-Eco-RA2L1-48PIN开发板与水位传感器连线图如下。
02主循环部分代码修改如下
左右滑动查看完整内容
while(1) { uint16_tadc_data25=0; doublea25,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通信接口等)满足工业自动化项目的需求。
