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

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

3天内不再提示

基于RT-Thread与兆易创新GD32F527的工业级网络-CAN透传网关设计与实现 | 技术集结

RT-Thread官方账号 2026-02-10 16:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目录

系统概述

RT-Thread使用情况

硬件框架

软件架构


软件模块详解

功能展示

链接地址

1 系统概述

本系统是一个基于GD32F527I_EVAL和RT-Thread实时操作系统开发的工业级网络-CAN总线透传网关。该系统实现了TCP/UDP网络协议与CAN总线之间的双向透明数据传输,支持Web配置管理、固件在线升级(暂未验证)、SD卡配置存储等功能,适用于工业自动化、车联网、智能设备等需要网络与CAN总线互联的应用场景。

1.1 核心功能特性

双向透明传输:网络数据与CAN总线数据的无缝双向转发

多协议支持:TCP Server/Client、UDP通信模式

灵活CAN配置:支持标准帧/扩展帧、可变波特率(5Kbps~1Mbps)

智能ID管理:固定ID、自增ID、数据提取ID三种模式

Web配置界面:现代化响应式Web UI,支持实时配置修改

配置持久化:基于SD卡的配置文件存储系统

固件OTA升级:支持通过Web界面上传固件并安全升级

系统监控:实时显示网络状态、CAN状态、传输统计

2 RT-Thread使用情况

2.1 操作系统版本与组件

系统基于RT-Thread master版本构建,充分利用了其丰富的组件生态:

已启用的核心组件:

内核:多线程调度、信号量、互斥锁、消息队列

文件系统:DFS + ELM-FAT,用于SD卡配置存储

网络协议栈:LwIP 2.03,支持TCP/UDP、DHCP、DNS。RT-Thread最新版可能会与LWIP2.03中cc.h文件的变量类型定义冲突,修cc.h文件的内容。

设备驱动框架:CAN驱动、SDIO驱动、EMAC以太网驱动

Shell组件:MSH (Module Shell),用于命令行调试

FAL:Flash抽象层(可选),用于固件分区管理

2.2 线程资源使用

系统采用多线程并发架构,主要线程包括:

52e7cd66-0657-11f1-96ea-92fbcf53809c.png

2.3 IPC应用

消息队列: 用于网络与CAN数据的异步传递(net_to_can_queue, can_to_net_queue)

信号量: 用于消息队列的同步通知(net_to_can_sem, can_to_net_sem)

互斥锁: 保护配置文件访问(config_lock)、固件升级状态(upgrade_mutex)

2.4 内存管理

采用动态内存分配策略:

消息缓冲区:动态分配最大2048字节数据缓冲

Web缓冲区:请求4KB,响应34KB(扩展缓冲区)

网络缓冲区:各服务独立分配1KB缓冲

3 硬件框架

微控制器:GigaDevice GD32F527IST7

内核:ARM Cortex-M33 @ 200MHz

Flash:7680KB

SRAM:512KB

外设:本次使用CAN、10/100M以太网MAC、SDIO等

52f6bdbc-0657-11f1-96ea-92fbcf53809c.png530376ec-0657-11f1-96ea-92fbcf53809c.png530c8642-0657-11f1-96ea-92fbcf53809c.jpg

4 软件架构

4.1 系统分层架构

ApplicationLayer(应用层)

┌─────────┐ ┌─────────┐ ┌─────────┐

│Web Server│ │ Bridge │ │ Network │

│ 管理 │ │ 透传 │ │ 服务 │

└─────────┘ └─────────┘ └─────────┘

ServiceLayer(服务层)

┌──────────┐ ┌──────────┐ ┌──────────┐

│Config Save│ │ Firmware │ │ System │

│ 配置管理 │ │ 固件升级 │ │ 系统管理 │

└──────────┘ └──────────┘ └──────────┘

RT-ThreadComponents(组件层)

┌────┐ ┌─────┐ ┌─────┐ ┌────┐ ┌────┐

│LwIP│ │ DFS │ │ MSH │ │CAN │ │SDIO│

└────┘ └─────┘ └─────┘ └────┘ └────┘

RT-ThreadKernel(内核层) 线程调度 | IPC通信 | 内存管理 | 定时器 HardwareDrivers(驱动层) EMAC | CAN | SDIO | USART | GPIO | SPI

关键设计点:

异步解耦:接收线程与转发线程通过消息队列解耦

双向流控:使用信号量控制队列消费速率

动态内存:消息体动态分配,避免大栈空间占用

CAN重组:CAN帧自动重组为完整网络数据包

