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

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

3天内不再提示

【干货分享】在 RA-Eco-RA6M4开发板上实现 ADC 电压的 LabVIEW 数据采集

电子发烧友论坛 2025-08-21 08:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文介绍了 RA-Eco-RA6M4-100PIN-V1.0 开发板通过 LabVIEW 上位机实现 ADC 电压数据采集的项目设计,采用串口发送和串口中断查询两种方案。
https://bbs.elecfans.com/jishu_2496332_1_1.html


RA-Eco-RA6M4-100PIN-V1.0开发板,主控芯片为R7FA6M4AF3CFP。 瑞萨电子 RA6M4 微控制器 (MCU) 产品群使用了支持 TrustZone 的高性能 Arm Cortex-M33 内核。与片内的 Secure Crypto Engine(SCE) 配合使用,可提供安全芯片的功能。集成带有专用 DMA以太网 MAC,可确保高数据吞吐率。RA6M4 采用高效的 40nm 工艺,由基于 FreeRTOS 的灵活配置软件包 (FSP) 这一开放且灵活的生态系统概念提供支持,并能够扩展以使用其他实时操作系统(RTOS)和中间件。RA6M4 适用于物联网应用的需求,如以太网、面向未来应用的安全功能、大容量嵌入式 RAM 和较低功耗(从闪存运行 CoreMark 算法,低至 99µA/MHz)。


一、项目介绍

开发板工程调试:串口输出 JSON 格式的 ADC 值及其电压转换值;

LabVIEW 上位机设计:包括前面板和程序框图的设计等;

LabVIEW 测试与程序优化:通过串口获取芯片发送的 ADC 数据,提高响应速度、减小延迟;

使用串口中断方案实现 ADC 数值和电压数据的采集,以及相应的 LabVIEW 上位机设计。


二、工程调试

在前面完成 UART 串口输出 ADC 数值和电压转换数值的基础上,修改输出格式为 JSON,关键代码如下

#include"hal_data.h"FSP_CPP_HEADERvoidR_BSP_WarmStart(bsp_warm_start_event_tevent);FSP_CPP_FOOTERfsp_err_terr = FSP_SUCCESS;volatilebooluart_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; }}/*------------- UART redirection printf -------------*/#ifdef__GNUC__ #definePUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#endifPUTCHAR_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 { __io_putchar(*pBuffer++); } returnsize;}/*------------- ADC callback -------------*/volatileboolscan_complete_flag =false;voidadc_callback(adc_callback_args_t* p_args){ FSP_PARAMETER_NOT_USED(p_args); scan_complete_flag =true;}voidhal_entry(void){ /*TODO:add your own code here */ /* Open the transfer instance with initial configuration. */ err =R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg); assert(FSP_SUCCESS == err); //printf("hello world!\n"); /* 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); while(1) { uint16_tadc_data0=0; doublea0;// define voltage value /* 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_data0); assert(FSP_SUCCESS == err); a0 = (double)(adc_data0/4095.0)*3.3;// define voltage formula //printf("P000(AN0)=%d,voltage=%f\n",adc_data0,a0); printf("{"value": %d, "voltage": %f}\n",adc_data0,a0); R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS); }#ifBSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter();#endif}

保存文件,右键项目 - 构建程序,

右键项目 - 调试项目 - 上传固件至开发板。


串口测试

  • TypeC - USB 数据线连接开发板串口和电脑
  • 打开串口调试助手,配置对应的波特率等参数;
  • 打开串口,即可接收芯片发送的字符串

9cc84374-7e22-11f0-9080-92fbcf53809c.jpg

此时串口输出数据为标准 JSON 格式,便于后续 LabVIEW 数值读取。


三、LabVIEW 上位机

包括前面板设计、程序框图设计两部分。

前面板

9cd35ef8-7e22-11f0-9080-92fbcf53809c.jpg

使用方法

  • 串口配置:端口号、波特率等;
  • 单击运行按钮,设置文件保存路径;
  • 点击 START 按钮,开始连续采集数据;
  • 采集完成后,点击 STOP 按钮结束程序,数据自动保存至设定路径文件。

程序框图

9ce2e6a2-7e22-11f0-9080-92fbcf53809c.jpg

连续采集

连续采集

9cf7fc72-7e22-11f0-9080-92fbcf53809c.jpg

动态效果见底部视频。

数据保存

点击 Stop 按钮,停止数据采集,文件自动保存至预设路径,3 列数据依次为日期-时间-数值

9d03bc56-7e22-11f0-9080-92fbcf53809c.jpg


四、串口中断

