RS422/RS485 Shield¶
RS422/RS485 Shield 為 OpenMV Cam 提供適用於工業匯流排的長距離差動序列連線,並具備寬輸入電源、突波保護以及 ADC/數位 I/O。
如需完整的資料表、照片與訂購資訊,請參閱 RS422/RS485 Shield 產品頁面。
重點特色¶
10 Mb/s RS-422 或 RS-485,具板載終端電阻
6-36 V 輸入,具反向電壓耐受能力
0-5 V ADC 輸入,具 ±36 V 過電壓保護
0-5 V 數位 I/O,用於相機同步觸發,具短路保護
接腳圖¶
接腳參考¶
接腳 |
功能 |
|---|---|
P4 |
RS-422 / RS-485 TX → 驅動差動線路輸出 |
P5 |
RS-422 / RS-485 RX ← 接收差動線路輸入 |
P6 |
經位準位移的 AIN 回讀(P6 上為 0–3.3 V) |
P10 |
SYN——端子台上的開漏式數位 I/O |
PWR 輸入 |
端子台上的 6–36 V 寬輸入(具反向電壓耐受能力) |
AIN 輸入 |
端子台上的類比輸入 |
VIN 輸出 |
由板載穩壓器提供 5.4 V、最高 600 mA |
3.3V 電源軌 |
為擴充板的板載電子元件供電 |
GND 電源軌 |
共用接地 |
備註
AIN 具備高達 ±36 V 的過電壓保護,預設為 0–5 V 電壓輸入,並降壓縮放為 P6 上的 0–3.3 V。將擴充板正面的 4–20 mA 模式分流器橋接起來,即可將 AIN 切換為 4–20 mA 電流迴路輸入。
備註
SYN 是一條開漏式數位線路,相機端上拉至 3.3 V,SYN 端子側上拉至 5 V。預設為輸入——擴充板會將 SYN 上的 0–5 V 位準位移降至 P10 上的 0–3.3 V。變更板載焊接跳線即可將 P10 翻轉為輸出,將 P10 上的 0–3.3 V 位準位移升至 SYN 上的 0–5 V。
備註
P4、P5、P6 與 P10 各接腳預設皆透過焊接跳線連接至相機——開斷任一想回收作為其他用途接腳上的跳線即可。P6 的跳線位於擴充板背面;P4、P5 與 P10 的跳線位於正面。
備註
板載終端電阻預設為連接狀態——開斷對應的背面焊接跳線即可將其斷開。其中兩個用於 RS-422 A/B 對,另兩個用於 RS-422 Y/Z 對(同時兼作 RS-485 A/B 終端),共計四個跳線。
關於 RS-422 與 RS-485
這兩種標準皆以平衡(差動)訊號的形式透過雙絞線傳送序列資料,以實現長距離、耐雜訊的連線:
RS-422 透過四條線進行全雙工通訊。驅動器在標示為 Y/Z 的專用 TX 對上傳送,對端則在標示為 A/B 的獨立 RX 對上回傳。每對線路有一個發送器和最多十個接收器。
RS-485 通常透過兩條線進行半雙工通訊。傳送與接收共用同一對線路,在 RS-485 術語中稱為 A/B,但實體上即為本擴充板上的同一組 Y/Z 線路。最多可有三十二個節點共用此匯流排,且其中任一節點皆可驅動之。
擴充板如何同時支援兩者
本擴充板搭載兩個 THVD1426 收發器,每個皆可處理任一標準:
第一個收發器驅動 Y/Z 對(同時兼作 RS-485 A/B 對)。它是唯一接上驅動器的收發器,因此無論在何種模式下,相機所有對外的流量皆透過此對線路送出。
第二個收發器驅動 A/B 對。其驅動器已被固定關閉——此收發器僅供接收,且只在 4 線式 RS-422 模式下才會用到。
兩個收發器的接收器始終啟用,且其 RX 輸出經 AND 邏輯合併至一條回到相機的接收線路上:
在 2 線式 RS-485 模式下,僅第一個收發器處於作用狀態。將匯流排接至 Y/Z;A/B 側則閒置不動,AND 閘僅將第一個收發器的 RX 訊號傳遞過去。
在 4 線式 RS-422 模式下,對端在 A/B 對上向相機傳送(由第二個收發器接收),同時相機在 Y/Z 上傳送(第一個收發器自身的接收器會將其送出的資料回讀回來)。AND 閘將兩者合併——無論哪一對線路出現低脈衝(起始位元、資料),都會傳達到相機。
端子台標籤反映了此雙重對應關係:
RS-422(4 線式)——TX 從 Y/Z 輸出,RX 從 A/B 輸入。
RS-485(2 線式)——TX/RX 共用 Y/Z 對(即 RS-485 術語中的 A/B)。請將擴充板上的 A/B 端子保持未連接狀態。
使用方式¶
備註
下方的 UART(3) 周邊編號依循 STM32 的對應關係。在其他處理器上,接至這些接腳的匯流排可能不同——請查閱您開發板的參考資料。
在 P4(TX)/P5(RX)上與差動序列對端通訊:
from machine import UART
uart = UART(3, baudrate=115200)
uart.write("hello\n")
print(uart.read())
透過經位準位移的 P6 接腳讀取 AIN 端子台輸入:
from machine import ADC
import time
ain = ADC("P6")
while True:
v = ain.read_u16() * 3.3 / 65535
print("AIN:", v * (5.0 / 3.3), "V")
time.sleep_ms(100)
對 SYN 線路上的下降緣作出反應——例如,與另一個將 SYN 拉低的裝置同步相機:
from machine import Pin
def on_sync(pin):
print("SYN falling edge")
syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)