STM32, CMSIS, CAN, Часть 1 — передача

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Введение

Привет, сегодня мы будем настраивать отправку данных с помощью CAN (Controller Area Network). В интернете много информации о том, как настроить CAN использую HAL библиотеку, а в случае использования CMSIS информация обрывочна, по этой причине решил рассказать о своем опыте работы.

Принцип работы CAN-сети в этой статье разбирать не будем т.к. на просторах интернета существует большой объем материла (особенно мне нравится как написано тут) на эту тему, но по ходу повествования будем останавливаться на некоторых нюансах.

Ставим себе задачу: заставить контроллер периодически отправлять кадры в CAN-сеть с скоростью передачи 250 кБит/с, со стандартной длиной идентификатора (11 бит) с полем данных размеров 8 байт.

Оборудование и ПО

Использовать будем микроконтроллер STM32F103C8T6 на отладочной плате, называемой в народе "Blue Pill" (рис. 1а). Также нам понадобится два приемопередачика (ПП) (по англицки "transceiver") для CAN-шины. Я использую 2 готовые платы с SN65HVD230 на борту (рис. 1б). На рис. 1в представлена схема этой платы . Для написания прошивки я буду использовать Keil uVision v5. Отладку и демонстрацию работы будем производить с помощью осциллографа и логического анализатора.

Рис. 1 – а) Отладочная плата Blue Pill; б) Плата ПП; в) Эл. схема платы ПП.
Рис. 1 – а) Отладочная плата Blue Pill; б) Плата ПП; в) Эл. схема платы ПП.

Соберем, не побоюсь этого слова, испытательный стенд. Соединяем выводы ПП с выводами Blue Pill:

CAN TX -> PA12

СAN RX -> PA11

Соединяем выводы ПП CAN_H и CAN_L между собой. Далее соединяем линии питания. В итоге должно получиться что-то подобное схеме на рис. 2. Желтый провод идет к входу логического анализатора.

Рис. 2 – Схема соединения блоков и фотография стенда
Рис. 2 – Схема соединения блоков и фотография стенда

Встраиваемое ПО

Напишем встраиваемое программное обеспечение для МК. Открываем Keil (или другую удобную для вас среду разработки: IAR, Eclipse/CubeIDE и др., главное, чтобы был установлен CMSIS), создаем проект и настраиваем для работы с нашей «Blue Pill». Если у Вас это вызывает затруднения, то в помощь статья.

Рис. 3 – Периферия, соединенная с шиной APB1
Рис. 3 – Периферия, соединенная с шиной APB1

Настроем систему тактирования. Смотрим в тех. спецификацию (datasheet) (рис. 3). Будем использовать высокоскоростной внутренний тактовый генератор (HSI). Причины почему именно его нет, да и это не является темой статьи. Главное, настроить так чтобы на шине APB1 была частота 36 МГц. Если все же интересно как настраивать систему тактирования, то можно ввести в поисковике «stm32 cmsis rcc», в интернете информации огромное количество, или почитать Reference Manual (бред, конечно, но вдруг поможет

Источник: https://habr.com/ru/post/598505/


Интересные статьи

Интересные статьи

Часть 1. Вступление … Часть 5. Функции Часть 6. Специфика Google … Эта статья является переводом части руководства Google по стилю в C++ на русский язык. Исходная статья (fork на github), об...
Предлагаю ознакомиться с ранее размещенными материалами по проекту Starlink (SL): Часть 1. Рождение проекта ‣ Часть 2. Сеть SL ‣ Часть 3. Наземный комплекс ‣ Часть 4. Абонентский те...
Привет, Хабр. Сегодня я продолжаю серию публикаций, которую написал специально к старту нового потока курса «Software Architect». Введение Выбор архитектурного стиля является о...
Введение Здравствуйте дорогие Хабровчане. Я продолжаю свой цикл статей о продвинутой авторизации действий с ресурсами в Laravel. Чтобы лучше понимать о чем пойдет речь этой статье — необходимо ...
⇨ Первая часть И снова здравствуйте! Как вы могли заметить, праздники несколько подкосили график выхода статей. Думаю, многие за это время успели если не полностью обучить свою модель, то...