串口RS-232 有时为什么要使用交叉线
在做开发时,我用到两种设备:DE2板和Zigbee开发板。这两种设备的RS232串口接头都是母头的。用串口线(公对母且非交叉的)把电脑与DE2板或者电脑与ZigBee开发板接连后,在PC上打开串口助手,测试到数据的接收与发送都正常,说明所有的设备都完好无损。
在得知DE2板与Zigbee开发板的RS232接口都是可用后,我想使这两个设备直接用RS232进行通信。由于两个设备的接头都是母头,所以我就买了一条两头都是公头的串口线连接,无奈实验失败了。刚开始我怀疑是线的质量问题,但用万用表测后,每根线都是通的,什么问题都没有。
郁闷了好一会,于是上网查资料,认真研究了RS232的针脚定义,大家也一起来熟悉或复习一下吧。
图1是RS232串口接头针脚排列(大家把串口接头的针或孔正对自己,睁大眼睛仔细看看,有没有发现每个针或孔的旁边都标着阿拉伯数字?)。容易发现将公头与母头对接,刚好是1孔对1针,2孔对2针的......
图1 DB9 针脚排列
表1 RS232接口定义(9芯)
针脚 |
定义 |
符号 |
1 |
载波检测 |
DCD |
2 |
接收数据 |
RXD |
3 |
发送数据 |
TXD |
4 |
数据终端准备好 |
DTR |
5 |
信号地 |
SG |
6 |
数据准备好 |
DSR |
7 |
请求发送 |
RTS |
8 |
清除发送 |
CTS |
9 |
振铃提示 |
RI |
RS232串口是全双工通信的,接收与发送数据可以同时进行,所以接收和发送有各自的数据线。从表1可以看到,2是接收线,3是发送线。
需要注意的是,表1的接口定义是对于PC的RS232接头来说是正确的。也就是说电脑的串口接头的针脚2负责接收数据,那么对于与之相连的设备,针脚2应该负责发送才对啊!!!针脚3同理,这样才能正常进行通信。
想到这里,我恍然大悟了!!!DE2板和Zigbee开发板RS232的针脚2都发送数据,3都接收数据,把这两个设备的2连2,3连3怎么可能通信呢!!!这样只要把2和3交叉一样就可以了,难怪交叉串口线这种东东会出现。马上打电话问附近的西部电子有没有公对公的交叉串口线(因为我两个板的RS232接口都是母的),无奈被告知没有。又不想走太远,所以上淘宝网查,发现卖家也挺少的,就算有也不划算,因为邮费都能买两根了。想想刚买的线既然不能用那也不能浪费掉啊,那就对它动动手术吧!!!其实RS232中一般只要接上2、3和5三根线就可以正常工作了。
把RS232的外层皮剪开后,里面各种颜色的线露出来了,这里我又犯难了,因为只需要把2、3两根线弄断再对接一下就大功告成了,但我怎么知道9根线中哪根是2哪根是3呢?发现每根线的颜色都是不一样的,难道颜色上面有玄机?立马在网上查了查,嘿嘿,果不其然,以下就是RS232(9芯)信号线颜色规定:
A: 1-黑 2-红 3-棕 4-橙 5-黄 6-绿 7-蓝 8-紫 9-白
B: 1-黑 2-棕 3-红 4-橙 5-黄 6-绿 7-蓝 8-紫 9-白
但是对照以上颜色我剪了红和棕,发现并不是2和3,该死的商家啊~~~结果我把8根线都剪了,才找到2和3。
个人心得,自创博文,有不当之处欢迎指正!