5 软件模块详解

5.1 Bridge透传引擎 (user_bridge.c/h)

核心功能:

网络与CAN双向数据转发,支持网络协议自定义。

CAN帧分段/重组(8字节限制)

CAN ID智能管理(固定/自增/提取)

统计信息:

网络→CAN: 数据包数、字节数

CAN→网络: 数据包数、字节数

错误计数、丢包计数、内存分配失败计数

5.2 Web配置服务器 (user_web_*.c/h)

架构特点:

单线程服务器:串行处理请求(简化设计)

页面生成:服务器端动态生成完整HTML

响应式设计:现代化CSS,支持桌面/移动端

页面模块:

user_web_network.c: 网络IP配置(DHCP/静态IP)

user_web_can.c: CAN总线参数配置

user_web_bridge.c: 透传桥接配置

user_web_server.c: 主服务器 + 系统页面 + 固件页面

扩展响应缓冲区以容纳完整的多页面HTML(~34KB)。

UI设计亮点:

渐变色侧边栏导航

卡片式内容布局

开关按钮、进度条、徽章等现代组件

悬停动画、状态指示点

表单验证与提示信息

5.3 配置管理

存储方案:

介质:MicroSD卡,16GB,由于外部扩展FLash的SPI与网络接口冲突,所以使用SDIO存储配置,后续可扩展存储数据日志和操作日志,方便进一步分析

路径:/gd32_net.cfg (使用虚拟文件系统挂载)

格式:二进制结构体 + CRC32校验

健壮性措施:

写入临时文件→重命名→删除旧备份

读取失败自动创建默认配置

CRC32完整性校验

设备健康检查(几何信息、扇区读取测试)

5.4 固件升级 (user_firmware.c/h)待验证

5.5 网络应用服务 (user_net_app.c)

可单独测试四种网络模式:

531aedae-0657-11f1-96ea-92fbcf53809c.png

控制命令:

tcp_server start/stop

udp_server start/stop

tcp_client start/stop

udp_client start/stop

net_status: 查看所有服务状态

5.6 系统管理 (user_system.c/h)

提供功能:

系统信息查询(内存、运行时间、版本)

设备重启(reboot [delay])

恢复出厂设置(factory_reset)

配置导出为JSON格式

6 功能展示

1.1 实现功能

1.设备网络配置界面

532473f6-0657-11f1-96ea-92fbcf53809c.png

2.CAN配置界面

53384660-0657-11f1-96ea-92fbcf53809c.png

注意:透传需要启动CAN(当前参数默认启动)

3.透传桥接界面

53461b46-0657-11f1-96ea-92fbcf53809c.png

4.设备信息界面

534d828c-0657-11f1-96ea-92fbcf53809c.png

可以查看当前固件版本,并在配置后利用按钮进行软件重启设备,以实现配置生效。

5.固件升级

53583e98-0657-11f1-96ea-92fbcf53809c.png

固件升级界面暂未验证,可进一步拓展。

6.2 数据传输功能展示

1.设备内部默认为TCP_server,当前IP地址为192.168.1.50,CAN一侧波特率设置为1Mbps,标准帧。

535f0534-0657-11f1-96ea-92fbcf53809c.png

实现了双向数据发送。

6.3 接口连接

连接了网口和CAN口,SD卡也插入接口中。

53768c68-0657-11f1-96ea-92fbcf53809c.png

7 链接地址

