2022年2月20日星期日

[RS485] USB 轉 RS485 轉換器設計

關於 RS485

在產品研發工作中,時常遇到 RS485 的功能要求。在研發初期確實也需要類似於 Monitor 的監看工具,以方便了解傳輸過程是否有錯誤及了解客戶端的裝置是否有正確反饋資料。這時候就會需要 USB RS485 這類轉換工具,當然這也不限定於開發環境中,因為 RS485 通訊協定在工控領域中,是非常常見的。

RS485 是利用差動訊號來辨別 0 與 1 ,重點特性是能抗雜訊及通訊實體線路長距離傳輸。RS485 是 multi-drop network (多點網路),相同接線可以同時連接不同的 RS485 裝置。在於有多點網路特性及 RS485 為半雙工通訊模式,所以實際傳輸上通常會使用 Master-slave 架構,較為常見的軟體協議是 MODBUS。不過更多的情境是各家系統自訂通訊協議,因此需要有工具才能好好的做除錯的工作,更多延伸資訊可參考 RS485 wiki(中文)RS485 wiki(English)

收發器 ( Transceivers )

在單晶片場域中如果要用 RS485 協議,就必須要使用 RS485 收發器 ( Transceivers ),單晶片是 TTL 準位並不適合直接對接,必須要用 收發器 這點就有點像 CAN bus。(恩,這是題外話),我目前手上的是 Maxim 的 MAX485ESA+ 。 Maxim 已被併入 ANALOG DEVICES 旗下了,更顯得我手上的 MAX485ESA+ 是個珍品阿。剛看 Mouser 上的售價單價是 NT$128 元,我是不是應該要繼續珍藏 ?

RS485
(圖片來自 Maxim spec.)

上圖是 RS485 收發器的內部等效圖,分別是 2 各三態閘分別負責 TX 與 RX 。RO 負責接收,由 /RE 做接收控制。 DI 負責傳送,由 DE 做訊息發控制。A與 B 就是 RS485輸出端了。 與裝置連接通常是使用雙絞線方式連接。而連接器沒有特別指定。這類的的收發器有很多廠家都有,Pin out 基本上都相同,也可以交互使用。 這裡就不推薦了,之後有機會再介紹。



USB 轉 UART

來到 USB 這個環節了,在設計上是使用 FTDI FT230XQ 這個型號。是個 USB 轉 UART TTL 準位的晶片,在很多的場域都會看到 FTDI 這個廠牌。

UART
(圖片來自 FTDI spec.)

這是 FT230XQ 接腳圖,就是個 USB 轉 UART 常用輸出腳位。 有 TXD , RXD , RTS , CTS,但重點是它有 4 個 可自定義的腳位,就是這篇 RS485 的主題要使用的部分。剛提到 RS485 收發器 有 /RE 及 DE 腳做收發控制,在這自定義就發揮這個功能。

CBUS0 可以定義為 TXDEN 為專屬於 RS485 使用,當 USB Host 端發出傳送資料需求時,TXDEN 會轉態為 High,資料就會透過 TXD 跟著傳至 RS485 收發器的 DI 腳 完成資料發出的任務。
CBUS3 可以定義為 PWREN。 這是 USB 處於 suspend mode 模式時會被轉態成 Low。

利用這個特性連接 RS485 收發器的 /RE 腳,使UART待機時隨時是接收模式狀態。所以會有個缺點,若是在做 TXD 傳輸時也會同時收到自己傳輸的資料。不過還好,這問題並不大可以透過軟體來解決。

定義功能可透過 FTDI 的軟體工具設定

UART
(圖片來自 FTDI FT_Prog 軟體)

電路圖

RS485

線路是按照 FTDI 標準線路設計,除了,RS485 連接器。也保留 UART 輸出,可以兩用的形式不浪費,但 CBUS3 最好設回 SLEEP 模式。USB 連接器使用 USB B type,我想工具類的環節最好用 B Type 會比較穩固點。

製作完成

RS485

USB Host 應用

這類的軟體應用很多,但因為工作關係。通常我會自行開發 Host 端的部分,因為比較符合客戶需求及實際使用情況,或是大家有甚麼可推薦的軟體? 可以在底下留言哦!

0 comments:

發佈留言