CAN/RS232 Shield¶
CAN/RS232 Shield は CAN-FD トランシーバーと RS-232 トランシーバーを組み合わせたもので、OpenMV Cam が単一のシールドから車両、コントローラー、従来のシリアル機器と通信できるようにします。広範囲入力電源と逆電圧保護を備えています。
完全なデータシート、写真、注文方法については CAN/RS232 Shield 製品ページ を参照してください。
主な特長¶
オンボードの終端処理とフィルタリングを備えた 8 Mb/s の CAN-FD
統合フィルタリングを備えた 1 Mb/s の RS-232
6~36 V 入力、逆電圧耐性あり
±36 V の過電圧保護付き 0~5 V ADC 入力
カメラ同期トリガー用の 0~5 V デジタル I/O、短絡保護付き
ピン配置¶
ピンリファレンス¶
ピン |
機能 |
|---|---|
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 出力 |
オンボードレギュレーターから最大 600 mA の 5.4 V |
3.3V レール |
シールドのオンボード回路に電源を供給します |
GND レール |
共通グランド |
注釈
AIN は ±36 V まで過電圧保護されており、デフォルトでは P6 上で 0~3.3 V にスケールダウンされる 0~5 V の電圧入力です。AIN を 4~20 mA の電流ループ入力に切り替えるには、シールド表面の 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 にレベルシフトします。
注釈
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 の分割は、シールドがプロセッサファミリーをまたいで動作するために存在します。OpenMV Cam の IMXRT ボード(RT1062)は CAN を P1 に配線できるため、デフォルトのマッピングを使用します。STM32 ボードは CAN ペリフェラルで P1 に到達できないため、P2 の裏面ジャンパーをブリッジして(P1 のジャンパーを開放して)代替を使用します。
注釈
CAN バスの終端はデフォルトで接続されています。CANH と CANL の間に直列に 2 つの 60 Ω に分割され、中点でコンデンサを介してグランドに接続されています(120 Ω の AC 結合分割終端)。2 つのはんだパッドを開放すると、各半分を独立して切断できます。
使い方¶
注釈
以下の 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())
P4(TX)/ P5(RX)上で RS-232 を通じてバイトをエコーバックします:
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)