代码地址:https://gitee.com/wujunc/gd32-f527_rtthread

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

    关注

    59

    文章

    3068

    浏览量

    472798
  • 网关
    +关注

    关注

    9

    文章

    6807

    浏览量

    56287
  • RT-Thread
    +关注

    关注

    32

    文章

    1614

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于创新GD32F527系列MCU的多媒体门禁系统解决方案

    基于GD32F527系列MCU的多媒体门禁系统,主控GD32F527系列MCU,具备摄像头采集图像(DMA直接到SDRAM),保存照片,查看照片。DCI数字图像接口、TLI接口驱动TFT-LCD屏幕
    的头像 发表于 10-29 11:37 7189次阅读
    基于<b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b><b class='flag-5'>GD32F527</b>系列MCU的多媒体门禁系统解决方案

    rt-thread studio新建gd32f450工程

    rt-thread studio 软件版本是:2.2.6;开发板的软件包是:GD32450Z-GD-EVAL版本是V1.0.1;开发板使用的官方开发板
    的头像 发表于 09-28 14:17 2863次阅读
    <b class='flag-5'>rt-thread</b> studio新建<b class='flag-5'>gd32f</b>450工程

    创新加入RT-Thread高级会员合作伙伴计划 | 战略新篇

    全球领先的半导体供应商创新(GigaDevice)正式加入RT-Thread高级会员合作伙伴计划,标志着双方在嵌入式领域的合作迈入全新阶段。未来,
    的头像 发表于 07-14 09:04 2216次阅读
    <b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b>加入<b class='flag-5'>RT-Thread</b>高级会员合作伙伴计划 | 战略新篇

    基于RT-Thread和N32G457的CAN网关

    逐渐引入以太网,其高数据吞吐量是CAN总线无法比拟的。但在不改变传统工业总线的前提下,实现不同网络之间的转换,有着迫切的需求。CAN
    发表于 04-18 15:10

    基于GD32F310开发板在rt-thread上添加finsh及其shell功能

    1、GD32F310开发板试用+finsh/shell添加与进程STACK优化  上一次只是移植了rt-thread nano的内核,但rt-thread的finsh/shell,是一大很有特点
    发表于 11-08 16:05

    Fibocom MCU之创新 技术资料

    GD32F303C-START连接腾讯云收发数据工程3、【视频】GD32F303C-START连接腾讯云收发数据工程4、创新提供的资料
    发表于 01-09 15:27

    RT-Thread移植到GD32F150系列MCU

    RT-Thread移植到GD32F150系列MCU
    发表于 12-07 19:36 8次下载
    <b class='flag-5'>RT-Thread</b>移植到<b class='flag-5'>GD32F</b>150系列MCU

    RT-Thread文档_CAN 设备

    RT-Thread文档_CAN 设备
    发表于 02-22 18:34 0次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>CAN</b> 设备

    GD32F527的设备限制

    电子发烧友网站提供《GD32F527的设备限制.pdf》资料免费下载
    发表于 01-17 15:54 1次下载
    <b class='flag-5'>GD32F527</b>的设备限制

    RT-Thread适配创新GD32F5系列MCU,开放免费试用申请!| 技术集结

    满足工业市场对高可靠性和高安全性的需求。全面适配于能源电力、光伏储能、工业自动化、PLC、网络通讯设备、图形显示等应用场景。GD32F5系列MCU现已完成
    的头像 发表于 08-07 10:11 1476次阅读
    <b class='flag-5'>RT-Thread</b>适配<b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b><b class='flag-5'>GD32F</b>5系列MCU,开放免费试用申请!| <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    【直播预告】GD32F527高性能MCU全方位解析,与RT-Thread的全栈开发实战 | 博观讲堂

    10月10日晚20:00,RT-Thread携手创新专家团队,带来GD32F527芯片深度解读。在
    的头像 发表于 10-07 10:03 816次阅读
    【直播预告】<b class='flag-5'>GD32F527</b>高性能MCU全方位解析,与<b class='flag-5'>RT-Thread</b>的全栈开发实战 | 博观讲堂

    基于RT-ThreadGD32F527I-EVAL的多媒体门禁系统 | 技术集结

    创新本月正式推出GD32F503/505高性能系列32位通用微控制器,新品将全面支持RT-Thread平台。
    的头像 发表于 11-25 18:31 1118次阅读
    基于<b class='flag-5'>RT-Thread</b>与<b class='flag-5'>GD32F527</b>I-EVAL的多媒体门禁系统 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    创新RT-Thread MCU技术路演圆满收官

    近日,创新(GigaDevice)与RT-Thread携手举办的MCU技术路演圆满收官。本次路演聚焦
    的头像 发表于 12-01 10:14 1493次阅读

    基于RT-Thread创新GD32F527系列MCU的健康监测站 | 技术集结

    本项目为RT-Thread嵌入式大赛获奖作品,基于RT-Thread创新GD32F527I
    的头像 发表于 01-20 17:37 4374次阅读
    基于<b class='flag-5'>RT-Thread</b>和<b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b><b class='flag-5'>GD32F527</b>系列MCU的健康监测站 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    基于 RT-Thread创新GD32F527CAN总线监视器 | 技术集结

    【适配新进展】创新RT-Thread的适配大家庭又添新成员啦!GD32VW553现已正式完成适配,并在社区开发者的协作下完成了电子书《
    的头像 发表于 03-05 10:04 97次阅读
    基于 <b class='flag-5'>RT-Thread</b> 和<b class='flag-5'>兆</b><b class='flag-5'>易</b><b class='flag-5'>创新</b><b class='flag-5'>GD32F527</b>的<b class='flag-5'>CAN</b>总线监视器 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>