首页 工作日记正文

串口线的交叉直连之痛

admin 工作日记 2020-05-15 240 0

串口线的交叉直连之痛

串口是嵌入式设备调试开发必备的硬件模块,嵌入式设备最常用的串口协议是RS232,标准九针串口,这是由RS232标准协议文档定义的。 
串口采用插针方式连接,接口两端一个是插针,一个是插槽,也就是我们常说的公头(插针)和母头(插槽),只能说这个比喻真是太邪恶了。。。 

PC机都会有1-2个串口,一般是使用公头,设备号是COM1 COM2。 
但嵌入式设备在硬件设计时并不会规定必须使用哪个,有的是公头,有的是母头,这就导致了串口线直连和交叉之分,使用直连串口线 还是交叉串口线,确实有点乱。 

这里写图片描述
要说清楚这个问题,首先从公母头的定义说起。从网上找到的引脚定义图如下: 


 
公头串口引脚定义是从左边开始计数,母头串口引脚定义是从右边开始计数。

首先我感觉要明确一点的是2台设备串口相连最基本的原则: 
保证2台设备串口的收发引脚交叉相连,即设备的发送引脚与另一台设备的接收引脚相连,RX与TX交叉相连,其余引脚还是一一对应。

作为嵌入式设备的调试串口,波特率一般为115200,距离也就是1米左右,这样的数据压力并不需要流控制。九针全功能串口中只需要保证RX TX GND连接正确即可,其余引脚都是用作流控。 
大部分嵌入式设备不会引出串口插座,为了节省空间仅仅给出RX TX GND 3个引脚。我们需要用线与PC串口线的TX RX GND相连即可。

细心的同学根据公母头引脚定义和连接原则可能看出一点问题来了,根据这个引脚定义,公母头对接,明显的是RX接RX,TX接TX啊,跟连接原则不一致啊。 
这里只能说公头跟母头定义方向不一致了,公头定义是自己的引脚定义,而母头定义,特别是RX TX引脚定义是以公头方向来定义的引脚,比如母头的数据输入引脚,含义是该引脚连接公头的数据输入引脚,该引脚其实是母头的数据输出引脚,也就是说在这方面公母头引脚定义都是以公头为参考方向的。 
这样的引脚定义保证了公头与母头相接,串口就能正常通讯。

因此如果设备使用母头串口,我们只需要直连串口线(其实就是相当于延长线)连接即可,保证了RX与TX交叉相连。

但是如果设备使用公头串口,我们就需要交叉串口线了。 
因为两端都是公头,如果使用直连串口线,可以想象插一起,2接4,3接3,肯定不行。 
如何解决这个问题呢? 
这就需要交叉串口线来帮忙了,它是在串口线内部将2,3引脚交叉,其余不变。 
使用双母头交叉串口线连接两端的公头串口,这样公头引脚2,3与串口线母头的2,3相连,内部一转,变成3,2。另一端串口线母头引脚3,2与设备公头的3,2相连。 
最终就是将公头的2,3与母头的3,2相连!

如何区分串口线是直连还是交叉? 
万用表测量串口线一端的引脚2与另一端的引脚2是否短接,是则是直连串口线,否则是交叉串口线。

所以一句话总结: 
串口异性相接(公母头),使用直连串口线。同性相接(公公 母母),使用交叉串口线。

最后说明一点,在这里讨论都是标准的九针串口,也就是按照图引脚定义来布线连接,特定线序的串口,如公头插座但是按照母头引线,不在我们的讨论范围。


评论