CAN/RS232 Shield¶
CAN/RS232 Shield łączy transceiver CAN-FD z transceiverem RS-232, dzięki czemu OpenMV Cam może komunikować się z pojazdami, sterownikami i starszym sprzętem szeregowym z jednego shielda, zapewniając szerokie wejście zasilania i ochronę przed odwrotną polaryzacją napięcia.
Pełną dokumentację, zdjęcia i informacje o zamawianiu znajdziesz na stronie produktu CAN/RS232 Shield.
Najważniejsze cechy¶
CAN-FD 8 Mb/s z wbudowaną terminacją i filtrowaniem
RS-232 1 Mb/s ze zintegrowanym filtrowaniem
Wejście 6-36 V, odporne na odwrotną polaryzację napięcia
Wejście ADC 0-5 V z ochroną przeciwprzepięciową ±36 V
Cyfrowe I/O 0-5 V do wyzwalaczy synchronizacji kamery, zabezpieczone przed zwarciem
Rozmieszczenie pinów¶
Opis pinów¶
Pin |
Funkcja |
|---|---|
P1 |
CAN TX → wejście transceivera (domyślnie) |
P2 |
CAN TX → wejście transceivera (alternatywnie) |
P3 |
CAN RX ← wyjście transceivera |
P4 |
RS-232 TX → steruje linią wyjściową |
P5 |
RS-232 RX ← odbiera linię wejściową |
P6 |
Odczyt AIN z konwersją poziomu (0–3.3 V na P6) |
P10 |
SYN — cyfrowe I/O typu open-drain na listwie zaciskowej |
PWR in |
Szerokie wejście 6–36 V na listwie zaciskowej (odporne na odwrotną polaryzację napięcia) |
AIN in |
Wejście analogowe na listwie zaciskowej |
VIN out |
5.4 V przy maksymalnie 600 mA z wbudowanego stabilizatora |
szyna 3.3V |
Zasila wbudowaną elektronikę shielda |
szyna GND |
Wspólna masa |
Informacja
AIN jest zabezpieczone przeciwprzepięciowo do ±36 V i domyślnie jest wejściem napięciowym 0–5 V, skalowanym w dół do 0–3.3 V na P6. Zewrzyj shunt trybu 4–20 mA na froncie shielda, aby przełączyć AIN na wejście pętli prądowej 4–20 mA.
Informacja
SYN to cyfrowa linia open-drain, podciągnięta do 3.3 V po stronie kamery i do 5 V po stronie zacisku SYN. Domyślnie jest wejściem — shield konwertuje poziom 0–5 V na SYN w dół do 0–3.3 V na P10. Zmień wbudowaną zworkę lutowaną, aby przełączyć P10 w wyjście, konwertując poziom 0–3.3 V na P10 w górę do 0–5 V na SYN.
Informacja
Każdy z pinów P1, P2, P3, P4, P5, P6 i P10 może zostać przejęty do innych zastosowań. P1, P3, P4, P5, P6 i P10 są domyślnie połączone — P1, P3, P6 i P10 przez zworki lutowane od spodu, a P4 i P5 przez zworki lutowane od frontu. Rozewrzyj zworkę na dowolnym pinie, który chcesz zwolnić. P2 jest domyślnie odłączony: zewrzyj jego zworkę od spodu, aby zamiast tego skierować CAN TX na P2 (i rozewrzyj zworkę od spodu P1, aby zwolnić P1).
Informacja
Podział P1/P2 istnieje po to, by shield działał w różnych rodzinach procesorów. Płytki OpenMV Cam IMXRT (RT1062) mogą skierować CAN na P1, więc używają domyślnego mapowania. Płytki STM32 nie mogą osiągnąć P1 swoim peryferium CAN, więc zewrzyj zworkę od spodu P2 (i rozewrzyj zworkę P1), aby użyć wariantu alternatywnego.
Informacja
Terminacja magistrali CAN jest domyślnie podłączona — podzielona na dwie połówki po 60 Ω połączone szeregowo między CANH i CANL, z kondensatorem do masy w punkcie środkowym (terminacja dzielona 120 Ω sprzężona AC). Rozewrzyj dwa pady lutownicze, aby niezależnie odłączyć każdą połówkę.
Użycie¶
Informacja
Numery peryferiów CAN(0) i UART(1) poniżej odpowiadają mapowaniu IMXRT (domyślne okablowanie P1). Na innym procesorze magistrala połączona z tymi pinami może być inna — sprawdź dokumentację swojej płytki.
Wysyłaj i odbieraj ramki CAN-FD — TX na P1 (domyślnie) lub P2 (alternatywnie), RX na 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())
Wykonuj echo bajtów przez RS-232 na P4 (TX) / P5 (RX):
from machine import UART
uart = UART(1, baudrate=115200)
uart.write("hello\n")
print(uart.read())
Odczytuj wejście listwy zaciskowej AIN przez pin P6 z konwersją poziomu:
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)
Reaguj na zbocze opadające na linii SYN — na przykład, aby zsynchronizować kamerę z innym urządzeniem ściągającym SYN do stanu niskiego:
from machine import Pin
def on_sync(pin):
print("SYN falling edge")
syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)