串口通信与高阻态

    最近项目基本稳定,但是设备内部使用的串口作为总线通信实现的。实际通信过程中会有丢包(帧)问题,经过几次测试和折腾发现最有可能是信道有问题,在校验后会丢弃一些字,又要大动手术了。电路要测试了。

    在之前开发过程中,从总线上自己飞出两个串口的数据线接到PC串口做调试用,基于对串口的浅显理解,经常将Tx线和Rx线做调换,调试设备主控端与本地端的发送与接受。一直没有问题,不过在这次查找串口丢包问题时,想实现直接PC串口发送数据给主控端。却一直实现不了,很是纳闷。经过一番思考才发现了问题所在。

 

   首先说一下所用的RS232通信的实质,RS232的接口可能有DB9或DB25之分。但是在电路内部我们一般面对只有Rx口线和Tx口线。其中Rx实现的是接收数据,Tx实现的是发送数据。然后通过波特率和停止位等来实现数据接收。不详细讲解这部。

  电路实现双工的串口通信(点到点)是通过,将局端的Tx接到远端的Rx上,将局端的Rx接到远端的Tx上,这样就实现双工通信。而我则在总线上的两条布线端飞出两个线连接到PC的串口调试rabbit模块接口上,这样我就可以通过串口软件,给我自己发送数据,并接受自己发出的数据,或者接到远端发过来的数据。但是用Pc给远端发数据则总不成功。这也是引出问题的原因,我给出简单接线图。如下:(不能上传图片真白痴这个东西,之后再补吧)

 

 

当我将PC端Tx接到 远端的Rx线口,rx端接到远端Tx时。(当时没有考虑到发送数据应用),则能收数据,但是pc发出的数据远端怎么都收不到。仔细看这张图就知道问题所在了,PC的Tx与本局端的Tx口都接到远端的Rx上了,局端Tx上没有发送数据,但Pc端的数据也到不了远端的Rx。为什么,因为局端Rs232的芯片在不用时时悬空的而不是高阻态。悬空则一直处于高电平,Pc的数据必然与高电平产生作用的新信号到远端Rx,那么远端一直收到高电平,认为没有数据啊。问题所在了。

 

简单说下高阻态与管脚悬空。高阻态是指管脚产生类似接有有高电阻,它既不是拉低接地,也不悬空或拉高,高电平。这种状态我们可以认为其实是开路的,即高阻态的管脚不对线上的线号有任何影响,但悬空则不同了,它相当于高电平。会对管脚接线产生高电平信号。

 

 

 

  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值