OpenEdv-开源电子网

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

点对点485收发冲突问题

[复制链接]

11

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2016-9-24
在线时间
36 小时
发表于 2018-7-4 14:32:17 | 显示全部楼层 |阅读模式
问题描述:主从设备采用点对点485通信,485硬件上采用自收发电路,主设备芯片STM32F103VCT6。采用了DMA+串口空闲中断,正常情况下主设备不断发送一条短查询指令,从设备返回一大串信息,有时需要按键设置相关参数,主设备会发送设置指令。但是设置功能成功率不高,截取的数据有时候也不完整,我怀疑是主设备发送完查询信息后,DMA正在接收,如果此时主循环发送一条设置指令会造成485的收发冲突,请大神分析是不是这个原因,如果是如何从软件上判断DMA是否正在处于接收状态?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-7-4 14:50:09 | 显示全部楼层
要看主设备查询的频率是多快,如果查询的频率非常快,当查询指令刚发送完之后,又按下了按键,又接着发送了按键消息。当按键消息发送时,从设备此时正好有数据给主设备发。此时相当于主从设备同时给总线发数据了。可以设置为在主机每次发送完查询指令后,要等待从机回复。当收到从机回复后,才能继续发送下一次查询指令,如果从机一直未回复,就增加等待超时判断。当连续三次超时,默认为主从机断开了连接。当有按键按下时,判断当前主机是否处于等待从机回复状态。如果是,就要等接收到从机回复后,再发送按键设置信息。要时刻保证总线上只有一组数据在传输。
回复 支持 反对

使用道具 举报

11

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2016-9-24
在线时间
36 小时
 楼主| 发表于 2018-7-4 17:04:43 | 显示全部楼层
HXYDJ 发表于 2018-7-4 14:50
要看主设备查询的频率是多快,如果查询的频率非常快,当查询指令刚发送完之后,又按下了按键,又接着发送了 ...

谢谢,你的思路不错
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-17 00:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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