CAN/RS232 Shield

Il CAN/RS232 Shield combina un ricetrasmettitore CAN-FD con un ricetrasmettitore RS-232, così la OpenMV Cam può comunicare con veicoli, controller e apparecchiature seriali legacy da un unico shield, con alimentazione ad ampio ingresso e protezione dall’inversione di tensione.

CAN/RS232 Shield

Per il datasheet completo, le foto e le informazioni d’ordine consulta la pagina prodotto CAN/RS232 Shield.

Punti salienti

  • CAN-FD a 8 Mb/s con terminazione e filtraggio a bordo

  • RS-232 a 1 Mb/s con filtraggio integrato

  • Ingresso da 6-36 V, tollerante all’inversione di tensione

  • Ingresso ADC da 0-5 V con protezione dalla sovratensione ±36 V

  • I/O digitale da 0-5 V per i trigger di sincronizzazione della camera, protetto dal cortocircuito

Pinout

Pinout del CAN/RS232 Shield

Riferimento dei pin

Pin

Funzione

P1

CAN TX → ingresso ricetrasmettitore (predefinito)

P2

CAN TX → ingresso ricetrasmettitore (alternativo)

P3

CAN RX ← uscita ricetrasmettitore

P4

RS-232 TX → pilota la linea in uscita

P5

RS-232 RX ← riceve la linea in ingresso

P6

Readback AIN con level-shifting (0–3.3 V su P6)

P10

SYN — I/O digitale open-drain sulla morsettiera

PWR in

Ampio ingresso da 6–36 V sulla morsettiera (tollerante all’inversione di tensione)

AIN in

Ingresso analogico sulla morsettiera

VIN out

5.4 V fino a 600 mA dal regolatore a bordo

linea 3.3V

Alimenta l’elettronica a bordo dello shield

linea GND

Massa comune

Nota

AIN è protetto dalla sovratensione fino a ±36 V e per impostazione predefinita è un ingresso in tensione da 0–5 V, scalato a 0–3.3 V su P6. Ponticella lo shunt per la modalità 4–20 mA sul fronte dello shield per commutare AIN a un ingresso in corrente con loop 4–20 mA.

Nota

SYN è una linea digitale open-drain, con pull-up a 3.3 V sul lato camera e a 5 V sul lato del morsetto SYN. Per impostazione predefinita è un ingresso — lo shield abbassa con level-shifting da 0–5 V su SYN a 0–3.3 V su P10. Cambia il jumper a saldare a bordo per trasformare P10 in un’uscita, alzando con level-shifting da 0–3.3 V su P10 a 0–5 V su SYN.

Nota

Ognuno tra P1, P2, P3, P4, P5, P6 e P10 può essere recuperato per altri usi. P1, P3, P4, P5, P6 e P10 sono collegati per impostazione predefinita — P1, P3, P6 e P10 tramite jumper a saldare sul retro, P4 e P5 tramite jumper a saldare sul fronte. Apri il jumper su qualunque pin tu voglia liberare. P2 è scollegato per impostazione predefinita: ponticella il suo jumper sul retro per instradare invece CAN TX su P2 (e apri il jumper sul retro di P1 per liberare P1).

Nota

La suddivisione P1/P2 esiste affinché lo shield funzioni con diverse famiglie di processori. Le schede OpenMV Cam IMXRT (RT1062) possono instradare CAN su P1, quindi usano la mappatura predefinita. Le schede STM32 non possono raggiungere P1 con la loro periferica CAN, quindi ponticella il jumper sul retro di P2 (e apri quello di P1) per usare l’alternativa.

Nota

La terminazione del bus CAN è collegata per impostazione predefinita — suddivisa in due metà da 60 Ω in serie tra CANH e CANL con un condensatore verso massa nel punto medio (una terminazione split a 120 Ω accoppiata in AC). Apri i due pad a saldare per scollegare ciascuna metà in modo indipendente.

Utilizzo

Nota

I numeri di periferica CAN(0) e UART(1) qui sotto seguono la mappatura IMXRT (cablaggio predefinito P1). Su un altro processore il bus collegato a questi pin potrebbe essere diverso — controlla il riferimento della tua scheda.

Invia e ricevi frame CAN-FD — TX su P1 (predefinito) o P2 (alternativo), RX su 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())

Riecheggia i byte su RS-232 su P4 (TX) / P5 (RX):

from machine import UART

uart = UART(1, baudrate=115200)
uart.write("hello\n")
print(uart.read())

Leggi l’ingresso della morsettiera AIN tramite il pin P6 con level-shifting:

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)

Reagisci a un fronte di discesa sulla linea SYN — per esempio, per sincronizzare la camera con un altro dispositivo che porta SYN basso:

from machine import Pin

def on_sync(pin):
    print("SYN falling edge")

syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)