
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Шина сети контроллеров, или 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

Теперь, когда схема трансивера подключена к 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 предлагает быстрое и качественное обслуживание по очень разумным ценам. Получите 5 досок любого цвета с множеством настроек всего за 2 доллара! А если это ваш первый заказ, получите 10 досок по той же цене!
Просто загрузите свои герберы и получите мгновенную расценку! Отправьте свой заказ, и ваши доски будут проверены на предмет производства в течение часа. После оплаты вы можете рассчитывать на получение высококачественных досок уже через три дня!
Посмотри здесь
Шаг 7: Получите свои доски

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

Аналоговый интерфейс для осциллографа: дома у меня есть несколько дешевых звуковых USB-карт, которые можно купить на Banggood, Aliexpress, Ebay или в других глобальных интернет-магазинах за несколько долларов. Мне было интересно, для чего их можно использовать, и я решил попробовать сделать низкочастотный прицел для ПК с
Jammarduino DUE - интерфейс DIY PC и Jamma для игровых шкафов: 6 шагов

Jammarduino DUE - DIY PC to Jamma Interface для аркадных шкафов: в этой инструкции вы узнаете, как создать простой экран для Arduino DUE, чтобы подключить настоящий аркадный автомат с ЭЛТ низкого разрешения и разъемом jamma к вашему ПК. для усиления видеосигнала, исходящего от видео
Интерфейс Arduino Mega с модулем GPS (Neo-6M): 8 шагов

Интерфейс Arduino Mega с модулем GPS (Neo-6M). В этом проекте я показал, как подключить модуль GPS (Neo-6M) к Arduino Mega. Библиотека TinyGPS используется для отображения данных долготы и широты, а TinyGPS ++ используется для отображения широты, долготы, высоты, скорости и количества спутников
Начало работы с интерфейсом датчика I2C ?? - Интерфейс вашего MMA8451 с использованием ESP32: 8 шагов

Начало работы с интерфейсом датчика I2C ?? - Интерфейс вашего MMA8451 с использованием ESP32: в этом руководстве вы узнаете все о том, как запустить, подключить и получить устройство I2C (акселерометр), работающее с контроллером (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Модель железной дороги, управляемая клавиатурой V2.5 - Интерфейс PS / 2: 12 шагов

Модель железной дороги, управляемая клавиатурой V2.5 | Интерфейс PS / 2: с помощью микроконтроллеров Arduino существует множество способов управления макетами макетов железных дорог. У клавиатуры есть большое преимущество в том, что у нее есть много клавиш для добавления множества функций. Здесь давайте посмотрим, как мы можем начать с простой схемы с локомотивом и