除了上述串口不间断发送数据的方案,还可以使用串口中断实现 ADC 数据的自动采集。

工程代码

#include"hal_data.h"FSP_CPP_HEADERvoidR_BSP_WarmStart(bsp_warm_start_event_tevent);FSP_CPP_FOOTERfsp_err_terr = FSP_SUCCESS;volatilebooluart_send_complete_flag =false;volatilebooluart_receive_complete_flag =false;uint8_tuart_rx_buffer[3] = {0};// storage the received ordersvoiduser_uart_callback(uart_callback_args_t* p_args){ if(p_args->event == UART_EVENT_TX_COMPLETE) { uart_send_complete_flag =true; } elseif(p_args->event == UART_EVENT_RX_COMPLETE) { uart_receive_complete_flag =true; }}/*------------- UART redirection printf -------------*/#ifdef__GNUC__ #definePUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#endifPUTCHAR_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 { __io_putchar(*pBuffer++); } returnsize;}/*------------- ADC callback -------------*/volatileboolscan_complete_flag =false;voidadc_callback(adc_callback_args_t* p_args){ FSP_PARAMETER_NOT_USED(p_args); scan_complete_flag =true;}voidhal_entry(void){ /*TODO:add your own code here */ /* Open the transfer instance with initial configuration. */ err =R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg); assert(FSP_SUCCESS == err); // start interrupt err =R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer,3); assert(FSP_SUCCESS == err); /* 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); while(1) { uint16_tadc_data0=0; doublea0;// define voltage value // check if receive order if(uart_receive_complete_flag) { uart_receive_complete_flag =false; // check if `55 AA 10` or `55 AA 11` if(uart_rx_buffer[0] ==0x55&& uart_rx_buffer[1] ==0xAA) { /* 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_data0); assert(FSP_SUCCESS == err); a0 = (double)(adc_data0/4095.0)*3.3;// define voltage formula if(uart_rx_buffer[2] ==0x10)// send ADC value { printf("%d\n", adc_data0); } elseif(uart_rx_buffer[2] ==0x11)// send ADC voltage { printf("%f\n", a0); } } // restart UART receive err =R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer,3); assert(FSP_SUCCESS == err); } R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS); }#ifBSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter();#endif}

保存文件,右键项目 - 构建程序,

右键项目 - 调试项目 - 上传固件至开发板。


五、测试

使用串口调试助手测试串口中断响应。

分别以十六进制发送查询代码55 AA 10和55 AA 11分别获取 ADC 数值和相应的电压值。

9d177d0e-7e22-11f0-9080-92fbcf53809c.jpg

LabVIEW 上位机

基于上述串口中断查询的项目,设计了对应的 LabVIEW 上位机程序,便于自动化数据采集。

前面板

前面板设计包括串口配置、ADC 数值和电压的表盘显示、演化曲线图、控制按钮、数据保存配置等模块。

9d28b0ec-7e22-11f0-9080-92fbcf53809c.jpg

程序框图

9d3574f8-7e22-11f0-9080-92fbcf53809c.jpg

操作方法

  • 串口配置:端口号、波特率等;
  • 单击运行按钮,设置文件保存路径;
  • 点击 START 按钮,开始连续采集数据;
  • 采集完成后,点击 STOP 按钮结束程序,数据自动保存至设定路径文件;
    • 再次点击 START 重新采集数据;
    • 点击 Terminate 按钮终止上位机程序。



六、总结

本文介绍了 RA-Eco-RA6M4-100PIN-V1.0 开发板通过 LabVIEW 上位机实现 ADC 电压数据采集的项目设计,采用串口发送和串口中断查询两种方案,包括项目介绍、工程调试、串口打印 JSON 测试、LabVIEW 上位机设计、程序测试及调优等,为 Renesas 系列产品的开发设计和工业科研等领域的应用提供了参考。



9d452164-7e22-11f0-9080-92fbcf53809c.png

