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 (бред, конечно, но вдруг поможет

© Habrahabr.ru