串口是嵌入式裝備調試開發必備的硬件模塊,嵌入式裝備最經常使用的串口協議是RS232,標準9針串口,這是由RS232標準協議文檔定義的。
串口采取插針方式連接,接口兩端1個是插針,1個是插槽,也就是我們常說的公頭(插針)和母頭(插槽),只能說這個比喻真是太邪惡了。。。
PC機都會有1⑵個串口,1般是使用公頭,裝備號是COM1 COM2。
但嵌入式裝備在硬件設計時其實不會規定必須使用哪一個,有的是公頭,有的是母頭,這就致使了串口線直連和交叉之分,使用直連串口線 還是交叉串口線,確切有點亂。
要說清楚這個問題,首先從公母頭的定義說起。從網上找到的引腳定義圖以下:
公頭串口引腳定義是從左側開始計數,母頭串口引腳定義是從右側開始計數。
首先我感覺要明確1點的是2臺裝備串口相連最基本的原則:
保證2臺裝備串口的收發引腳交叉相連,即裝備的發送引腳與另外一臺裝備的接收引腳相連,RX與TX交叉相連,其余引腳還是逐一對應。
作為嵌入式裝備的調試串口,波特率1般為115200,距離也就是1米左右,這樣的數據壓力其實不需要流控制。9針全功能串口中只需要保證RX TX GND連接正確便可,其余引腳都是用作流控。
大部份嵌入式裝備不會引出串口插座,為了節省空間僅僅給出RX TX GND 3個引腳。我們需要用線與PC串口線的TX RX GND相連便可。
仔細的同學根據公母頭引腳定義和連接原則可能看出1點問題來了,根據這個引腳定義,公母頭對接,明顯的是RX接RX,TX接TX啊,跟連接原則不1致啊。
這里只能說公頭跟母頭定義方向不1致了,公頭定義是自己的引腳定義,而母頭定義,特別是RX TX引腳定義是以公頭方向來定義的引腳,比如母頭的數據輸入引腳,含義是該引腳連接公頭的數據輸入引腳,該引腳實際上是母頭的數據輸出引腳,也就是說在這方面公母頭引腳定義都是以公頭為參考方向的。
這樣的引腳定義保證了公頭與母頭相接,串口就可以正常通訊。
因此如果裝備使用母頭串口,我們只需要直連串口線(其實就是相當于延長線)連接便可,保證了RX與TX交叉相連。
但是如果裝備使用公頭串口,我們就需要交叉串口線了。
由于兩端都是公頭,如果使用直連串口線,可以想象插1起,2接4,3接3,肯定不行。
如何解決這個問題呢?
這就需要交叉串口線來幫忙了,它是在串口線內部將2,3引腳交叉,其余不變。
使用雙母頭交叉串口線連接兩真個公頭串口,這樣公頭引腳2,3與串口線母頭的2,3相連,內部1轉,變成3,2。另外一端串口線母頭引腳3,2與裝備公頭的3,2相連。
終究就是將公頭的2,3與母頭的3,2相連!
如何辨別串口線是直連還是交叉?
萬用表丈量串口線1真個引腳2與另外一真個引腳2是不是短接,是則是直連串口線,否則是交叉串口線。
所以1句話總結:
串口異性相接(公母頭),使用直連串口線。同性相接(公公 母母),使用交叉串口線。
最后說明1點,在這里討論都是標準的9針串口,也就是依照圖引腳定義來布線連接,特定線序的串口,如公頭插座但是依照母頭引線,不在我們的討論范圍。
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
上一篇 Android Studio 錯誤: 非法字符: 'ufeff' 及 Gradle不能自動查找xml自定義屬性
下一篇 scrapy [boto] ERROR: Caught exception reading instance data URLError: