El kit de descubrimiento STM32MP157A-DK1 para el SoC STM32MP157 contiene dos núcleos IP M_CAN de Bosch (uno M_CAN y un MTT_CAN) que admiten CAN FD.
A diferencia del kit de descubrimiento STM32MP157C-DK2, el STM32MP157A-DK1 no proporciona un conector (incluido el transceptor CAN y el conector SUB-D9) para acceder a los controladores CAN M_CAN. Por cierto. el STM32MP157C-DK2 proporciona solo acceso a uno de los dos núcleos CAN IP disponibles.
Para acceder a los dos controladores CAN en el STM32MP157A-DK1 necesitamos...
La configuración final probablemente podría verse así:
Dos transceptores CAN FD pegados a un cable IDE antiguo
De hecho, la wiki de STM es muy buena y está actualizada, por lo que puede seguirla para configurar su sistema y construir su propio kernel de Linux: Instalación del kernel de Linux
Los puntos clave:
Antes de compilar el kernel con el compilador cruzado del SDK, se deben copiar los siguientes 3 parches a los 30 parches existentes en el directorio linux-stm32mp-4.19-r0
:
Estos 3 parches se pueden encontrar en el directorio de parches.
Después de copiar los 3 parches al directorio linux-stm32mp-4.19-r0
simplemente siga los pasos en README.HOW_TO.txt que también se puede encontrar en ese directorio para compilar y finalmente instalar el nuevo kernel en el destino.
La wiki de STM dice: El archivo auxiliar README.HOW_TO.txt es LA referencia para la compilación del kernel de Linux , y tienen razón.
El hardware consta de dos transceptores CAN FD (que también admiten Classic CAN 2.0) y algo de cableado:
Soldé los dos PCB cabeza a cabeza en la parte posterior para manejar solo un PCB y finalmente fijé el PCB con cinta adhesiva de doble cara en el cable IDE después de soldar los pines.
Los pines para conectar para FD_CAN1 :
Función TRX | TRX Chapa | Clavija CN2 | Función CN2 |
---|---|---|---|
TXD | 1 | 03 | FDCAN1_TX |
VSS | 2 | 06 | Tierra |
VDD | 3 | 02 | +5V |
RXD | 4 | 05 | FDCAN1_RX |
VÍO | 5 | 01 | +3V3 |
CAN_L | 6 | - | (CAN_L al pin 2 de SUB-D9) |
CAN_H | 7 | - | (CAN_H al pin 7 de SUB-D9) |
EN ESPERA | 8 | 09 | Tierra |
Los pines para conectar para FD_CAN2 :
Función TRX | TRX Chapa | Clavija CN2 | Función CN2 |
---|---|---|---|
TXD | 1 | 36 | FDCAN2_TX |
VSS | 2 | 20 | Tierra |
VDD | 3 | 04 | +5V |
RXD | 4 | 10 | FDCAN2_RX |
VÍO | 5 | 17 | +3V3 |
CAN_L | 6 | - | (CAN_L al pin 2 de SUB-D9) |
CAN_H | 7 | - | (CAN_H al pin 7 de SUB-D9) |
EN ESPERA | 8 | 14 | Tierra |
Hice un boceto feo antes de soldar mis PCB cara a cara, lo que también muestra un cambio ya que no obtuve el DTS correctamente la primera vez. Sólo se pueden utilizar pines específicos para enrutar las conexiones CAN IP. Consulte los detalles en "Kits de descubrimiento con MPU STM32MP157: manual del usuario" (DevKit-en.DM00591354.pdf páginas 31 y 32).
Función | clavija BGA | clavija CN2 |
---|---|---|
FDCAN1_RX (también I2C5_SCL) | PA11 | 05 |
FDCAN1_TX (también I2C5_SDA) | PA12 | 03 |
FDCAN2_RX (también USART3_RX) | PB12 | 10 |
FDCAN2_TX (también USART3_CTS) | PB13 | 36 |
I2C5 y USART3 ya estaban configurados como "deshabilitados" en el archivo DTS STM32MP157A-DK1 anteriormente. Entonces no tendremos ninguna interferencia en estos pines.
¡Muchas gracias a Alexandre Torgue de STM por el fragmento del árbol de dispositivos M_CAN! Aprendí mucho de este pequeño truco para usar los núcleos IP M_CAN en el STM32MP157A-DK1.
Avíseme si encuentra alguna discrepancia entre la descripción anterior y la foto a continuación. Debería decir lo mismo. Esta descripción ha sido resumida según mi leal saber y entender. Si no está seguro, consulte la documentación de STM. Si no puedes soldar cosas, pregúntale a otra persona. ¡Puede utilizar esta descripción tal como está bajo su propio riesgo!
Oliver Hartkoppp 2020-01-28