串口线的交叉直连之痛
2015-10-20 10:44
288 查看
串口是嵌入式设备调试开发必备的硬件模块,嵌入式设备最常用的串口协议是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是否短接,是则是直连串口线,否则是交叉串口线。
所以一句话总结:
串口异性相接(公母头),使用直连串口线。同性相接(公公 母母),使用交叉串口线。
最后说明一点,在这里讨论都是标准的九针串口,也就是按照图引脚定义来布线连接,特定线序的串口,如公头插座但是按照母头引线,不在我们的讨论范围。
串口采用插针方式连接,接口两端一个是插针,一个是插槽,也就是我们常说的公头(插针)和母头(插槽),只能说这个比喻真是太邪恶了。。。
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是否短接,是则是直连串口线,否则是交叉串口线。
所以一句话总结:
串口异性相接(公母头),使用直连串口线。同性相接(公公 母母),使用交叉串口线。
最后说明一点,在这里讨论都是标准的九针串口,也就是按照图引脚定义来布线连接,特定线序的串口,如公头插座但是按照母头引线,不在我们的讨论范围。
相关文章推荐
- Linux 自检和 SystemTap
- Linux串口通信
- Python 七步捉虫法
- 康诺云推出三款智能硬件产品,为健康管理业务搭建数据池
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- 可以用来调试JavaScript错误的解决方案
- 如何调试异步加载页面里包含的js文件
- jQuery下的Ajax调试步骤
- 调试一段PHP程序时遇到的三个问题
- JavaScript高级程序设计 错误处理与调试学习笔记
- Javascript调试脚本的经验之谈第1/2页
- 在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
- Android App调试内存泄露之Cursor篇
- Lua的编译、执行和调试技术介绍
- 10个调试和排错的小建议
- 调试PHP程序的多种方法介绍
- PHP调试函数和日志记录函数分享