CAN/RS232 Shield

CAN/RS232 Shield 將一個 CAN-FD 收發器與一個 RS-232 收發器結合,讓 OpenMV Cam 能以單一 shield 與車輛、控制器及傳統序列設備通訊,並具備寬範圍輸入電源與反向電壓保護。

CAN/RS232 Shield

完整的資料表、照片與訂購資訊請參閱 CAN/RS232 Shield 產品頁面

重點特色

  • 8 Mb/s CAN-FD,具板載終端與濾波

  • 1 Mb/s RS-232,整合濾波功能

  • 6-36 V 輸入,可耐受反向電壓

  • 0-5 V ADC 輸入,具 ±36 V 過電壓保護

  • 0-5 V 數位 I/O,用於相機同步觸發,具短路保護

接腳圖

CAN/RS232 Shield 接腳圖

接腳對照

接腳

功能

P1

CAN TX → 收發器輸入(預設)

P2

CAN TX → 收發器輸入(替代)

P3

CAN RX ← 收發器輸出

P4

RS-232 TX → 驅動線路輸出

P5

RS-232 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 電源軌

為 shield 的板載電子元件供電

GND 電源軌

共用接地

備註

AIN 具備最高 ±36 V 的過電壓保護,預設為 0–5 V 電壓輸入,並降比例縮放為 P6 上的 0–3.3 V。橋接 shield 正面的 4–20 mA 模式分流器,即可將 AIN 切換為 4–20 mA 電流迴路輸入。

備註

SYN 是一條開汲極數位線路,在相機側上拉至 3.3 V,在 SYN 端子側上拉至 5 V。它預設為輸入——shield 會將 SYN 上的 0–5 V 位準轉換降至 P10 上的 0–3.3 V。變更板載焊接跳線即可將 P10 翻轉為輸出,將 P10 上的 0–3.3 V 位準轉換升至 SYN 上的 0–5 V。

備註

P1、P2、P3、P4、P5、P6 與 P10 每一支接腳都可回收作其他用途。P1、P3、P4、P5、P6 與 P10 預設為連接——P1、P3、P6 與 P10 透過背面焊接跳線,P4 與 P5 透過正面焊接跳線。開啟你想釋放的任一接腳上的跳線即可。P2 預設為斷開:橋接其背面跳線可改將 CAN TX 路由至 P2(並開啟 P1 的背面跳線以釋放 P1)。

備註

P1/P2 的分割設計是為了讓 shield 能跨處理器系列運作。OpenMV Cam IMXRT 系列開發板(RT1062)可將 CAN 路由至 P1,因此使用預設映射。STM32 開發板的 CAN 周邊裝置無法連到 P1,因此請橋接 P2 的背面跳線(並開啟 P1 的)以使用替代方案。

備註

CAN 匯流排終端預設為連接——在 CANH 與 CANL 之間串接成兩個 60 Ω 的對半,中點接一個電容到地(即 120 Ω 交流耦合分割式終端)。開啟這兩個焊盤即可各自獨立斷開每一半。

用法

備註

以下的 CAN(0)UART(1) 周邊編號遵循 IMXRT 映射(預設 P1 接線)。在其他處理器上,接到這些接腳的匯流排可能不同——請查閱你開發板的參考資料。

收發 CAN-FD 影格——TX 在 P1(預設)或 P2(替代),RX 在 P3::

from machine import CAN

can = CAN(2, 1_000_000)
can.set_filters(None)
can.send(0x123, b"\xDE\xAD\xBE\xEF")
print(can.recv())

透過 RS-232 在 P4(TX)/ P5(RX)上回送位元組::

from machine import UART

uart = UART(1, 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)