Le kit de découverte STM32MP157A-DK1 pour le SoC STM32MP157 contient deux cœurs IP Bosch M_CAN (un M_CAN et un MTT_CAN) qui prennent en charge CAN FD.
Contrairement au kit de découverte STM32MP157C-DK2, le STM32MP157A-DK1 ne fournit pas de connecteur (y compris l'émetteur-récepteur CAN et le connecteur SUB-D9) pour accéder aux contrôleurs CAN M_CAN. D'ailleurs. le STM32MP157C-DK2 fournit uniquement l'accès à l'un des deux cœurs CAN IP disponibles.
Pour accéder aux deux contrôleurs CAN du STM32MP157A-DK1, nous devons...
La configuration finale pourrait probablement ressembler à ceci :
Deux émetteurs-récepteurs CAN FD collés sur un vieux câble IDE
En fait, le wiki STM est très bon et à jour, vous pouvez donc le suivre pour configurer votre système afin de créer votre propre noyau Linux : Installer le noyau Linux
Les points clés :
Avant de compiler le noyau avec le compilateur croisé du SDK, les 3 correctifs suivants doivent être copiés dans les 30 correctifs existants dans le répertoire linux-stm32mp-4.19-r0
:
Ces 3 patchs se trouvent dans le répertoire des patches.
Après avoir copié les 3 correctifs dans le répertoire linux-stm32mp-4.19-r0
suivez simplement les étapes du README.HOW_TO.txt qui se trouve également dans ce répertoire pour construire et enfin installer le nouveau noyau sur la cible.
Le wiki STM indique : Le fichier d'assistance README.HOW_TO.txt est LA référence pour la construction du noyau Linux - et ils ont raison.
Le matériel se compose de deux émetteurs-récepteurs CAN FD (qui prennent également en charge Classic CAN 2.0) et de quelques câbles :
J'ai soudé les deux PCB tête-à-tête à l'arrière pour ne gérer qu'un seul PCB et j'ai finalement fixé le PCB avec du ruban adhésif double face sur le câble IDE après avoir soudé les broches.
Les pins à connecter pour FD_CAN1 :
Fonction TRX | Broche TRX | Broche CN2 | Fonction CN2 |
---|---|---|---|
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 à SUB-D9 broche 2) |
CAN_H | 7 | - | (CAN_H à SUB-D9 broche 7) |
STBY | 8 | 09 | GND |
Les pins à connecter pour FD_CAN2 :
Fonction TRX | Broche TRX | Broche CN2 | Fonction CN2 |
---|---|---|---|
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 à SUB-D9 broche 2) |
CAN_H | 7 | - | (CAN_H à SUB-D9 broche 7) |
STBY | 8 | 14 | GND |
J'ai fait un vilain croquis avant de souder mes PCB tête-à-tête, ce qui représente également un changement car je n'ai pas réussi le DTS du premier coup. Seules des broches spécifiques peuvent être utilisées pour acheminer les connexions CAN IP. Voir les détails dans « Kits de découverte avec MPU STM32MP157 - Manuel d'utilisation » (DevKit-en.DM00591354.pdf pages 31 et 32).
Fonction | Broche BGA | Broche CN2 |
---|---|---|
FDCAN1_RX (également I2C5_SCL) | PA11 | 05 |
FDCAN1_TX (également I2C5_SDA) | PA12 | 03 |
FDCAN2_RX (également USART3_RX) | PB12 | 10 |
FDCAN2_TX (également USART3_CTS) | PB13 | 36 |
I2C5 et USART3 étaient déjà tous deux définis sur "désactivé" dans le fichier DTS STM32MP157A-DK1 auparavant. Nous n'aurons donc aucune interférence sur ces broches.
Un grand merci à Alexandre Torgue de STM pour l'extrait d'arborescence des appareils M_CAN ! J'ai beaucoup appris de ce petit hack pour utiliser les cœurs IP M_CAN sur le STM32MP157A-DK1.
S'il vous plaît laissez-moi savoir si vous constatez une inadéquation entre la description ci-dessus et la photo ci-dessous. Cela devrait dire la même chose. Cette description a été résumée au mieux de ma connaissance. Si vous n'êtes pas sûr, veuillez vérifier avec la documentation STM. Si vous ne pouvez pas souder des choses, demandez à quelqu'un d'autre. Vous pouvez utiliser cette description telle quelle à vos propres risques !
Oliver Hartkoppp 2020-01-28