RS485接收数据后发送乱码

2 篇文章 0 订阅
1 篇文章 0 订阅

最近调块板子上面有几路485,控制芯片STM32F407VE、转换芯片ADM2587,使用485转换器连接电脑,发现串口助手向板子发送数据后会收到乱码,经软硬件联合调试排除bug。

一、问题现象

1、485向上位机发送数据,串口助手正常收到数据

u8 test_buf[10]={0x02,0x12,0x22,0x32,0x42,0x52,0x62,0x72,0x82,0x92};

for(t=0;t<10;t++){
	while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
	USART_SendData(USART1,flash_buf[t]);
}

在这里插入图片描述

2、串口助手通过RS485向MCU发送数据,现象就是上位机会接收到一串莫名其妙的数据,发送数据越多接收到的乱码越多,且这种乱码具有一致性(发送一样的数据,反馈回的乱码会保持一致)

在这里插入图片描述

二、解决问题

1、检查了一遍485驱动、相应的串口中断,无误。将CH340直接连到usart口上发现不会出现异常,那么问题就会出在ADM2587及后级电路上。

在这里插入图片描述

2、去掉匹配电阻后异常解决

百度原因:对RS转RS网络一般要使用终接电阻进行匹配。但在短距离与低速率下可以不用考虑终端匹配。那么在什么情况下不用考虑匹配呢?理论上,在每个接收数据信号的中点进行时,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。但这在实际上难以掌握,美国MAXIM公司有篇文章提到一条经验性的原则可以用来判断在什么样的数据速率和电缆长度时需要进行匹配:当信号的转换时间(上升或下降时间)超过电信号沿单向传输所需时间的3倍以上时就可以不加匹配。 例如具有限斜率特性的RS-输出信号的上升或下降时间最小为250ns,典型双绞线上的信号传输速率约为0.2m/ns(24AWG PVC电缆),那么只要数据速率在250kb/s以内、电缆长度不超过16米,RS-接口时就可以不加终端匹配。

ps.在匹配电阻上串联个跳冒,短距离、低频时就不短接,反之短接。

参考链接:
http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=197613
https://www.sohu.com/a/120014600_119709

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值