news 2026/4/22 4:37:53

RS485 双串口通信 + LCD 实时显示(DMA版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RS485 双串口通信 + LCD 实时显示(DMA版)

目录

  • 一、前言
  • 二、DMA 通信核心原理简述
  • 三、CubeMX 的 DMA 串口配置
  • 四、FreeRTOS DMA 收发任务代码开发
  • 五、总结
  • 六、结尾

一、前言

前文我们已经完成了串口 RS485 通信的查询方式中断方式开发,两种方式各有适配场景。本次笔记将在此基础上,讲解串口通信的第三种实现方案 ——DMA 方式。串口的收发数据始终依靠 TDR 发送寄存器、RDR 接收寄存器完成数据中转,无论数据量多少都需经这两个寄存器经手;而 DMA 相当于独立的「硬件搬运工」,可自主完成寄存器与内存之间的数据搬运,全程无需 CPU 参与,能最大化解放 CPU 资源,是串口大数量、高频次数据传输的最优方案,本次依旧基于 FreeRTOS 多任务完成功能开发,保持功能逻辑不变。

二、DMA 通信核心原理简述

DMA(直接存储器访问)的核心作用,是在外设寄存器内存地址之间建立独立的数据传输通道,无需 CPU 的指令干预,自主完成数据的读写搬运。

对于串口通信而言:发送时,DMA 将内存中的数据搬运至串口 TDR 发送寄存器;接收时,DMA 将串口 RDR 接收寄存器的数据搬运至内存,整个传输过程 CPU 可完全脱离,仅在传输完成 / 异常时触发少量响应逻辑,大幅降低 CPU 的资源占用率。

三、CubeMX 的 DMA 串口配置

CubeMX 中有 DMA 功能的专属配置页面,本次开发沿用之前的串口 2 作为发送端、串口 4 作为接收端,为两路串口分别配置独立的 DMA 通道,其余串口、中断、FreeRTOS 相关配置均与上一篇中断版保持一致,具体 DMA 配置如下:

  1. 配置Channel0作为串口 2 的 DMA 通道,触发方式选择UART2_TX,数据传输方向为内存到外设,源地址设置为每次递增 1 字节。

  1. 配置Channel1作为串口 4 的 DMA 通道,触发方式选择UART4_RX,数据传输方向为外设到内存,目的地址设置为每次递增 1 字节。

四、FreeRTOS DMA 收发任务代码开发

DMA 方式的串口开发,在代码层面的逻辑与中断方式几乎完全一致,核心改动仅为将中断收发启动函数替换为 DMA 收发启动函数,依旧沿用此前编写的完成等待函数做传输状态判断与超时控制;当接收出现超时异常时,调用专用函数停止对应串口的 DMA 传输,规避异常占用,完整的任务代码如下:

// 串口2 DMA发送任务:周期发送自增字节数据staticvoidCH1_UART2_TxTaskFunction(void*pvParameters){uint8_tc=0;while(1){HAL_UART_Transmit_DMA(&huart2,&c,1);// 启动串口2 DMA发送1字节wait_uart2_tx_cplt(100);// 等待DMA发送完成,超时100msvTaskDelay(1000);// 延时1秒,固定周期发送c++;// 发送数据自增}};// 串口4 DMA接收任务:接收数据并实时显示至LCDstaticvoidCH2_UART4_RxTaskFunction(void*pvParameters){uint8_tc=0;intcnt=0;charbuf[100];HAL_StatusTypeDef err;while(1){err=HAL_UART_Receive_DMA(&huart4,&c,1);// 启动串口4 DMA接收1字节if(wait_uart4_rx_cplt(1000)==0)// 等待DMA接收完成,超时1000ms{// 接收成功,格式化数据并LCD显示sprintf(buf,"Recv Data : 0x%02x, Cnt : %d",c,cnt++);Draw_String(0,0,buf,0x0000ff00,0);}else{HAL_UART_DMAStop(&huart4);// 接收超时,停止串口4的DMA传输}}};

由此能清晰看出,串口的 DMA 传输与中断传输,在业务代码的实现逻辑上本质一致,只是底层的硬件数据传输方式不同。

五、总结

  1. 串口通信有查询、中断、DMA 三种实现方式,核心数据中转均依赖 TDR/RDR 寄存器;
  2. DMA 为硬件独立搬运数据,无需 CPU 参与,相比中断更能解放 CPU 资源,传输效率更高;
  3. DMA 版代码逻辑与中断版高度复用,仅替换收发启动函数,开发适配成本低;
  4. DMA 传输需做好超时异常处理,通过停止 DMA 规避硬件资源异常占用;
  5. 三种方式各有优势:查询简单、中断省资源、DMA 效率最优,按需选型即可。

六、结尾

本次完成了串口 RS485 通信三种实现方式的闭环学习,从查询到中断再到 DMA,是逐步优化 CPU 资源利用、提升传输效率的过程,也是嵌入式开发的核心优化思路。三种串口通信方式的开发逻辑可通用至各类外设,是嵌入式必备的基础能力。感谢各位的阅读,持续关注本系列,后续将带来更多项目实战的干货复盘与技术优化!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 15:03:10

ONLYOFFICE 的 Zotero 插件全新升级!界面优化 + 文献引用更灵活

ONLYOFFICE 编辑器的 Zotero 插件新版本1.0.6来了!此次更新聚焦提升使用便捷性,让用户能更自主地控制引用文献的创建与格式设置,为学术研究与论文写作提供更高效的支持。 界面焕新,操作更顺手 插件界面经过重新设计,让…

作者头像 李华
网站建设 2026/4/15 12:14:57

基于小程序的篮球场馆预订系统-计算机毕业设计源码+LW文档

摘 要 随着国家的迅猛发展和互联网技术的持续飞跃,现代生活节奏显著加快。为了更有效地管理时间、提升个人及工作效率,大众愈发倾向于借助互联网平台处理各类日常事务,这一趋势直接催生了微信小程序的蓬勃兴起。在此背景下,人们对…

作者头像 李华
网站建设 2026/4/19 0:59:52

用友HR SaaS发布:AI至上,7大AI+HR趋势预见2026!

2025年,AI技术在HR领域的应用完成了从概念探索到初步落地的铺垫,各类智能工具逐步渗透招聘、绩效、培训等核心场景;2026年,AIHR又将走向何方?用友HR SaaS结合20本权威报告,找到交集并提炼出7大核心趋势&…

作者头像 李华
网站建设 2026/4/17 21:33:42

2025中国AI Agent营销市场发展潜力研究报告|附31页文件下载

AI Agent(人工智能代理)是一种基于人工智能技术的自主实体,能够通过感知环境、处理信息、规划决策和执行动作,以实现预设目标。AI Agent正在重塑智慧营销的技术底座:其自主性重构了生产力关系,原子级洞察突…

作者头像 李华
网站建设 2026/4/14 2:34:31

交通仿真软件:SUMO_(15).高级仿真技术:微观与宏观仿真结合

高级仿真技术:微观与宏观仿真结合 在交通仿真领域,微观仿真和宏观仿真各自具有不同的优势和应用场景。微观仿真可以详细模拟每个车辆的行为,而宏观仿真则关注于交通流的整体特性。为了充分利用这两种仿真的优点,许多交通仿真软件提…

作者头像 李华