Das STM32MP157A-DK1 Discovery Kit für den STM32MP157 SoC enthält zwei Bosch M_CAN IP-Kerne (einen M_CAN und einen MTT_CAN), die CAN FD unterstützen.
Im Gegensatz zum STM32MP157C-DK2 Discovery Kit bietet das STM32MP157A-DK1 keinen Anschluss (einschließlich CAN-Transceiver und SUB-D9-Anschluss) für den Zugriff auf die M_CAN CAN-Controller. Übrigens. Der STM32MP157C-DK2 bietet nur den Zugriff auf einen der beiden verfügbaren CAN-IP-Cores.
Um auf die beiden CAN-Controller auf dem STM32MP157A-DK1 zuzugreifen, müssen wir ...
Das endgültige Setup könnte wahrscheinlich so aussehen:
Zwei CAN-FD-Transceiver stecken auf einem alten IDE-Kabel
Tatsächlich ist das STM-Wiki sehr gut und aktuell, sodass Sie es befolgen können, um Ihr System zum Erstellen Ihres eigenen Linux-Kernels einzurichten: Installieren des Linux-Kernels
Die wichtigsten Punkte:
Vor dem Kompilieren des Kernels mit dem Cross-Compiler aus dem SDK müssen die folgenden 3 Patches in die vorhandenen 30 Patches im Verzeichnis linux-stm32mp-4.19-r0
kopiert werden:
Diese 3 Patches finden Sie im Patches-Verzeichnis.
Nachdem Sie die 3 Patches in das Verzeichnis linux-stm32mp-4.19-r0
kopiert haben, befolgen Sie einfach die Schritte in der Datei README.HOW_TO.txt, die sich auch in diesem Verzeichnis befindet, um den neuen Kernel zu erstellen und schließlich auf dem Ziel zu installieren .
Im STM-Wiki heißt es: Die Hilfsdatei README.HOW_TO.txt ist DIE Referenz für den Linux-Kernel-Build – und sie haben Recht.
Die Hardware besteht aus zwei CAN-FD-Transceivern (die auch Classic CAN 2.0 unterstützen) und einigen Kabeln:
Ich habe die beiden Platinen Kopf an Kopf auf der Rückseite verlötet, um nur eine Platine zu handhaben, und die Platine schließlich nach dem Verlöten der Pins mit etwas doppelseitigem Klebeband am IDE-Kabel befestigt.
Die für FD_CAN1 anzuschließenden Pins:
TRX-Funktion | TRX-Pin | CN2-Pin | CN2-Funktion |
---|---|---|---|
TXD | 1 | 03 | FDCAN1_TX |
VSS | 2 | 06 | GND |
VDD | 3 | 02 | +5V |
RXD | 4 | 05 | FDCAN1_RX |
VIO | 5 | 01 | +3V3 |
CAN_L | 6 | - | (CAN_L an SUB-D9 Pin 2) |
CAN_H | 7 | - | (CAN_H an SUB-D9 Pin 7) |
STBY | 8 | 09 | GND |
Die für FD_CAN2 anzuschließenden Pins:
TRX-Funktion | TRX-Pin | CN2-Pin | CN2-Funktion |
---|---|---|---|
TXD | 1 | 36 | FDCAN2_TX |
VSS | 2 | 20 | GND |
VDD | 3 | 04 | +5V |
RXD | 4 | 10 | FDCAN2_RX |
VIO | 5 | 17 | +3V3 |
CAN_L | 6 | - | (CAN_L an SUB-D9 Pin 2) |
CAN_H | 7 | - | (CAN_H an SUB-D9 Pin 7) |
STBY | 8 | 14 | GND |
Ich habe vor dem Löten meiner Kopf-an-Kopf-Leiterplatten eine hässliche Skizze angefertigt, die auch eine Änderung darstellt, da ich das DTS beim ersten Mal nicht richtig hinbekommen habe. Für das Routing der CAN-IP-Verbindungen können nur bestimmte Pins verwendet werden. Einzelheiten finden Sie in „Discovery Kits mit STM32MP157 MPUs – Benutzerhandbuch“ (DevKit-en.DM00591354.pdf Seite 31 und 32).
Funktion | BGA-Pin | CN2-Pin |
---|---|---|
FDCAN1_RX (auch I2C5_SCL) | PA11 | 05 |
FDCAN1_TX (auch I2C5_SDA) | PA12 | 03 |
FDCAN2_RX (auch USART3_RX) | PB12 | 10 |
FDCAN2_TX (auch USART3_CTS) | PB13 | 36 |
I2C5 und USART3 waren bereits zuvor in der DTS-Datei STM32MP157A-DK1 beide auf „disabled“ gesetzt. Es kommt also zu keiner Beeinträchtigung dieser Pins.
Vielen Dank an Alexandre Torgue von STM für den M_CAN-Gerätebaum-Ausschnitt! Ich habe aus diesem kleinen Hack viel gelernt, um die M_CAN IP-Cores auf dem STM32MP157A-DK1 zu verwenden.
Bitte teilen Sie mir mit, wenn Sie eine Abweichung zwischen der Beschreibung oben und dem Foto unten feststellen. Es sollte dasselbe sagen. Diese Beschreibung wurde nach meinem besten Wissen zusammengefasst. Wenn Sie sich nicht sicher sind, schauen Sie bitte noch einmal in der STM-Dokumentation nach. Wenn Sie Dinge nicht löten können, fragen Sie jemand anderen. Sie können diese Beschreibung unverändert auf eigenes Risiko verwenden!
Oliver Hartkopp 28.01.2020