CAN/RS232 Shield

Das CAN/RS232 Shield kombiniert einen CAN-FD-Transceiver mit einem RS-232-Transceiver, sodass die OpenMV Cam von einem einzigen Shield aus mit Fahrzeugen, Steuergeräten und älterer serieller Hardware kommunizieren kann — mit Weitbereichs-Stromversorgung und Verpolungsschutz.

CAN/RS232 Shield

Vollständiges Datenblatt, Fotos und Bestellinformationen finden Sie auf der Produktseite des CAN/RS232 Shield.

Highlights

  • 8 Mb/s CAN-FD mit bordeigener Terminierung und Filterung

  • 1 Mb/s RS-232 mit integrierter Filterung

  • 6-36-V-Eingang, verpolungstolerant

  • 0-5-V-ADC-Eingang mit ±36-V-Überspannungsschutz

  • 0-5-V-Digital-I/O für Kamera-Synchronisationstrigger, kurzschlussfest

Pinout

CAN/RS232 Shield Pinout

Pin-Referenz

Pin

Funktion

P1

CAN TX → Transceiver-Eingang (Standard)

P2

CAN TX → Transceiver-Eingang (Alternative)

P3

CAN RX ← Transceiver-Ausgang

P4

RS-232 TX → treibt die Leitung nach außen

P5

RS-232 RX ← empfängt die eingehende Leitung

P6

Pegelumgesetzte AIN-Rücklesung (0–3,3 V an P6)

P10

SYN — Open-Drain-Digital-I/O am Klemmenblock

PWR in

6–36-V-Weitbereichseingang am Klemmenblock (verpolungstolerant)

AIN in

Analogeingang am Klemmenblock

VIN out

5,4 V bei bis zu 600 mA vom bordeigenen Regler

3,3-V-Schiene

Versorgt die bordeigene Elektronik des Shields

GND-Schiene

Gemeinsame Masse

Bemerkung

AIN ist bis ±36 V überspannungsgeschützt und ist standardmäßig ein 0–5-V-Spannungseingang, der auf 0–3,3 V an P6 herunterskaliert wird. Überbrücken Sie den 4–20-mA-Modus-Shunt auf der Vorderseite des Shields, um AIN auf einen 4–20-mA-Stromschleifen-Eingang umzustellen.

Bemerkung

SYN ist eine Open-Drain-Digitalleitung, auf der Kameraseite auf 3,3 V und auf der SYN-Klemmenseite auf 5 V hochgezogen. Standardmäßig ist sie ein Eingang — das Shield setzt 0–5 V an SYN auf 0–3,3 V an P10 herunter. Ändern Sie den bordeigenen Lötjumper, um P10 in einen Ausgang umzuschalten, der 0–3,3 V an P10 auf 0–5 V an SYN hochsetzt.

Bemerkung

Jeder der Pins P1, P2, P3, P4, P5, P6 und P10 kann für eine andere Verwendung zurückgewonnen werden. P1, P3, P4, P5, P6 und P10 sind standardmäßig verbunden — P1, P3, P6 und P10 über rückseitige Lötjumper, P4 und P5 über vorderseitige Lötjumper. Öffnen Sie den Jumper an jedem Pin, den Sie freigeben möchten. P2 ist standardmäßig getrennt: Überbrücken Sie seinen rückseitigen Jumper, um CAN TX stattdessen auf P2 zu leiten (und öffnen Sie den rückseitigen Jumper von P1, um P1 freizugeben).

Bemerkung

Die P1/P2-Aufteilung existiert, damit das Shield über Prozessorfamilien hinweg funktioniert. Die OpenMV Cam IMXRT-Boards (RT1062) können CAN auf P1 leiten und verwenden daher die Standardzuordnung. STM32-Boards können P1 mit ihrem CAN-Peripheriegerät nicht erreichen, überbrücken Sie also den rückseitigen Jumper von P2 (und öffnen Sie den von P1), um die Alternative zu verwenden.

Bemerkung

Die CAN-Bus-Terminierung ist standardmäßig verbunden — aufgeteilt in zwei in Reihe geschaltete 60-Ω-Hälften zwischen CANH und CANL mit einem Kondensator gegen Masse am Mittelpunkt (eine 120-Ω-AC-gekoppelte Split-Terminierung). Öffnen Sie die beiden Lötpads, um jede Hälfte unabhängig zu trennen.

Verwendung

Bemerkung

Die Peripheriegerätenummern CAN(0) und UART(1) unten folgen der IMXRT-Zuordnung (Standard-P1-Verdrahtung). Auf einem anderen Prozessor kann der an diese Pins verdrahtete Bus ein anderer sein — prüfen Sie die Referenz Ihres Boards.

Senden und empfangen Sie CAN-FD-Frames — TX an P1 (Standard) oder P2 (Alternative), RX an 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())

Echo von Bytes über RS-232 an P4 (TX) / P5 (RX):

from machine import UART

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

Lesen Sie den AIN-Klemmenblock-Eingang über den pegelumgesetzten Pin P6:

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)

Reagieren Sie auf eine fallende Flanke an der SYN-Leitung — zum Beispiel, um die Kamera mit einem anderen Gerät zu synchronisieren, das SYN auf low zieht:

from machine import Pin

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

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