【STM32】RS485通信使用DMA串口发送数据出现数据丢失、断包问题排查方法

2023-11-18

最近在搞这个Modbus协议,由于485协议是半双工的,区别于RS 232的全双工,考虑不周导致调试modbus协议时候出了不少问题。

第一,大多数开发板上的485芯片是MAX485,发送和接收状态的切换是通过IO给到这个两个引脚不同的电平进行切换,由于你的软件程序跑的太快了,写程序给485芯片进行接收或发送时切换注意加点延时等待一下。

/*加短暂延时,保证MAX485芯片转发数据完毕*/
Delay(0xFFFF);
//	使能接收数据
RS485_RX_EN()	;

第二,485数据使用DMA串口发送出现数据丢失的话。

1.排查DMA传输的BUFF不要是栈空间的临时变量BUFF,要使用全局的定义BUFF,否则很容易出现生命周期问题,DMA还没传输完成,内存就给回收了。

2.注意是不是DMA还没传输完成,就把485芯片的发送状态切换成了接收状态,实测DMA传输完BUFF的数据相对还是比较慢的,尤其数据量大的时候。同样485芯片进行接收或发送时切换时注意等待DMA传输完成在进行切换,此处可以利用DMA中断完成。

 //等待DMA传输完成,否则数据较长的话丢数据
while(uart2_dma_tx_complete != 1){};
uart2_dma_tx_complete=0;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【STM32】RS485通信使用DMA串口发送数据出现数据丢失、断包问题排查方法 的相关文章

  • 不得不引起足够重视的anonymous用户!

    连日的阴雨 使原本炎热的天气突然变得潮湿起来 烦躁的心情也慢慢地平复了下来 像往常一下 借用CuteFtp工具登录自己的VPS 检查一下文件异常 突然之间 几个刺眼的 exe文件呈现在我的眼前 顿时惊出我一身冷汗 下意识到 网站被黑客入侵了

