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.

CAN/RS232 Shield

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

Configurația pinilor CAN/RS232 Shield

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)