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.
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¶
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)