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.
Источники
- 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 Мбит/с
- STMicroelectronics. CMSIS device header stm32h743xx.h, cmsis-device-h7 v1.10.7 (GitHub, Apache-2.0) — FDCAN1, FDCAN2, биты FDCAN_CCCR_FDOE и FDCAN_CCCR_BRSE
Нашли ошибку?
Смотрите также
- CAN FDКадр, BRS и фаза данных, DLC до 64 байт, CRC, ISO и non-ISO
- CANCAN_H и CAN_L, терминаторы, кадр, арбитраж, ошибки, тайминг, MCP2515
- CAN-контроллерУзел протокола CAN: кадры, арбитраж, ошибки, битовое время, фильтры
- Фильтр приёма CANАппаратный отбор кадров CAN по идентификатору: маска или список
- CAN-трансиверМикросхема физического уровня между контроллером CAN и шиной
- Битовый тайминг CANCAN_BTR для STM32, CNF1–CNF3 для MCP2515, точка выборки
- STM32H7Cortex-M7 от 280 до 600 МГц, двухъядерные H745/H747 — линейки, память, загрузка и распиновки