CAN/RS232 Shield¶
CAN/RS232 Shield combină un transceiver CAN-FD cu un transceiver RS-232, astfel încât OpenMV Cam poate comunica cu vehicule, controlere și echipamente seriale mai vechi de pe un singur shield, cu alimentare cu intrare largă și protecție la inversarea tensiunii.
Pentru fișa tehnică completă, fotografii și comenzi, consultați pagina produsului CAN/RS232 Shield.
Puncte importante¶
CAN-FD de 8 Mb/s cu terminație și filtrare pe placă
RS-232 de 1 Mb/s cu filtrare integrată
Intrare de 6-36 V, tolerantă la inversarea tensiunii
Intrare ADC de 0-5 V cu protecție la supratensiune de ±36 V
I/O digital de 0-5 V pentru declanșatoare de sincronizare a camerei, protejat la scurtcircuit
Configurația pinilor¶
Referință pini¶
Pin |
Funcție |
|---|---|
P1 |
CAN TX → intrare transceiver (implicit) |
P2 |
CAN TX → intrare transceiver (alternativ) |
P3 |
CAN RX ← ieșire transceiver |
P4 |
RS-232 TX → comandă linia de ieșire |
P5 |
RS-232 RX ← primește linia de intrare |
P6 |
Citire AIN deplasată la nivel (0–3,3 V pe P6) |
P10 |
SYN — I/O digital open-drain pe blocul de borne |
intrare PWR |
Intrare largă de 6–36 V pe blocul de borne (tolerant la inversarea tensiunii) |
intrare AIN |
Intrare analogică pe blocul de borne |
ieșire VIN |
5,4 V până la 600 mA de la regulatorul de pe placă |
linie de 3,3 V |
Alimentează componentele electronice de pe placa shield-ului |
linie GND |
Masă comună |
Notă
AIN este protejat la supratensiune până la ±36 V și are ca valoare implicită o intrare de tensiune de 0–5 V, redusă la 0–3,3 V pe P6. Conectați șuntul pentru modul 4–20 mA de pe fața shield-ului pentru a comuta AIN la o intrare de buclă de curent de 4–20 mA.
Notă
SYN este o linie digitală open-drain, conectată prin pull-up la 3,3 V pe partea camerei și la 5 V pe partea bornei SYN. Implicit este o intrare — shield-ul deplasează nivelul de la 0–5 V pe SYN la 0–3,3 V pe P10. Modificați jumperul de lipire de pe placă pentru a transforma P10 într-o ieșire, deplasând nivelul de la 0–3,3 V pe P10 la 0–5 V pe SYN.
Notă
Fiecare dintre pinii P1, P2, P3, P4, P5, P6 și P10 poate fi recuperat pentru alte utilizări. P1, P3, P4, P5, P6 și P10 sunt conectați în mod implicit — P1, P3, P6 și P10 prin jumpere de lipire de pe partea din spate, iar P4 și P5 prin jumpere de lipire de pe partea din față. Deschideți jumperul de pe orice pin pe care doriți să-l eliberați. P2 este deconectat în mod implicit: conectați jumperul său de pe partea din spate pentru a direcționa CAN TX către P2 în schimb (și deschideți jumperul din spate al lui P1 pentru a elibera P1).
Notă
Separarea P1/P2 există pentru ca shield-ul să funcționeze pe diferite familii de procesoare. Plăcile OpenMV Cam IMXRT (RT1062) pot direcționa CAN către P1, deci folosesc maparea implicită. Plăcile STM32 nu pot ajunge la P1 cu perifericul lor CAN, deci conectați jumperul din spate al lui P2 (și deschideți-l pe cel al lui P1) pentru a folosi varianta alternativă.
Notă
Terminația magistralei CAN este conectată în mod implicit — împărțită în două jumătăți de 60 Ω în serie între CANH și CANL, cu un condensator către masă la punctul de mijloc (o terminație divizată cuplată în AC de 120 Ω). Deschideți cele două pad-uri de lipire pentru a deconecta fiecare jumătate independent.
Utilizare¶
Notă
Numerele perifericelor CAN(0) și UART(1) de mai jos urmează maparea IMXRT (cablajul implicit P1). Pe un alt procesor, magistrala conectată la acești pini poate fi diferită — verificați referința plăcii dvs.
Trimiteți și recepționați cadre CAN-FD — TX pe P1 (implicit) sau P2 (alternativ), RX pe 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())
Faceți ecou octeților prin RS-232 pe P4 (TX) / P5 (RX):
from machine import UART
uart = UART(1, baudrate=115200)
uart.write("hello\n")
print(uart.read())
Citiți intrarea blocului de borne AIN prin pinul P6 deplasat la nivel:
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)
Reacționați la o muchie descendentă pe linia SYN — de exemplu, pentru a sincroniza camera cu un alt dispozitiv care trage SYN la nivel jos:
from machine import Pin
def on_sync(pin):
print("SYN falling edge")
syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)