Комплект обнаружения STM32MP157A-DK1 для SoC STM32MP157 содержит два IP-ядра Bosch M_CAN (одно M_CAN и одно MTT_CAN), которые поддерживают CAN FD.
В отличие от комплекта обнаружения STM32MP157C-DK2, STM32MP157A-DK1 не имеет разъема (включая приемопередатчик CAN и разъем SUB-D9) для доступа к CAN-контроллерам M_CAN. Кстати. STM32MP157C-DK2 обеспечивает доступ только к одному из двух доступных ядер CAN IP.
Чтобы получить доступ к двум CAN-контроллерам на STM32MP157A-DK1, нам нужно...
Окончательная настройка, вероятно, может выглядеть так:
Два трансивера CAN FD, подключенные к старому кабелю IDE.
На самом деле вики-сайт STM очень хорош и актуален, поэтому его можно использовать для настройки вашей системы для создания собственного ядра Linux: Установка ядра Linux
Ключевые моменты:
Перед компиляцией ядра кросс-компилятором из SDK необходимо скопировать следующие 3 патча в существующие 30 патчей в каталоге linux-stm32mp-4.19-r0
:
Эти 3 патча можно найти в каталоге patches.
После копирования трех патчей в каталог linux-stm32mp-4.19-r0
просто следуйте инструкциям в README.HOW_TO.txt, который также можно найти в этом каталоге, чтобы собрать и, наконец, установить новое ядро на целевой системе.
Вики-страница STM утверждает: Вспомогательный файл README.HOW_TO.txt является ссылкой на сборку ядра Linux — и они правы.
Аппаратное обеспечение состоит из двух трансиверов CAN FD (которые также поддерживают Classic CAN 2.0) и некоторых кабелей:
Я спаял две платы друг к другу сзади, чтобы можно было держать только одну плату, и, наконец, закрепил плату двусторонней клейкой лентой на кабеле IDE после пайки контактов.
Контакты для подключения FD_CAN1 :
Функция TRX | TRX-контакт | Контакт CN2 | Функция CN2 |
---|---|---|---|
TXD | 1 | 03 | FDCAN1_TX |
ВСС | 2 | 06 | Земля |
ВДД | 3 | 02 | +5В |
прием | 4 | 05 | FDCAN1_RX |
ВИО | 5 | 01 | +3V3 |
CAN_L | 6 | - | (CAN_L к контакту 2 SUB-D9) |
CAN_H | 7 | - | (CAN_H к контакту 7 SUB-D9) |
ОЖИДАНО | 8 | 09 | Земля |
Контакты для подключения FD_CAN2 :
Функция TRX | TRX контактный | Контакт CN2 | Функция CN2 |
---|---|---|---|
TXD | 1 | 36 | FDCAN2_TX |
ВСС | 2 | 20 | Земля |
ВДД | 3 | 04 | +5В |
прием | 4 | 10 | FDCAN2_RX |
ВИО | 5 | 17 | +3V3 |
CAN_L | 6 | - | (CAN_L к контакту 2 SUB-D9) |
CAN_H | 7 | - | (CAN_H к контакту 7 SUB-D9) |
ОЖИДАНО | 8 | 14 | Земля |
Перед пайкой печатных плат я сделал уродливый эскиз, который также показывает изменения, поскольку с первого раза я не правильно понял DTS. Для маршрутизации соединений CAN IP можно использовать только определенные контакты. Подробности см. в «Наборах Discovery с микропроцессорами STM32MP157 — Руководство пользователя» (DevKit-en.DM00591354.pdf, стр. 31 и 32).
Функция | BGA-контакт | контакт CN2 |
---|---|---|
FDCAN1_RX (также I2C5_SCL) | ПА11 | 05 |
FDCAN1_TX (также I2C5_SDA) | ПА12 | 03 |
FDCAN2_RX (также USART3_RX) | ПБ12 | 10 |
FDCAN2_TX (также USART3_CTS) | ПБ13 | 36 |
I2C5 и USART3 уже были отключены в файле STM32MP157A-DK1 DTS ранее. Таким образом, у нас не будет никаких помех на этих контактах.
Большое спасибо Александру Торгу из STM за фрагмент дерева устройств M_CAN! Благодаря этому небольшому хаку я многому научился по использованию IP-ядер M_CAN на STM32MP157A-DK1.
Пожалуйста, дайте мне знать, если вы обнаружите какое-либо несоответствие между описанием выше и фотографией ниже. Оно должно сказать то же самое. Это описание было обобщено, насколько мне известно. Если вы не уверены, пожалуйста, проверьте документацию STM. Если вы не умеете паять, попросите кого-нибудь другого. Вы можете использовать это описание как есть на свой страх и риск!
Оливер Харткоппп 28 января 2020 г.