Перейти к содержанию

FDCAN (контроллер CAN FD в STM32)

В старых STM32 был контроллер bxCAN только для классического CAN. В новых семействах его место занял FDCAN — контроллер, который понимает и классические кадры, и кадры CAN FD с полем данных до 64 байт и второй скоростью.

Обновлено Редакция GAW

FDCAN (controller area network with flexible data rate) — контроллер CAN в микроконтроллерах STM32, который поддерживает и классический CAN, и CAN FD. По RM0433 (разд. 56.1) модули соответствуют ISO 11898-1:2015 и спецификации CAN FD 1.0, а в кадрах CAN FD передают до 64 байт данных. FDCAN стоит в STM32H7, G0, G4 и других новых семействах на месте прежнего CAN-контроллера bxCAN.

Устройство в STM32H743

ЧастьЧто делает
FDCAN1, FDCAN2два модуля; FDCAN1 ещё поддерживает TTCAN (ISO 11898-4)
Message RAM, 10 КБобщая память: фильтры, приёмные FIFO и буферы, буферы передачи, FIFO событий передачи
Блок калибровкиможет формировать такт FDCAN из HSI и PLL по сообщениям, принятым FDCAN1

Message RAM программа размечает сама: сколько элементов отдать каждому фильтру, FIFO и буферу. Возможности по RM0433: два приёмных FIFO, до 64 выделенных приёмных буферов, до 32 буферов передачи, FIFO или очередь передачи, петлевой тест, журнал ошибок.

Включение CAN FD

  • FDOE в FDCAN_CCCR разрешает кадры CAN FD; без него принятый кадр CAN FD вызывает кадр ошибки.
  • BRSE разрешает переключение скорости внутри кадра.
  • Номинальную скорость задают в FDCAN_NBTP, скорость фазы данных — в FDCAN_DBTP.
  • DLC 9–15 означает 12, 16, 20, 24, 32, 48 и 64 байта (табл. 489).

Скорость фазы данных ограничена тактом ядра: минимальный бит — 4 кванта, и при 20 МГц предел 5 Мбит/с. Параметры бита считают в калькуляторе битового тайминга CAN, а к линии FDCAN подключают через трансивер с поддержкой нужной скорости.

Частые вопросы

Чем FDCAN отличается от bxCAN в STM32?

bxCAN поддерживает только классический CAN с полем данных до 8 байт. FDCAN понимает и классические кадры, и CAN FD: до 64 байт данных и вторую, более высокую скорость в фазе данных. Устроен он иначе: фильтры, FIFO и буферы лежат в общей памяти сообщений Message RAM, которую программа размечает сама, — у STM32H743 это 10 КБ на два модуля.

Как включить CAN FD в FDCAN?

Установить бит FDOE в регистре FDCAN_CCCR, а для второй скорости ещё BRSE, — это делают в режиме инициализации, когда установлены INIT и CCE. Затем задать номинальную скорость в FDCAN_NBTP и скорость фазы данных в FDCAN_DBTP. В буфере передачи для каждого кадра отмечают FDF (формат CAN FD) и BRS (переключение скорости).

Какую скорость фазы данных может дать FDCAN?

Она ограничена тактом ядра FDCAN: минимальный бит — 4 кванта, поэтому при такте 20 МГц предел 5 Мбит/с (пример RM0433). На практике её ограничивают ещё трансивер и длина линии. Подобрать параметры бита помогает калькулятор битового тайминга CAN.

Источники

  1. STMicroelectronics. RM0433: STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — разд. 56.1: подсистема CAN — два модуля, общая Message RAM и блок калибровки такта; модули соответствуют ISO 11898-1:2015 (CAN 2.0 A, B) и спецификации CAN FD 1.0; FDCAN1 поддерживает TTCAN по ISO 11898-4; Message RAM 10 КБ — фильтры, приёмные FIFO, приёмные буферы, FIFO событий передачи, буферы передачи; блок калибровки может формировать такт FDCAN из HSI и PLL по сообщениям, принятым FDCAN1; разд. 56.2: CAN FD до 64 байт данных, TTCAN уровней 1 и 2 (только FDCAN1), журнал ошибок, поддержка AUTOSAR и J1939, улучшенная фильтрация, два настраиваемых приёмных FIFO, до 64 выделенных приёмных буферов, до 32 буферов передачи, FIFO или очередь передачи, FIFO событий передачи, петлевой тест, два тактовых домена — шина APB и такт ядра CAN; разд. CAN FD operation: CAN FD включают битом FDCAN_CCCR.FDOE, переключение скорости — BRSE; при FDOE = 0 принятый кадр CAN FD вызывает кадр ошибки; FDOE и BRSE меняют только при INIT и CCE; табл. 489 — DLC 9–15 = 12, 16, 20, 24, 32, 48, 64 байт; номинальная скорость — регистр FDCAN_NBTP, скорость фазы данных — FDCAN_DBTP; пример: при такте ядра 20 МГц и минимальном бите в 4 кванта скорость фазы данных 5 Мбит/с
  2. STMicroelectronics. CMSIS device header stm32h743xx.h, cmsis-device-h7 v1.10.7 (GitHub, Apache-2.0) — FDCAN1, FDCAN2, биты FDCAN_CCCR_FDOE и FDCAN_CCCR_BRSE

Нашли ошибку?