CAN/RS232 Shield¶
A CAN/RS232 Shield egy CAN-FD adó-vevőt egyesít egy RS-232 adó-vevővel, így az OpenMV Cam egyetlen shieldről kommunikálhat járművekkel, vezérlőkkel és régebbi soros eszközökkel, széles bemeneti tápellátással és fordított polaritás elleni védelemmel.
A teljes adatlapért, fényképekért és a rendeléshez lásd a CAN/RS232 Shield termékoldalt.
Kiemelt jellemzők¶
8 Mb/s CAN-FD beépített lezárással és szűréssel
1 Mb/s RS-232 integrált szűréssel
6-36 V-os bemenet, fordított polaritás-tűrő
0-5 V-os ADC bemenet ±36 V-os túlfeszültség elleni védelemmel
0-5 V-os digitális I/O kamera-szinkron triggerekhez, rövidzárlat ellen védve
Lábkiosztás¶
Lábkiosztás referencia¶
Láb |
Funkció |
|---|---|
P1 |
CAN TX → adó-vevő be (alapértelmezett) |
P2 |
CAN TX → adó-vevő be (alternatív) |
P3 |
CAN RX ← adó-vevő ki |
P4 |
RS-232 TX → meghajtja a kimeneti vonalat |
P5 |
RS-232 RX ← fogadja a bemeneti vonalat |
P6 |
Szintillesztett AIN visszaolvasás (0–3,3 V a P6-on) |
P10 |
SYN — open-drain digitális I/O a sorkapcson |
PWR be |
6–36 V-os széles bemenet a sorkapcson (fordított polaritás-tűrő) |
AIN be |
Analóg bemenet a sorkapcson |
VIN ki |
5,4 V akár 600 mA-ig a beépített szabályozóról |
3,3 V-os sín |
Táplálja a shield beépített elektronikáját |
GND sín |
Közös föld |
Megjegyzés
Az AIN ±36 V-ig túlfeszültség ellen védett, és alapértelmezetten 0–5 V-os feszültségbemenet, amely 0–3,3 V-ra van leskálázva a P6-on. Hidald át a 4–20 mA-es üzemmód söntjét a shield előlapján, hogy az AIN-t 4–20 mA-es áramhurok bemenetre váltsd.
Megjegyzés
A SYN egy open-drain digitális vonal, amely a kamera oldalán 3,3 V-ra, a SYN sorkapocs oldalán pedig 5 V-ra van felhúzva. Alapértelmezetten bemenet — a shield 0–5 V-ról 0–3,3 V-ra szintilleszti a SYN-t a P10-en. Módosítsd a beépített forrasztott áthidalást, hogy a P10-et kimenetre fordítsd, 0–3,3 V-ról 0–5 V-ra szintillesztve a P10-et a SYN-en.
Megjegyzés
A P1, P2, P3, P4, P5, P6 és P10 mindegyike más célra is felszabadítható. A P1, P3, P4, P5, P6 és P10 alapértelmezetten csatlakoztatva van — a P1, P3, P6 és P10 a hátoldali forrasztott áthidalásokon keresztül, a P4 és P5 az előlapi forrasztott áthidalásokon keresztül. Nyisd ki az áthidalást bármelyik lábon, amelyet fel akarsz szabadítani. A P2 alapértelmezetten leválasztott: hidald át a hátoldali áthidalását, hogy a CAN TX-et helyette a P2-re irányítsd (és nyisd ki a P1 hátoldali áthidalását a P1 felszabadításához).
Megjegyzés
A P1/P2 szétválasztás azért létezik, hogy a shield különböző processzorcsaládokon át működjön. Az OpenMV Cam IMXRT lapok (RT1062) a CAN-t a P1-re tudják irányítani, így az alapértelmezett leképezést használják. Az STM32 lapok nem érik el a P1-et a CAN perifériájukkal, ezért hidald át a P2 hátoldali áthidalását (és nyisd ki a P1-ét) az alternatíva használatához.
Megjegyzés
A CAN busz lezárása alapértelmezetten csatlakoztatva van — két 60 Ω-os félre osztva, sorba kötve a CANH és CANL között, középponton egy földre kötött kondenzátorral (egy 120 Ω-os AC-csatolt osztott lezárás). Nyisd ki a két forrasztási padot, hogy mindegyik felet egymástól függetlenül leválaszd.
Használat¶
Megjegyzés
Az alábbi CAN(0) és UART(1) perifériaszámok az IMXRT leképezést követik (alapértelmezett P1 bekötés). Egy másik processzoron az ezekre a lábakra bekötött busz eltérhet — ellenőrizd a lapod referenciáját.
Küldj és fogadj CAN-FD képkockákat — TX a P1-en (alapértelmezett) vagy a P2-n (alternatív), RX a P3-on:
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())
Visszhangozz bájtokat RS-232-n a P4-en (TX) / P5-ön (RX):
from machine import UART
uart = UART(1, baudrate=115200)
uart.write("hello\n")
print(uart.read())
Olvasd be az AIN sorkapocs bemenetet a szintillesztett P6 lábon keresztül:
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)
Reagálj egy lefutó élre a SYN vonalon — például a kamera szinkronizálásához egy másik eszközzel, amely a SYN-t alacsonyra húzza:
from machine import Pin
def on_sync(pin):
print("SYN falling edge")
syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)