Оглавление:

Интерфейс STM32 CAN: 7 шагов
Интерфейс STM32 CAN: 7 шагов

Видео: Интерфейс STM32 CAN: 7 шагов

Видео: Интерфейс STM32 CAN: 7 шагов
Видео: STM32 настройка CAN 2024, Ноябрь
Anonim
STM32 CAN интерфейс
STM32 CAN интерфейс

Шина сети контроллеров, или CAN-шина, является очень эффективным протоколом связи благодаря своим высокоскоростным возможностям, надежности на больших расстояниях и помехоустойчивости. По этим причинам CAN-связь стала стандартом в автомобильных технологиях и средах с высоким уровнем шума. Устройства на шине CAN называются узлами. Все узлы на шине CAN подключены параллельно, что означает, что каждый узел подключен ко всем другим узлам в сети. Одна шина CAN может иметь до 115 узлов одновременно, в зависимости от скорости передачи сообщений, но для большинства приложений рекомендуется иметь до 32 устройств. Также рекомендуется, чтобы расстояние между первым и последним узлами не превышало 40 метров.

Это пошаговое руководство покажет вам, как настроить узел CAN с помощью микроконтроллера STM32, включая схему и простой код C для чтения и записи на шину CAN.

Запасы

Для каждого узла CAN:

  • 1x коммутационная плата STM32 (Nucleo, Blue Pill, другие)
  • 1x MCP2551 CAN трансивер IC
  • 1x 0,1 мкФ конденсатор
  • 1x резистор 120 Ом
  • 1x резистор 1 кОм
  • 1+ читаемый вход (кнопка, переключатель, потенциометр и т. Д.) Или выход (светодиод, полевой МОП-транзистор и т. Д.)
  • 1x разъем Dsub9

Шаг 1: Схема приемопередатчика

Схема приемопередатчика
Схема приемопередатчика

Для связи с шиной CAN мы будем использовать ИС трансивера CAN MCP2551. IC действует как промежуточная пара передатчик / приемник для подключения STM32 к шине CAN. Схема для настройки этой ИС довольно проста, но следует отметить несколько моментов:

  • CAN_RX (контакт 4) и CAN_TX (контакт 1) на микросхеме MCP2551 могут подключаться только к определенным контактам на STM32.

    • На STM32F1 Nucleo подключите линию RX к контакту PB8, а линию TX - к контакту PB9.
    • На синей таблетке STM32F1 подключите RX к контакту PA11 и TX к контакту PA12.
    • Обратите внимание, что у этих назначений контактов есть альтернативы. Обратитесь к руководству по микроконтроллеру, чтобы определить, какие выводы поддерживают CAN_RD и CAN_TD.
    • При использовании Arduino или платы без встроенного коммуникатора CAN потребуется микросхема MCP2515 IC для преобразования других протоколов сообщений в CAN.
  • Вывод CANL должен быть подключен к другим выводам CANL других узлов шины. То же самое и с выводами CANH.
  • Резистор 120 Ом на выводах CANH и CANL требуется только в том случае, если узел является оконечным. Это означает, что он находится в конце проводки параллельного подключения. Другими словами, в шине CAN должно быть только два резистора 120 Ом, и они должны быть расположены как можно дальше друг от друга.
  • Наконец, резистор 1 кОм на RS (вывод 8) можно заменить на резистор 10 кОм для управления временем нарастания / спада битов сообщения CAN. Обратитесь к таблице данных микросхемы MCP2551 для получения более подробной информации.

Шаг 2: чтение и запись в шину CAN

Чтение и запись в шину CAN
Чтение и запись в шину CAN

Теперь, когда схема трансивера подключена к STM32, мы можем начать запись сообщений на шину CAN. Это подробное руководство не будет углубляться в код STM32. Однако не забудьте ознакомиться с примерами в нашем коде здесь. Для использования STM32 в качестве узла CAN потребуется файл заголовка CAN. Мы написали свой собственный, который можно найти здесь на нашем гитхабе. Здесь мы дадим краткий обзор процесса чтения / записи.

Чтобы читать с CAN-шины, нам сначала нужно знать идентификатор CAN-сообщения. Каждое сообщение должно иметь уникальный идентификатор, при этом более низкие идентификаторы имеют более высокий приоритет. Показанный здесь фрагмент кода ожидает сообщения CAN с идентификатором 0x622. В нашей системе, если первый бит 6-го байта высокий, мы хотим установить высокий уровень на выводе A10.

При написании сообщения CAN мы должны помнить, что сообщения CAN многобайтовые. Каждое письменное сообщение должно иметь идентификатор и длину. Во втором показанном фрагменте кода мы записываем данные в каждый байт, а затем отправляем сообщение (параметры ID и длины определены ранее в коде).

Шаг 3: Подключение узлов

Подключение узлов
Подключение узлов

При подключении нескольких узлов CAN особое внимание следует уделять длине кабелей. Два самых дальних узла могут находиться на расстоянии до 40 м друг от друга. Средние узлы, соединяющиеся с автобусом, должны находиться в пределах 50 см от основных автобусных линий.

Соединения CAN соответствуют промышленному стандарту использования разъема Dsub9 с линией CANL на контакте 2 и линией CANH на контакте 7. Линия опции CANGND может подключаться к контакту 3.

Шаг 4: Сделайте печатную плату

Сделайте печатную плату
Сделайте печатную плату

При маршрутизации сигналов CAN на печатной плате помните, что CAN - это дифференциальный сигнал, и поэтому необходимо тщательно соблюдать правила маршрутизации для CANH и CANL.

Шаг 5: Расширение доски

Расширение Правления
Расширение Правления

Соберите еще несколько узлов, добавьте несколько входов / выходов и подключите все их выводы CANH и CANL. Обратите внимание, что для каждого STM32 или другого микроконтроллера требуется собственная микросхема MCP2551; ими нельзя делиться.

С учетом сказанного, старайтесь, чтобы ваши печатные платы были меньше, чем показано здесь.

Шаг 6: закажите печатные платы в JLCPCB

Закажите свои печатные платы в JLCPCB
Закажите свои печатные платы в JLCPCB

JLCPCB предлагает быстрое и качественное обслуживание по очень разумным ценам. Получите 5 досок любого цвета с множеством настроек всего за 2 доллара! А если это ваш первый заказ, получите 10 досок по той же цене!

Просто загрузите свои герберы и получите мгновенную расценку! Отправьте свой заказ, и ваши доски будут проверены на предмет производства в течение часа. После оплаты вы можете рассчитывать на получение высококачественных досок уже через три дня!

Посмотри здесь

Шаг 7: Получите свои доски

Получите свои доски!
Получите свои доски!

Огромный привет JLCPCB за спонсорство этого проекта. JLCPCB (ShenzhenJLC Electronics Co., Ltd.) - крупнейшее предприятие по производству прототипов печатных плат в Китае и высокотехнологичный производитель, специализирующийся на быстром прототипировании печатных плат и мелкосерийном производстве печатных плат. Они были достаточно любезны, чтобы предоставить UBC Solar наши новые печатные платы для нашего гоночного автомобиля на солнечной энергии. Мы разместили заказ в пятницу и получили доски в среду!

Рекомендуемые: