OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6846|回复: 10

关于使用MAX485通信的问题

[复制链接]

17

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-12-1
在线时间
17 小时
发表于 2016-11-10 14:38:32 | 显示全部楼层 |阅读模式
1金钱
设计了两块板子,需要互相通信,由于距离远,采用485方式,现在就出现了一个问题:
数据包是8个字节的,以0x0D 0x0A结尾,
通过MAX485通信时在数据包最后总是多出来第9个字节,在0x0D 0x0A后面多出来一个0x00,而实际发送中没有这一字节。求解

最佳答案

查看完整内容[请看2#楼]

在程序里面做处理,过滤掉这些单独的数据
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-10 14:38:33 | 显示全部楼层
wolfchuang 发表于 2016-11-12 09:56
你说对了,我今天特意试了一下,在一块板子上只焊了MAX485电路,一端通过TTL转USB接到电脑上,用串口助手 ...

在程序里面做处理,过滤掉这些单独的数据
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-10 14:46:17 | 显示全部楼层
应该是代码逻辑问题~如果用到OS,检查下其他任务是否发送了0x00给uart
回复

使用道具 举报

83

主题

400

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2273
金钱
2273
注册时间
2013-8-26
在线时间
228 小时
发表于 2016-11-10 14:56:51 | 显示全部楼层
看看你的硬件设计吧。上下拉电阻及120欧都加没?
回复

使用道具 举报

17

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-12-1
在线时间
17 小时
 楼主| 发表于 2016-11-10 15:41:45 | 显示全部楼层
ws_zdyz 发表于 2016-11-10 14:56
看看你的硬件设计吧。上下拉电阻及120欧都加没?

加了,上下拉电阻都是4.7K,A、B之间的电阻是1K
回复

使用道具 举报

17

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-12-1
在线时间
17 小时
 楼主| 发表于 2016-11-10 15:44:25 | 显示全部楼层
小陀螺爱炒蛋 发表于 2016-11-10 14:46
应该是代码逻辑问题~如果用到OS,检查下其他任务是否发送了0x00给uart

应该没问题的,因为如果绕过MAX485,直接通过TTL连接就没有最后的00
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-10 15:52:03 | 显示全部楼层
wolfchuang 发表于 2016-11-10 15:44
应该没问题的,因为如果绕过MAX485,直接通过TTL连接就没有最后的00

那就不是软件问题,检查硬件了~匹配电阻,换个IC,听说mx485假货多,sp485靠谱些
回复

使用道具 举报

21

主题

387

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1043
金钱
1043
注册时间
2016-9-8
在线时间
213 小时
发表于 2016-11-10 16:50:12 | 显示全部楼层
其实吧,485通信,发送,接收切换时会产生数据,这个要么你通讯协议定的规范靠谱点,要么程序里检测发送接收状态使能完成没?
shop60994719.taobao.com
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-10 22:44:52 | 显示全部楼层
7楼说对了,这个0X00基本可以肯定是从你的485收发状态切换的时候,接收到的一个数据。
你代码里面要对其进行处理
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-11-11 11:17:27 | 显示全部楼层
学习了   ,原来是半双工的问题
回复

使用道具 举报

17

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-12-1
在线时间
17 小时
 楼主| 发表于 2016-11-12 09:56:07 | 显示全部楼层
密耳 发表于 2016-11-10 16:50
其实吧,485通信,发送,接收切换时会产生数据,这个要么你通讯协议定的规范靠谱点,要么程序里检测发送接 ...

你说对了,我今天特意试了一下,在一块板子上只焊了MAX485电路,一端通过TTL转USB接到电脑上,用串口助手观察,再手动切换MAX485的接收或发送,串口助手上就会收到数据,几乎是0x00,也就是说MAX485在切换接收和发送时会自己发数据。
这个问题从硬件方面能不能有办法解决呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 05:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表