随机推荐

  • C#使用Npgsql或SqlClient连接数据库

    目录 SqlClient连接SQL Server 安装SqlClient SqlConnection SqlCommand SqlConnection 和 SqlCommand的区别 Npgsql连接PostgreSQL 安装Npgsql
  • Asp.net core

    Startup类 以配置应用所需的服务 应用的请求处理管道定义为一系列中间件组件 public class Startup public void ConfigureServices IServiceCollection services
  • prototype.js 和json.js 冲突

    1 冲突简述和分析 prototype js与json js并不是完全兼容的 主要冲突在于json js为Object的原型增加了一个toJSONString的方法 冲突之一 是prototype中发送ajax请求时 遍历了一个header
  • 微众银行发布区块链“善度”,提出区块链优化社会治理参考框架

    2019年9月17日 以 区块链新经济 新十年 新起点 为主题的第五届区块链全球峰会在上海召开 微众银行副行长兼首席信息官马智涛受邀发表演讲 在峰会主论坛上 微众银行正式发布区块链优化社会治理模式参考框架 善度 为区块链行业发展提出新的发展
  • (Linux) ----> Centos7.X+配置MySQL(亲测,详细步骤)

    目录 一 创建虚拟机 1 1 新建虚拟机 编辑 1 2 虚拟机配置 二 使用外部工具连接服务器操作 XShell MobaXterm1 CHS1 根据自己习惯选择 2 1 设置Ip地址 编辑 2 2 连接虚拟机 三 下载相关的压缩包并配置连
  • VQGAN(Vector Quantized Generative Adversarial Network)模型简介

    论文 Taming Transformers for High Resolution Image Synthesis VQGAN Vector Quantized Generative Adversarial Network 是一种基于 G
  • Rocky Linux 9.1 新手入门指南

    文章目录 安装系统 配置网络 NetworkManager 配置 默认 ipaddress 配置文件 nmtui 配置 ipaddress nmcli 配置 ipaddress 网络管理 网关配置 检查网络连接 配置 bond 设置主机名
  • cmd怎么实现隐藏DOS窗口运行程序

    写个xxx vbs调用执行aaa bat即可 CreateObject WScript Shell Run cmd c aaa bat 0
  • spring gateway 的搭建与配置

    步骤 建项目 给主启动类添加Eureka的注解 EnableEurekaClient 添加并配置application yml 第一步 新建gateway的项目 gateway 8205 需要用到的组件
  • el-descriptions的使用

    el descriptions的使用 解释 我们页面有很多无序的列表展示 为了高效得去开发我们得页面 可以借助于这个组件进行适应 图片 代码 template部分
  • MIPI D-PHY介绍(二) FPGA

    MIPI D PHY介绍 二 FPGA 随着移动设备的广泛普及 MIPI D PHY作为其最主要的物理层标准之一 被越来越多地使用在各种嵌入式系统中 本文将详细介绍MIPI D PHY的工作原理和在FPGA设计中的实现方法 MIPI D P
  • 在k8s集群内搭建Prometheus监控平台

    基本架构 Prometheus由SoundCloud发布 是一套由go语言开发的开源的监控 报警 时间序列数据库的组合 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态 任意组件只要提供对应的HTTP接口就可以接入
  • .NetCore技术研究-ConfigurationManager在单元测试下的坑

    最近在将原有代码迁移 NET Core 代码的迁移基本很快 当然也遇到了不少坑 重构了不少 后续逐步总结分享给大家 今天总结分享一下ConfigurationManager遇到的一个问题 先说一下场景 迁移 NET Core后 已有的配置文
  • 如何使用Visual Studio Code运行C/C++程序

    与Visual Studio 2008 2010 集成开发工具不同 Visual Studio Code只是一个代码编辑器 在Windows环境下 需下载安装 C C 编译器 配置环境等 VS Code才可以编译代码和运行程序 1 下载安装
  • javaScript基础面试题 --- 原型链

    1 原型可以解决什么问题 对象共享属性和共享方法 2 谁有原型 函数有prototype 对象有 proto 3 查找顺序 当查询一个对象的属性时 JavaScript 会首先检查对象自身是否有这个属性 如果对象本身没有该属性 那么 JS
  • 使用python和snapshot备份ElasticSearch索引数据

    该python备份snapshot的索引数据脚本 通过Elasticsearch连接es 然后通过es indices get alias函数获取所有索引名称 通过列表的startswith函数剔除 开头的自带索引名称 然后把所有索引名称放
  • 多边形的面积

    1 三角形面积 xy平面内 有三角形123 如下图所示 图1 借助矢量叉积和点积 这个三角形的面积公式非常简单 这个面积是有符号的 1 2 3逆时针排列 则面积为正 1 2 3顺时针排列 则面积为负 这是对右手系的总结 如果从背面看这个坐标
  • 11月11日 自定义Events,将自定义Events分配给UI,给UI添加动画 UE4斯坦福 学习笔记

    自定义Events 在AttributeComponent的 h头文件上加上代码 自定义Event DECLARE DYNAMIC MULTICAST DELEGATE FourParams FOnHealthChanged AActor
  • 思科模拟器简单校园网设计,期末作业难度

    文章简介 本文用思科模拟器设计和规划了一个校园网络 相当于计算机网络相关专业期末作业难度 作者简介 网络工程师 希望能认识更多的小伙伴一起交流 可私信或QQ号 1686231613 一 网络需求分析 1 学校建有办公室 实验室 教学楼 学生
  • 【STM32】RS485通信使用DMA串口发送数据出现数据丢失、断包问题排查方法

    最近在搞这个Modbus协议 由于485协议是半双工的 区别于RS 232的全双工 考虑不周导致调试modbus协议时候出了不少问题 第一 大多数开发板上的485芯片是MAX485 发送和接收状态的切换是通过IO给到这个两个引脚不同的电平进