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까지 과전압 보호되며 기본적으로 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로 레벨 시프트합니다.
참고
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 사이에 직렬로 두 개의 60 Ω 절반으로 분할되며 중간점에 접지로 연결되는 캡이 있습니다 (120 Ω AC 결합 분할 종단). 두 솔더 패드를 열면 각 절반을 독립적으로 분리할 수 있습니다.
사용법¶
참고
아래의 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)