声明:本文由电子发烧友社区发布,转载请注明以上来源。如需平台(包括:试用+专栏+企业号+学院+技术直播+共建社区)合作及入群交流,请咨询18925255684(微信同号:elecfans123),谢谢!

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

    关注

    2014

    文章

    3681

    浏览量

    344442
  • adc
    adc
    +关注

    关注

    100

    文章

    7452

    浏览量

    553884
  • 数据采集
    +关注

    关注

    40

    文章

    7835

    浏览量

    119922
  • 开发板
    +关注

    关注

    25

    文章

    6140

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA-Eco-RA6M4开发板评测】——2.串口打印

    ;delay_ms(200);LED3_OFF; printf(\"欢迎试用瑞萨电子RA-Eco-RA6M4开发板评测\\\\r\\\\n\"); printf(\"摒弃
    发表于 07-16 13:20

    RA-Eco-RA6M4开发板评测】+初识篇

    RA-Eco-RA6M4开发板是一款基于 Arm® Cortex®-M33 内核的开发工具,且具有1MB 闪存、192kB支持奇偶校验 SRAM 以及64kb ECC SRAM。 该
    发表于 07-16 19:06

    RA-Eco-RA6M4开发板评测】+01+开箱测评+UART+PWM+LED

    、开箱 RA-Eco-RA6M4开发板RA-Eco-RA4E2-64PIN-V1.0开发板同框PK。开发板厂家还是一如既往的吝啬,
    发表于 07-17 23:43

    RA-Eco-RA6M4开发板评测】介绍、环境搭建、工程测试

    RA-Eco-RA6M4开发板评测】介绍、环境搭建、工程测试 本文介绍了 RA-Eco-RA6M4-100PIN-V1.0 开发板的基本信息,包括产品特点、参数资源、
    发表于 07-25 11:48

    RA-Eco-RA6M4开发板评测】ADC 电压

    RA-Eco-RA6M4开发板评测】ADC 电压表 本文介绍了 RA-Eco-RA6M4-100PIN-V1.0
    发表于 07-25 12:33

    RA-Eco-RA6M4开发板评测】ADC 电压LabVIEW 数据采集

    RA-Eco-RA6M4开发板评测】ADC 电压LabVIEW 数据采集 本文介绍了
    发表于 07-26 11:07

    RA-Eco-RA6M4开发板评测】——8.获取RA6M4开发板芯片内部温度传感器值

    (\"\\\\r\\\\n测量RA-Eco-RA6M4开发板芯片温度\\\\r\\\\n\"); while(1) { R_ADC_convert(); V1 = ( 3.3
    发表于 07-27 14:39

    RA-Eco-RA6M4开发板评测】使用中断实现HCSR04测距

    关于RA-Eco-RA6M4这块开发板,论坛内已存在多个帖子进行对其详细的介绍,这里不再过多赘述。 关键词:RA6M4、中断、定时器、串口 实现思路:首先在e2studio的可视化配置
    发表于 09-03 20:55

    RA-Eco-RA6M4开发板评测】使用ULINK2开发瑞萨MCU

    无缝集成 · 宽泛的目标电压范围:2.7V - 5.5V · 使用标准 Windows USB 驱动程序的即插即用安装 RA-Eco-RA6M4-100PIN-V1.0 开发板资料链接
    发表于 09-25 23:08

    RA-Eco-RA6M4开发板评测】开发环境搭建

    开发环境: IDE:MKD 5.38a Renesas RA Smart Configurator:v5.9.0 开发板RA-Eco-RA6M4
    发表于 11-09 21:16

    RA-Eco-RA6M4开发板评测】ADC获取电压

    开发环境: IDE:MKD 5.38a Renesas RA Smart Configurator:v5.9.0 开发板RA-Eco-RA6M4
    发表于 11-09 21:42

    RA-Eco-RA6M4开发板评测】DAC设置电压

    开发环境: IDE:MKD 5.38a Renesas RA Smart Configurator:v5.9.0 开发板RA-Eco-RA6M4
    发表于 11-09 21:47

    【有奖试用14期】RA-Eco-RA4M2-100PIN开发板

    为了让电子发烧友社区开发者们定期体验试用不同的开发板,现推出每周一期开发板免费试用活动。 第十四期试用的样品为  RA-Eco-RA4M2-100PIN
    的头像 发表于 11-01 08:20 2145次阅读

    有奖试用!!RA-Eco-RA4M2-100PIN-V1.0开发板试用活动报名

    RA-Eco-RA4M2-100PIN-V1.0开发板试用活动
    的头像 发表于 03-13 12:10 851次阅读
    有奖试用!!<b class='flag-5'>RA-Eco-RA4M</b>2-100PIN-V1.0<b class='flag-5'>开发板</b>试用活动报名

    干货分享】基于RA-Eco-RA6M4开发板实现无线通信

    本文介绍了RA-Eco-RA6M4-100PIN-V1.0开发板结合DA16200无线WiFi模块实现网络通信、数据上传和远程控制LED的项目设计。包括DA16200模块介绍、工程创建
    的头像 发表于 08-05 08:06 696次阅读
    【<b class='flag-5'>干货</b>分享】基于<b class='flag-5'>RA-Eco-RA6M4</b><b class='flag-5'>开发板实现</b>无线通信