RS-485收發(fā)的零延時(shí)轉換電路
RS-485是一種基于差分信號傳送的串行通信鏈路層協(xié)議。它解決了RS-232協(xié)議傳輸距離太近(15m)的缺陷,是工業(yè)上廣泛采用的較長(cháng)距離數據通信鏈路層協(xié)議。
本文引用地址:http://dyxdggzs.com/article/201807/383864.htm由于它使用一對雙絞線(xiàn)傳送差分信號,屬半雙工通信,所以需要進(jìn)行接收和發(fā)送狀態(tài)的轉換。一般的8腳TTL電平到RS-485電平轉換芯片的引腳定義如圖1所示。

其中,引腳意義如下:
RO——接收數據的 TTL電平輸出;
——低電平有效的接收允許;
DE——高電平有效的發(fā)送允許;
DI——發(fā)送數據的TTL電平輸入;
A——485差分信號的正向端;
B——485差分信號的反向端。
在RS-485電路設計中,通常將和DE短接,用1根信號線(xiàn)來(lái)控制,這樣可以做到收發(fā)的切換。
RS-485芯片通常處于接收狀態(tài)。當要發(fā)送數據時(shí),由程序控制/DE 變?yōu)楦唠娖?,然后UART單元發(fā)送數據,程序要等待發(fā)送完畢后,再將RS-485芯片轉換到接收狀態(tài)。發(fā)送完畢的標志一般由UART的特定寄存器提供狀態(tài)指示,程序需要去查詢(xún)。
在單片機電路中,一般用1根I/O線(xiàn)來(lái)控制RS-485芯片的接收和發(fā)送狀態(tài)的轉換。這樣需要由軟件來(lái)控制 I/O引腳的電平,以達到控制RS-485收發(fā)轉換的目的。
這樣的控制方法造成RS-485通信存在以下問(wèn)題:
在想要發(fā)送數據和真正的能發(fā)送數據之間,存在一定的轉換延時(shí);
如果發(fā)送到接收的轉換時(shí)機不當,則會(huì )造成數據丟失;
在接收和發(fā)送數據轉換期間,容易引入干擾,使UART單元收到多余的雜亂數據。
鑒于以上情況,筆者經(jīng)過(guò)探索和參照其它相關(guān)電路,設計了一種可以實(shí)現RS-485接收和發(fā)送零延時(shí)轉換的電路,如圖2所示。

當不發(fā)送數據時(shí),TTL電平的Tx信號為高電平,經(jīng)V1反向為低電平,RS-485芯片處于接收狀態(tài)。
當發(fā)送數據時(shí),① 若Tx為低電平,經(jīng)V1反向后,DE/為高電平,發(fā)送允許。此時(shí)由于DI 接地,所以RS-485芯片的輸出端A、B產(chǎn)生表示低電平的差分信號,低電平的Tx被送出。② 若Tx為高電平,經(jīng)V1反向后,DE/為低電平,RS-485芯片的A、B端處于高阻態(tài)。此時(shí)靠電阻R1和R2的下拉和上拉作用,使總線(xiàn)上產(chǎn)生正的差分信號,從而將Tx的高電平信號送出。
由以上分析看出,在使用這個(gè)電路時(shí),只要程序能保證不同時(shí)進(jìn)行接收和發(fā)送的操作,即保證是半雙工傳送數據,程序不必用指令控制DE/進(jìn)行接收和發(fā)送的轉換。轉換由硬件本身完成。
發(fā)送高電平的過(guò)程中,由于RS-485芯片處于接收狀態(tài),此時(shí)的發(fā)送信號必須是在總線(xiàn)上其它節點(diǎn)發(fā)送數據時(shí),才能將高電平信號送出。所以,仍需要軟件設計中做好總線(xiàn)仲裁。
經(jīng)過(guò)在沒(méi)有嚴重干擾的實(shí)驗室中的實(shí)驗,在使用0.5mm2屏蔽平行線(xiàn)時(shí),此電路的傳送距離可達1200m。
評論