[技术讨论]

SP3485出现乱码问题,请教大家

[复制链接]
6845|32
手机看帖
扫描二维码
随时随地手机跟帖
我是土匪|  楼主 | 2018-10-21 09:07 | 显示全部楼层 |阅读模式
本帖最后由 我是土匪 于 2018-10-21 10:23 编辑

SP3485,默认接收外部数据。目前做了两个测试,串口助手通过485定时发给MCU数据,和MCU定时通过485发送数据给串口助手(,波特率9600,定时时间5或10S都测试,一帧数据75长度)
现象:
1、外部数数据(PC串口助手),发数据给MCU,目前没发现异常,测试时间超过1小时。
2、MCU将数据通过485发给串口助手,偶尔出现乱码,波特率9600,乱码如下如举例(有时候几个小时不出问题,大部分只要10分钟就会出错):
11.png
请大家帮忙分析一下,这个是软件还是硬件问题?
485换向引脚已经加了足够了延时了
评论
ningling_21 2018-10-22 13:13 回复TA
或许没有用通信协议导致 
xch 2018-10-22 12:56 回复TA
@我是土匪 :所以,建议你先分别做个测试。 确定那个rs485 出问题。隔离故障 
我是土匪 2018-10-22 08:13 回复TA
@xch 485是MCU板载芯片。 所以是板载485 -》485转USB -》PC串口助手 
xch 2018-10-22 01:17 回复TA
MCU发送给MCU,串口助手发送给串口助手。(via RS485) 

相关帖子

cjseng| | 2018-10-21 11:59 | 显示全部楼层
波特率误差造成的帧错误,可以用2个停止位试试,或者在MCU端每发送完一个字节后,加入一个bit的延时再发送下一个字节。

使用特权

评论回复
我是土匪|  楼主 | 2018-10-21 12:50 | 显示全部楼层
cjseng 发表于 2018-10-21 11:59
波特率误差造成的帧错误,可以用2个停止位试试,或者在MCU端每发送完一个字节后,加入一个bit的延时再发送 ...

我先试试2个停止位。

使用特权

评论回复
我是土匪|  楼主 | 2018-10-21 15:19 | 显示全部楼层
cjseng 发表于 2018-10-21 11:59
波特率误差造成的帧错误,可以用2个停止位试试,或者在MCU端每发送完一个字节后,加入一个bit的延时再发送 ...

2位停止位。
串口助手发送,MCU接收,接收到后院数据返回,5S一次。
执行1300次,串口助手有6次接收出现乱码,发送给MCU不出错。

使用特权

评论回复
tyw| | 2018-10-21 15:30 | 显示全部楼层
SP3485中文资料.pdf (2.39 MB)

使用特权

评论回复
我是土匪|  楼主 | 2018-10-21 15:36 | 显示全部楼层

及时雨,我认真阅读。谢谢老T叔

使用特权

评论回复
我是土匪|  楼主 | 2018-10-21 17:04 | 显示全部楼层
软件把方向固定死了,结果还是单方向乱码。先检查硬件。

使用特权

评论回复
FPGA0FLASH| | 2018-10-21 19:09 | 显示全部楼层
学习了,技术大牛

使用特权

评论回复
没用过   等待更新学习[

使用特权

评论回复
eydj2008| | 2018-10-22 08:30 | 显示全部楼层
485是有方向控制的,
通讯都会有受到干扰的时候, 所以得制定一个协议,防止数据出错, 错后重传还是丢掉.

使用特权

评论回复
6688hyc| | 2018-10-22 08:41 | 显示全部楼层
先调低波特率试一下

使用特权

评论回复
icecut| | 2018-10-22 11:39 | 显示全部楼层
没问题, 这就是正常数据.
硬件问题软件解决

使用特权

评论回复
Harvard| | 2018-10-22 13:14 | 显示全部楼层
看看 单片机的电源供电怎么样? 我遇到用gprs模块 ,被gprs模块 干扰. 数据发生突变.

使用特权

评论回复
cjseng| | 2018-10-22 20:01 | 显示全部楼层
改为16进制显示,然后把出错的字节挑出来,写成二进制,和正确的结果对比下,看看是不是刚好左移或右移了一位,即起始位0或者停止位1被当成数据位了。

使用特权

评论回复
forrest11| | 2018-10-23 10:03 | 显示全部楼层
本帖最后由 forrest11 于 2018-10-23 12:37 编辑

如果这个问题几分钟就出错,那其实好解。12楼说这是正常数据的看法是不对的。有问题就是有问题,要知道原因。然后才能解决。
首先要找一个存储深度较深的示波器,建议一屏幕能看5秒就可以了。示波器检测你的发送波形,一旦串口助手发现错误,就停止示波器抓波形,然后停止发送,接下来核对你串口助手收到的数据和示波器波形,一定能找到对应串口助手错误数据对应的波形,如果波形是对的,那么不用担心了,是你pc侧有问题。(尽管我觉得这种可能性几乎为零)
如果波形不对,那确实就是你的单片机发送有问题了。
我分析过你的发送错误,有两个例子,l变成[,6变成>,对应的ascii码为:
1. 0110 1100变为0111 1011
2. 0011 0110变为0011 1110
错误不止1bit,且没有位置规律,这可能的原因有:
1. 输出电平不对,被拉低导致误判,
2. 程序问题,如发送没有完成就打入下一个数据等。
不管什么问题,都需要你仔细研判输出波形来获得线索。

如果你有协议分析仪,更方便。

使用特权

评论回复
我是土匪|  楼主 | 2018-10-23 15:00 | 显示全部楼层
forrest11 发表于 2018-10-23 10:03
如果这个问题几分钟就出错,那其实好解。12楼说这是正常数据的看法是不对的。有问题就是有问题,要知道原因 ...

我把485固定成单一方向,依旧和之前一样的概率会出错。
因此我认为和硬件脱离不了关系,先解决硬件问题,再考虑软件的容错。

感谢您认真的分析,谢谢

使用特权

评论回复
我是土匪|  楼主 | 2018-10-23 15:01 | 显示全部楼层
Harvard 发表于 2018-10-22 13:14
看看 单片机的电源供电怎么样? 我遇到用gprs模块 ,被gprs模块 干扰. 数据发生突变. ...

谢谢,目前硬件没有办法拿掉GPRS去做测试。我赞同您的分析。谢谢

使用特权

评论回复
我是土匪|  楼主 | 2018-10-23 15:02 | 显示全部楼层
icecut 发表于 2018-10-22 11:39
没问题, 这就是正常数据.
硬件问题软件解决

我先强制设定方向,怀疑和硬件有关,找到问题。软件也会加纠错机制。
谢谢

使用特权

评论回复
我是土匪|  楼主 | 2018-10-23 15:02 | 显示全部楼层
6688hyc 发表于 2018-10-22 08:41
先调低波特率试一下

115200,降低到9600,没有效果。排除了速率问题

使用特权

评论回复
我是土匪|  楼主 | 2018-10-23 15:03 | 显示全部楼层
eydj2008 发表于 2018-10-22 08:30
485是有方向控制的,
通讯都会有受到干扰的时候, 所以得制定一个协议,防止数据出错, 错后重传还是丢掉.[em:2 ...

方向已经固定死,单一上传没问题,单一下发出错。
先找硬件原因,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

227

主题

1761

帖子

30

粉丝