OpenEdv-开源电子网

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

上位机程序如何通过485与设备通信的一个疑惑

[复制链接]

7

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2017-6-7
在线时间
29 小时
发表于 2019-2-24 20:40:48 | 显示全部楼层 |阅读模式
5金钱
参考原子的代码已经实现了开发板与设备的通讯,功能验证完毕。现在要做一个上位机程序(usb转485)与设备通讯,主要是一些配置功能。

目前有一个困惑,上位机的程序按照串口通讯开发的话,应该是全双工的;485是半双工。原子哥开发板上是通过控制gpio模拟半双工,但是pc的上位机程序我不知道怎么模拟半双工,求大神指点,谢谢。

最佳答案

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

你这脑子啊!!!锈了是不是,全双工的意思是发送的同时能接收,485不支持全双工就不支持呗,反正它在空闲的时候是接收,上位机只管发送就行了;下位机在发送数据的时候上位机别发送数据就行了,因为发数据下位机此时也收不到,等下位机发送完再发送数据就行了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

116

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4089
金钱
4089
注册时间
2017-11-15
在线时间
331 小时
发表于 2019-2-24 20:40:49 | 显示全部楼层
你这脑子啊!!!锈了是不是,全双工的意思是发送的同时能接收,485不支持全双工就不支持呗,反正它在空闲的时候是接收,上位机只管发送就行了;下位机在发送数据的时候上位机别发送数据就行了,因为发数据下位机此时也收不到,等下位机发送完再发送数据就行了。
回复

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2019-2-24 21:41:45 | 显示全部楼层
我也不懂,帮顶,关注!
回复

使用道具 举报

4

主题

116

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4089
金钱
4089
注册时间
2017-11-15
在线时间
331 小时
发表于 2019-2-25 09:10:54 | 显示全部楼层
IdeaMing 发表于 2019-2-25 09:10
你这脑子啊!!!锈了是不是,全双工的意思是发送的同时能接收,485不支持全双工就不支持呗,反正它在空闲 ...

也就是上位机接收的时候别发送数据。
www.littlebutler.top
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2019-2-25 09:27:40 | 显示全部楼层
你说的是上位机如何开发485还是上位机已经具备485通讯能力如何配置?如果是后者就别管了,只要配置好就可以了。
回复

使用道具 举报

7

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2017-6-7
在线时间
29 小时
 楼主| 发表于 2019-2-25 13:19:03 | 显示全部楼层
xiatianyun 发表于 2019-2-25 09:27
你说的是上位机如何开发485还是上位机已经具备485通讯能力如何配置?如果是后者就别管了,只要配置好就可以 ...

上位机开发485
回复

使用道具 举报

7

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2017-6-7
在线时间
29 小时
 楼主| 发表于 2019-2-25 13:22:50 | 显示全部楼层
IdeaMing 发表于 2019-2-25 09:10
你这脑子啊!!!锈了是不是,全双工的意思是发送的同时能接收,485不支持全双工就不支持呗,反正它在空闲 ...

收发做在一个线程里,还是分成两个线程做
回复

使用道具 举报

33

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2017-1-21
在线时间
192 小时
发表于 2019-2-25 13:58:56 | 显示全部楼层
如果你一定要485全双工也可以啦,用两片485,倆串口,一个专门发一个专门收。
但是实际上一般来说半双工就行了。一般来说485都是用的问答方式,一般由上位机发起提问,然后下位机收到后回复相应数据,所以呢收发一般是分开的。
回复

使用道具 举报

0

主题

14

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-2-21
在线时间
6 小时
发表于 2019-2-26 09:06:10 | 显示全部楼层
不懂,帮顶
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-2-26 10:04:17 来自手机 | 显示全部楼层
上位机随便,都可以实现你的需求,看你个人爱好了
回复

使用道具 举报

4

主题

116

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4089
金钱
4089
注册时间
2017-11-15
在线时间
331 小时
发表于 2019-2-26 15:25:00 | 显示全部楼层
包大人很忙 发表于 2019-2-25 13:22
收发做在一个线程里,还是分成两个线程做

按照我的理解,一个线程里就行了,因为上位机发的时候不会收到数据,收的时候也不对外发数据。
www.littlebutler.top
回复

使用道具 举报

3

主题

259

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2317
金钱
2317
注册时间
2016-12-2
在线时间
354 小时
发表于 2019-2-26 15:40:58 | 显示全部楼层
本帖最后由 sammy902583 于 2019-2-26 15:46 编辑

其实上位机没有RS485的概念, 有的概念就只是收和发, 还有Modem pin控制(RTS...等).

实作的时候要去看实际上位机控制的线路有没有自动控制SP3485电平转换芯片DE脚的功能(很多Super IO/EC/USB to Uart有这个功能, 但是要正确拉线, 且正确配置), 如果有这个功能的话, 就省事多了, 就直接当作普通的Uart控制就行了, 没有需要做任何修改.
若是用了没有控制DE脚的功能, 必须想办法拉出一个GPIO或Modem Pin去控制, 那上位机就要另外写代码去拉DE, 就和原子哥在STM32上面做的一样.

半双工的运行方式, 默认的状态就是在收, 当你的代码要发送资料的时候, 才去切SP3485变成发送状态.

另外全双工的RS485, 叫做RS422, 要两颗SP3485, 这种架构对于软件来说等同普通Uart, 不需要特别修改.



回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 17:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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