RS485通信-单独通不乱,到系统里就有乱码---从机回复过快乱码

RS485通信乱码有很多种,硬件和软件各种各样的情况,这里就说一种特别奇怪,但是又特别好玩的乱码。

我们指定RS485是半双工通信,这意味着同一个时间,总线上要么发,要么回,如果同时发和回,电平乱了,数据自然就乱了。在工作用遇到了一个问题,困扰了我2年,在没有示波器的情况下,困扰了我2年,一度以为是硬件设计电路的问题,后来才发现,不是这样的。

由于主机和从机都是我自己来写,在从机模块里,偷懒了,程序框架如此:

if(FLAG_RS485_RX)

{

RS485_SendData(data,len);

      FLAG_RS485_RX=0;

}

这个逻辑有一个问题,FLAG_RS485_RX是接收标志,要知道CPU运算是非常快的,但是串口的速度肯定是毕不了CPU的速度的,这就导致了,串口中断接收是需要一定时间的,假设串口中断全部接收需要10T时间,那么在第一个T时间内FLAG_RS485_RX已经是1了,这个时候立马启动回发数据,自然就与上位机的发送指令打架了,数据也就乱了。

RS485收到乱码的问题可能有多个原因。根据引用和引用的描述,其中一个可能的原因是在RS485通信中,由于半双工通信的特性,同时发送和接收数据可能会导致电平混乱,从而导致数据乱码。这意味着在同一时间,总线上只能发送或接收数据,不能同时进行。因此,如果在发送数据的同时也在接收数据,就会导致数据乱码的问题。 另外,引用提到的问题可能也与硬件设计或软件调试有关。如果硬件设计中存在问题,例如电路连接不正确或者电源不稳定,都有可能导致RS485收到乱码的问题。同样地,软件调试中的bug也可能引起乱码的出现。 为了解决RS485收到乱码的问题,可以考虑以下几个方面: 1. 确保在RS485通信中,发送和接收数据的时间不会重叠,可以通过控制发送和接收的时间间隔来避免电平混乱。 2. 检查硬件设计,确保电路连接正确、电源稳定,并且相关芯片的参数设置正确。 3. 进行软件调试,检查代码是否存在bug,如发送和接收数据的逻辑是否正确,数据是否被正确处理。 通过检查和调试这些方面,应该能够解决RS485收到乱码的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [RS485接收数据后发送乱码](https://blog.csdn.net/qq_40690943/article/details/118389258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [RS485通信-单独通不乱,到系统就有乱码---从机回复过快乱码](https://blog.csdn.net/u012351051/article/details/77454233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值