Съдържание:

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 μF кондензатор
  • 1x 120Ω резистор
  • 1x 1kΩ резистор
  • 1+ четлив вход (бутон, превключвател, потенциометър и т.н.) или изход (LED, MOSFET и др.)
  • 1x Dsub9 конектор

Стъпка 1: Трансиверната верига

Схемата на трансивъра
Схемата на трансивъра

За да комуникираме с CAN шината, ще използваме IC трансивър IC CCP. 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 комуникатор, IC чипът MCP2515 ще бъде необходим за преобразуване на други протоколи за съобщения в CAN.
  • ПИНът CANL трябва да бъде свързан към другите CANL щифтове на другите възли на шината. Същото важи и за щифтовете CANH.
  • Резисторът от 120Ω през CANH и CANL пиновете е необходим само ако възелът е терминален възел. Това означава, че той е в края на окабеляването за паралелно свързване. С други думи, CAN шината трябва да има само два 120Ω резистора и те трябва да са възможно най -далеч един от друг.
  • И накрая, 1kΩ резисторът на RS (щифт 8) може да бъде заменен с 10kΩ резистор, за да контролира нарастващото/спадащото време на CAN съобщенията. Вижте листа с данни за чип MCP2551 за повече подробности.

Стъпка 2: Четене и запис на CAN шината

Четене и писане в CAN шината
Четене и писане в CAN шината

Сега, когато трансивърната верига е свързана към STM32, можем да започнем да пишем съобщения към CAN шината. Това ръководство няма да навлиза задълбочено в кода на STM32. Не забравяйте обаче да разгледате нашия код за примери тук. Използването на STM32 като CAN възел ще изисква CAN заглавен файл. Написахме наши, които можете да намерите на нашия github тук. Тук ще дадем кратък преглед на процеса на четене/запис.

За да четем от CAN шината, първо трябва да знаем ID на CAN съобщението. Всяко съобщение трябва да има уникален идентификатор, като по -ниските идентификатори имат по -висок приоритет. Показаният тук кодов фрагмент чака CAN съобщение с ID 0x622. В нашата система, ако първият бит от 6 -ия байт е висок, тогава искаме да зададем пин A10 висок.

Когато пишем CAN съобщение, трябва да помним, че CAN съобщенията са многобайтови. Всяко писмено съобщение трябва да има идентификатор и дължина. Във втория показан фрагмент от код записваме данни към всеки байт, след което изпращаме съобщението (ИД и параметрите на дължината са дефинирани по -рано в кода).

Стъпка 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 нашите нови печатни платки за нашия състезателен автомобил със слънчева енергия. Ние направихме поръчката си в петък и получихме дъските в сряда!

Препоръчано: