RS-485收發的零延時自動轉換電路(轉)


RS-485是一種基於差分信號傳送的串行通信鏈路層協議。它解決了RS-232協議傳輸距離太近(15m)的缺陷,是工業上廣泛採用的較長距離數據通信鏈路層協議。   

由於它使用一對雙絞線傳送差分信號,屬半雙工通信,所以需要進行接收和發送狀態的轉換。一般的8腳TTL電平到RS-485電平轉換芯片的引腳定義如圖1所示。

其中,引腳意義如下:
RO——接收數據的 TTL電平輸出;
——低電平有效的接收允許;
DE——高電平有效的發送允許;
DI——發送數據的TTL電平輸入;
A——485差分信號的正向端;
B——485差分信號的反向端。
  
在RS-485電路設計中,通常將和DE短接,用1根信號線來控制,這樣可以做到收發的切換。
  
RS-485芯片通常處於接收狀態。當要發送數據時,由程序控制/DE 變爲高電平,然後UART單元發送數據,程序要等待發送完畢後,再將RS-485芯片轉換到接收狀態。發送完畢的標誌一般由UART的特定寄存器提供狀態指示,程序需要去查詢。 
  
在單片機電路中,一般用1根I/O線來控制RS-485芯片的接收和發送狀態的轉換。這樣需要由軟件來控制 I/O引腳的電平,以達到控制RS-485收發轉換的目的。 

這樣的控制方法造成RS-485通信存在以下問題: 

在想要發送數據和真正的能發送數據之間,存在一定的轉換延時; 
如果發送到接收的轉換時機不當,則會造成數據丟失; 
在接收和發送數據轉換期間,容易引入干擾,使UART單元收到多餘的雜亂數據。 

鑑於以上情況,筆者經過探索和參照其它相關電路,設計了一種可以實現RS-485接收和發送零延時轉換的電路,如圖2所示。

當不發送數據時,TTL電平的Tx信號爲高電平,經V1反向爲低電平,RS-485芯片處於接收狀態。


當發送數據時,① 若Tx爲低電平,經V1反向後,DE/爲高電平,發送允許。此時由於DI 接地,所以RS-485芯片的輸出端A、B產生表示低電平的差分信號,低電平的Tx被送出。② 若Tx爲高電平,經V1反向後,DE/爲低電平,RS-485芯片的A、B端處於高阻態。此時靠電阻R1和R2的下拉和上拉作用,使總線上產生正的差分信號,從而將Tx的高電平信號送出。 

由以上分析看出,在使用這個電路時,只要程序能保證不同時進行接收和發送的操作,即保證是半雙工傳送數據,程序不必用指令控制DE/進行接收和發送的轉換。轉換由硬件本身完成。

發送高電平的過程中,由於RS-485芯片處於接收狀態,此時的發送信號必須是在總線上其它節點發送數據時,才能將高電平信號送出。所以,仍需要軟件設計中做好總線仲裁。

經過在沒有嚴重干擾的實驗室中的實驗,在使用0.5mm2屏蔽平行線時,此電路的傳送距離可達1200m。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章