文/Edward TTL串口 TTL串口是我們日常做電子產品調試時候常用的一種通訊口,,你可以用它來控制外設芯片,,可以用它來做調試輸出。之所以TTL串口這么受大眾歡迎,,是因為在硬件層面,,它連接簡單,只需要RXD,、TXD和GND三根線即可連接兩臺機器進行通訊,,而且通訊方向全雙工。軟件層面,,TTL串口沒有復雜的協(xié)議棧,,軟件處理非常簡單。 但是,,5V電平的TTL串口顯然無法做長距離的通訊,,因為串行通訊在較長距離(1m以上)傳輸時,由于傳輸線纜的阻抗因素影響,,外加外部電磁環(huán)境的干擾,,5V的單端通訊電平顯然無法做長距離傳輸?shù)摹J聦嵣?,現(xiàn)在一些單片機的電壓都普遍為3.3V,,因此這些單片機自帶的串口只能做一些近距離的調試,或者一些PCB板內的傳感器,、模塊控制,。 RS232串口 為了克服TTL串口傳輸距離不足的問題,RS232串口采用了一種最直接的辦法來解決,。其具體做法為: 1 將TTL串口的0~5V電平標準提升到了-12V~+12V,; 2 將原本TTL串口中規(guī)定的0V表示數(shù)字0,5V表示數(shù)字1這樣的正邏輯進行反向,,采用了這種負邏輯形式,,具體規(guī)定為-12V表示數(shù)字1,+12V表示數(shù)字0,。 這樣的作法可以解決兩個問題,,首先-12V電平在電路系統(tǒng)中不是常規(guī)電壓,,因此將其表示數(shù)字1的好處是,即是通訊電纜上有一個正電壓的干擾進來,,也不會被誤判為1,。其次將電壓標準提高到了±12V,可以大大增加傳輸?shù)尿寗恿Α?/span> 介于此,,RS232可以用來傳輸一些頻率不是很高,,干擾不是很強,距離較長(綜合距離60m~150m左右,,具體看實際環(huán)境)的信息,。因此RS232早前被廣泛用于小型機終端接入,廣告牌通訊等應用,。 三線制的RS232有著諸多的優(yōu)點,,如傳輸距離適中,電纜成本低,,通訊簡單等,。但是由于RS232需要接受雙方的RXD和TXD線交叉連接,因此這種連接方式注定只能在兩臺設備之間點對點連接,。而且在高干擾的電磁環(huán)境中,,單端式的電平通信根本無法保證通訊的可靠性。 RS485串口 RS232采用單端式電壓信號傳輸有效信息,,單端式的通訊很難滿足長距離的通訊,,因為單端信號距離過長時,地線的阻抗,,地線的干擾,,還有信號的失真都會對通訊質量產生影響。而且隨著科技的發(fā)展,,點對點的通訊遠遠滿足不了現(xiàn)代的智能儀表和智能設備技術了,,這種智能儀表和智能設備的應用最重要的一點就是可以多機組網(wǎng),而RS485的出現(xiàn)解決了這個問題,。 RS485是一種利用差分傳輸?shù)陌腚p工接口,,又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。RS485是一個定義平衡數(shù)字多點系統(tǒng)中的驅動器和接收器的電氣特性的標準,,該標準由電信行業(yè)協(xié)會和電子工業(yè)聯(lián)盟定義,。使用該標準的數(shù)字通信網(wǎng)絡能在遠距離條件(1200m左右,100Kbps情況下)下以及電子噪聲大的環(huán)境下有效傳輸信號,。 RS485信號的傳輸是通過一組差分線來實現(xiàn)的,,一般標記為A(非反向(non-inverting)信號)和B反向(inverting)信號。A和B信號的關系,,RS-485標準中提到: 若是MARK(邏輯1),,線路B信號電壓比線路A高,; 若是SPACE(邏輯0),線路A信號電壓比線路B高,。 一個由RS485組成的總線系統(tǒng)中最多可以掛接32個節(jié)點,,這個總線網(wǎng)絡是半雙工的,即每一時刻只能允許一個設計發(fā)送信息,。由于硬件上RS485網(wǎng)絡沒有CSMA/CD(載波偵聽多路訪問/沖突檢測)機制,,因此利用RS485組成的總線系統(tǒng),必定是單主機多從機形式的,。大多數(shù)時刻,,從機都是處于接收狀態(tài),當主機請求自己數(shù)據(jù)發(fā)送時,,主機進入接收狀態(tài),,被選中的從機進入發(fā)送狀態(tài),,將信息發(fā)送給主機,。 RS485接口傳輸?shù)男盘栯m然是差分信號,但是我們在日常應用的時候,,還是需要將其轉換為TTL串口送入單片機去處理的,。 常用的RS485轉TTL串口的芯片有MAX485系列芯片,這個系列芯片中包含了多種其它型號的芯片,,這些芯片使用方法一模一樣,,引腳Pin-to-Pin兼容,其原理圖為: 這些芯片的區(qū)別也是存在的,,主要的區(qū)別主要在傳輸速率,,支持的最大節(jié)點數(shù)等。 MAX485/MAX487系列的芯片,,其中的A(Pin6)和B(Pin7)用來傳輸RS485差分信號,,一個總線網(wǎng)絡中的兩個端節(jié)點需要借一個120Ω的匹配電阻。 VCC(Pin8)和GND(Pin5)分別是電源和地,,輸入電壓為4.75V ≤ VCC ≤ 5.25V,。 RO(Pin1)是數(shù)據(jù)輸出,其實轉換成TTL之后就是TTL的RXD,,DI(Pin4)是數(shù)據(jù)輸入,,轉換成TTL之后,就是連接TTL的TXD,。 RE(Pin2)是接收數(shù)據(jù)使能,,DE(Pin3)是發(fā)送數(shù)據(jù)使能。前面我們說過,,由于RS485是半雙工的,,因此需要通過MCU來控制整個數(shù)據(jù)的流向,,這兩個信號一個是互斥的,因此我們?yōu)榱斯?jié)約IO口和收發(fā)邏輯不沖突,,因此使用時都將這兩個引腳接到同一個IO口,,這樣,當IO口為1時,,DE有效,,此時RS485總線上的信號是單片機TXD信號轉成的差分信號,當IO口為0時,,RE有效,,此時的單片機RXD引腳一直在監(jiān)控RS485總線上的數(shù)據(jù)。
|
|
來自: 樂創(chuàng)客搬運工 > 《待分類》