基于RS232接口的Modbus-RTU从机实现(RA6M4)

原创 面包板社区 2023-06-20 20:01
踏浪而行,偶尔回首,虽不见印记,却也能望见远处的海岸。

从15年毕业,恍然已八年。

硬件工作了八年。也是爱的深沉。

还记得大学的时候在学生会认识的朋友,他有一天突然跟我推荐单片机开发板,那时候大二,打听过,单片机应该是下学期开始的课程。当时我觉得是一种命运的安排,就斥巨资购买了郭天祥的单片机开发板。鬼使神差的,竟然在大学那松散的时光里,我可以学习到深夜一两点!也是因为一块开发板,我考了两次的计算机二级(虽然后来知道没啥用),就很自然的过了。以前不是很理解的硬件知识,也通畅了。后来参加了学校组织的以及国家级的多次比赛,硬件开始让我爱不释手。在当时我也成为了我们班的专业代表,然而毕业始终给人猝不及防。

后来,经过一番忙碌,进入了现在的企业。

还记得简历上不敢写面试硬件工程师,最终写了个PCB工程师。或许也比较怀疑自己的硬件设计能力吧。

刚入职,大多是熟悉产品,于是我维修了公司的陈年旧板,看原理图,查资料,大部分还是需要自主去弄的。然后PCB的设计,学习cadence软件,设计第一块接口板。

恍惚一年多,五六层板也很轻松了。记得有一次评估PCB尺寸和接口位置,对应产品外观。逼不得已学习了最简单的SolidWorks操作。也算是初涉结构设计,后来我们结构设计工程师离职,我就揽下了这个工作。自古硬件结构不分家。PCB与结构的搭配产生了完美的产品。

就这样一晃就是四年,作为干硬件的竟然连原理图都没弄过,挺遗憾的,正当要得过且过的时候,也不知为啥我的领导开始疯狂输出各种原理图设计给我,并且算得上的手把手教学了,但是时间只给了我一个月,因为他要离职了,并且让我接替。有种悲喜交加的感觉。喜的是升职加薪,悲的是刚好两个项目来了。原理图、PCB、结构...

就从原理图认真开始吧,反正也只能这样。于是参考着参考设计,本想着删删减减就大功告成的,然而就在删电容的时候就卡住了,脑海中全是疑问:这个电容为什么选这个容量的?为什么耐压值是这个?这里没标注电容的材料啊?哎?为啥这个地方要这么多种类的电容啊?算了还是删电阻吧,然后又是疑问:多大电阻?多少精度?多大封装?后来还有电感...

最终的结果是全部保留原样的,反正能用,就不改了。最终导致了bom成本,板卡做的很大等问题。

第一次可以这样做,第二次也可以,但是等产品出来了,市面上同类产品,我们的定价颇高,于是老板请我去他办公室喝茶了。意思很简单,降bom成本。

路漫漫修远
以下是面包板社区“瑞萨RA6M4 MCU 评估板”评测活动的评测连载,分享于此,希望对你有所参考。
(1)开发环境搭建
(2)快速傅里叶变换(FFT)测试

(3)定时器实现SPWM

(4)基于RS232 接口的 Modbus-RTU 从机实现

1、modbus 协议是工业运用比较成熟的通信协议,本例基于瑞萨RA6M4单片机进行modbus协议的实现,开源的modbus 协议较多,本例以移植Xtiny-Modbus为展示:

(1)第一步:搭建硬件环境

由于开发板没有带串口,需要外接一个串口收发模块


(2)第二步:下载开源的源码,下载地址:Xtiny-Modbus移植示例 https://gitee.com/zhang_en/xtiny_-modbus_test.git

(3)第三步:建立工程,配置时钟

由于外部高速晶振24MHz没有焊接,需要配置为内部晶振16MHz,然后再2分频

(4)第四步:配置串口

设置波特率、回调函数、中断优先级


(5)第五步:配置定时器

设置定时器计时的周期,回调函数、中断优先级


(6)第六步:编写串口驱动函数

    #include "usart3.h"    #include "Sys_Config.h"    #if MD_USD_SALVE    #include "MDS_RTU_Serial.h"    #else    #include "MDM_RTU_Serial.h"    #include "MD_RTU_SysInterface.h"    #include "MDM_RTU_Fun.h"    #endif

volatile uint8_t flag=false;

void RS485RWConvInit(void){ //收发引脚配置 // R_IOPORT_Open(&g_ioport_ctrl,g_ioport.p_cfg); // R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_05_PIN_03,BSP_IO_LEVEL_LOW); }
//串口1配置 void init_usart3(void){ R_SCI_UART_Open(&g_uart0_ctrl,g_uart0.p_cfg); RS485RWConvInit(); } void usart3_send_byte(uint8_t byte){ R_SCI_UART_Write(&g_uart0_ctrl,(uint8_t*)(&(byte)),1); while(flag!=true); flag=false; } void usart3_send_bytes(uint8_t *bytes,int len){ int i; for(i=0;i usart3_send_byte(bytes[i]); } } void usart3_send_string(char *string){ while(*string) { usart3_send_byte(*string++); } }
void uart_callback(uart_callback_args_t *arg){ uint8_t data_r; switch(arg->event) { case UART_EVENT_RX_CHAR: // R_SCI_UART_Read(&g_uart0_ctrl,(u8*)(&(data_r)),1); data_r=(uint8_t)(arg->data); #if !MD_RTU_USED_OS #if MD_USD_SALVE MDSSerialRecvByte(data_r); #else #if MDM_USD_USART3 MDMSerialRecvByte(data); #endif #endif #else extern Modbus_RTU modbus_RTU; MD_RTU_MsgPut((PModbusBase)(&modbus_RTU), MD_RTU_MSG_HANDLE_ARG(&modbus_RTU),(void*)(data),0); #endif break; case UART_EVENT_TX_COMPLETE: flag=true; break; default: break; }

}

(7)第7步编写定时器驱动程序:

#include "tim3.h"#include "Sys_Config.h"#if MD_USD_SALVE#include "MDS_RTU_Serial.h"//#include "MDS_RTU_Serial_1.h"#else#include "MDM_RTU_Serial.h"#endif
volatile uint32_t sys_tick_100us=0;

void TIM3_Int_Init(void){ R_AGT_Open(&g_timer0_ctrl,g_timer0.p_cfg); R_AGT_Start(&g_timer0_ctrl);}

void timer_callback(timer_callback_args_t *arg) { if(arg->event==TIMER_EVENT_CYCLE_END)// if (timer_interrupt_flag_get(TIMER5, TIMER_INT_FLAG_UP) != RESET) { sys_tick_100us++; #if !MD_RTU_USED_OS #if MD_USD_SALVE MDSTimeHandler100US(sys_tick_100us); #else MDMTimeHandler100US(sys_tick_100us); #endif #endif }}

(8)第八步:编写应用程序

    static void MDS_RTU_UserUpdate(void){            uint16 temp=0xff;            uint16 temp1[]={1,2,3,4,5};            MDS_RTU_WriteCoils(&modbusS_RTU,1,5,&temp);            MDS_RTU_WriteHoldReg(&modbusS_RTU,11, temp);            MDS_RTU_WriteHoldRegs(&modbusS_RTU,5,5,temp1);    }

(9)第九步:编写处理程序

    #include "hal_data.h"
#include "tim3.h" #include "Sys_Config.h" #if MD_USD_SALVE #include "MDS_RTU_APP.h" #else #include "MDM_RTU_APP.h" #include "MDM_RTU_Fun.h" #include "MDM_RTU_User_Fun.h" #endif
FSP_CPP_HEADER void R_BSP_WarmStart(bsp_warm_start_event_t event); FSP_CPP_FOOTER
/*******************************************************************************************************************//** * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used. This function * is called by main() when no RTOS is used. **********************************************************************************************************************/ void hal_entry(void){ /* TODO: add your own code here */ #if MD_RTU_USED_OS OSInit(); #endif //delay_init();
#if MD_USD_SALVE MDS_RTU_APPInit(); #else MDM_RTU_APPInit(); #endif TIM3_Int_Init(); #if MD_RTU_USED_OS task1=OSCreateTask(mdTestTask0,NULL,6,256); task2=OSCreateTask(mdTestTask1,NULL,6,256); SysTick_Config(SystemCoreClock / OS_T IC KS_PER_SEC); OSStart(); #endif while(1){ #if !MD_RTU_USED_OS #if MD_USD_SALVE MDS_RTU_Loop(); #else MDM_RTU_Loop(); MDM_RW_CtrlLoop(); #endif #endif } #if BSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter(); #endif }

(10)第十步:连接Modbus 主机,查看结果

END





点击阅读原文,免费申请

面包板社区 面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
评论 (0)
  •   电磁频谱数据综合管理平台系统解析   一、系统定义与目标   北京华盛恒辉电磁频谱数据综合管理平台融合无线传感器、软件定义电台等前沿技术,是实现无线电频谱资源全流程管理的复杂系统。其核心目标包括:优化频谱资源配置,满足多元通信需求;运用动态管理与频谱共享技术,提升资源利用效率;强化频谱安全监管,杜绝非法占用与干扰;为电子战提供频谱监测分析支持,辅助作战决策。   应用案例   目前,已有多个电磁频谱数据综合管理平台在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁频谱数
    华盛恒辉l58ll334744 2025-04-23 16:27 148浏览
  • 一、技术背景与市场机遇在智能家居高速发展的今天,用户对家电设备的安全性、智能化及能效表现提出更高要求。传统取暖器因缺乏智能感知功能,存在能源浪费、安全隐患等痛点。WTL580-C01微波雷达感应模块的诞生,为取暖设备智能化升级提供了创新解决方案。该模块凭借微波雷达技术优势,在精准测距、环境适应、能耗控制等方面实现突破,成为智能取暖器领域的核心技术组件。二、核心技术原理本模块采用多普勒效应微波雷达技术,通过24GHz高频微波信号的发射-接收机制,实现毫米级动作识别和精准测距。当人体进入4-5米有效
    广州唯创电子 2025-04-23 08:41 123浏览
  • 前言本文主要演示基于TL3576-MiniEVM评估板HDMI OUT、DP 1.4和MIPI的多屏同显、异显方案,适用开发环境如下。Windows开发环境:Windows 7 64bit、Windows 10 64bitLinux开发环境:VMware16.2.5、Ubuntu22.04.5 64bitU-Boot:U-Boot-2017.09Kernel:Linux-6.1.115LinuxSDK:LinuxSDK-[版本号](基于rk3576_linux6.1_release_v
    Tronlong 2025-04-23 13:59 101浏览
  • 文/Leon编辑/cc孙聪颖‍在特朗普政府发起的关税战中,全球芯片产业受到巨大冲击,美国芯片企业首当其冲。据报道称,英伟达本周二公布的8-K文件显示,美国政府通知该公司向中国(包括中国香港及澳门)销售尖端芯片(H20)时,需要获得美国政府的许可。文件发布后,英伟达预计会在第一季度中额外增加55亿美元的相关费用计提。随后,英伟达股价单日下跌6.9%,市值一夜蒸发约1890亿美元(约合人民币1.37万亿元)。至截稿时,至截稿时,其股价未见止跌,较前日下跌4.51%。北京时间4月17日,英伟达创始人、
    华尔街科技眼 2025-04-22 20:14 106浏览
  • 一、行业背景与市场需求高血压作为全球发病率最高的慢性病之一,其早期监测与管理已成为公共卫生领域的重要课题。世界卫生组织数据显示,全球超13亿人受高血压困扰,且患者群体呈现年轻化趋势。传统血压计因功能单一、数据孤立等缺陷,难以满足现代健康管理的需求。在此背景下,集语音播报、蓝牙传输、电量检测于一体的智能血压计应运而生,通过技术创新实现“测量-分析-管理”全流程智能化,成为慢性病管理的核心终端设备。二、技术架构与核心功能智能血压计以电子血压测量技术为基础,融合物联网、AI算法及语音交互技术,构建起多
    广州唯创电子 2025-04-23 09:06 143浏览
  •   陆地边防事件紧急处置系统平台解析   北京华盛恒辉陆地边防事件紧急处置系统平台是整合监测、预警、指挥等功能的智能化综合系统,致力于增强边防安全管控能力,快速响应各类突发事件。以下从系统架构、核心功能、技术支撑、应用场景及发展趋势展开全面解读。   应用案例   目前,已有多个陆地边防事件紧急处置系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润陆地边防事件紧急处置系统。这些成功案例为陆地边防事件紧急处置系统的推广和应用提供了有力支持。   一、系统架构   感知层:部
    华盛恒辉l58ll334744 2025-04-23 11:22 113浏览
  • 故障现象一辆2016款奔驰C200L车,搭载274 920发动机,累计行驶里程约为13万km。该车组合仪表上的防侧滑故障灯、转向助力故障灯、安全气囊故障灯等偶尔异常点亮,且此时将挡位置于R挡,中控显示屏提示“后视摄像头不可用”,无法显示倒车影像。 故障诊断用故障检测仪检测,发现多个控制单元中均存储有通信类故障代码(图1),其中故障代码“U015587 与仪表盘的通信存在故障。信息缺失”出现的频次较高。 图1 存储的故障代码1而组合仪表中存储有故障代码“U006488 与用户界
    虹科Pico汽车示波器 2025-04-23 11:22 83浏览
  •   后勤实验仿真系统平台深度解析   北京华盛恒辉后勤实验仿真系统平台依托计算机仿真技术,是对后勤保障全流程进行模拟、分析与优化的综合性工具。通过搭建虚拟场景,模拟资源调配、物资运输等环节,为后勤决策提供数据支撑,广泛应用于军事、应急管理等领域。   应用案例   目前,已有多个后勤实验仿真系统平台在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润后勤实验仿真系统平台。这些成功案例为后勤实验仿真系统平台的推广和应用提供了有力支持。   一、核心功能   (一)后勤资源模拟
    华盛恒辉l58ll334744 2025-04-23 15:39 118浏览
  • 在科技飞速发展的当下,机器人领域的每一次突破都能成为大众瞩目的焦点。这不,全球首届人形机器人半程马拉松比赛刚落下帷幕,赛场上的 “小插曲” 就掀起了一阵网络热潮。4月19日,北京亦庄的赛道上热闹非凡,全球首届人形机器人半程马拉松在这里激情开跑。20支机器人队伍带着各自的“参赛选手”,踏上了这21.0975公里的挑战之路。这场比赛可不简单,它将机器人放置于真实且复杂的动态路况与环境中,对机器人在运动控制、环境感知和能源管理等方面的核心技术能力进行了全方位的检验。不仅要应对长距离带来的续航挑战,还要
    用户1742991715177 2025-04-22 20:42 98浏览
  • 文/Leon编辑/cc孙聪颖‍4月18日7时,2025北京亦庄半程马拉松暨人形机器人半程马拉松正式开跑。与普通的半马比赛不同,这次比赛除了有人类选手,还有21支人形机器人队伍参赛,带来了全球首次人类与机器人共同竞技的盛况。参赛队伍中,不乏明星机器人企业及机型,比如北京人形机器人创新中心的天工Ultra、松延动力的N2等。宇树G1、众擎PM01,则是由城市之间科技有限公司购置及调试,并非厂商直接参赛。考虑到机器人的适用场景和续航力各有不同,其赛制也与人类选手做出区别:每支赛队最多可安排3名参赛选手
    华尔街科技眼 2025-04-22 20:10 112浏览
  •   复杂电磁环境模拟系统平台解析   一、系统概述   北京华盛恒辉复杂电磁环境模拟系统平台是用于还原真实战场或特定场景电磁环境的综合性技术平台。该平台借助软硬件协同运作,能够产生多源、多频段、多体制的电磁信号,并融合空间、时间、频谱等参数,构建高逼真度的电磁环境,为电子对抗、通信、雷达等系统的研发、测试、训练及评估工作提供重要支持。   应用案例   目前,已有多个复杂电磁环境模拟系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润复杂电磁环境模拟系统。这些成功案例为复杂电
    华盛恒辉l58ll334744 2025-04-23 10:29 154浏览
  •   无人机结构仿真与部件拆解分析系统平台解析   北京华盛恒辉无人机结构仿真与部件拆解分析系统无人机技术快速发展的当下,结构仿真与部件拆解分析系统平台成为无人机研发测试的核心工具,在优化设计、提升性能、降低成本等方面发挥关键作用。以下从功能、架构、应用、优势及趋势展开解析。   应用案例   目前,已有多个无人机结构仿真与部件拆解分析系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机结构仿真与部件拆解分析系统。这些成功案例为无人机结构仿真与部件拆解分析系统的推广和应用提
    华盛恒辉l58ll334744 2025-04-23 15:00 154浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