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

Регистры CAN STM32F0

Регистры bxCAN STM32F0: режимы инициализации и сна, битовая синхронизация, передающие ящики, приёмные FIFO, фильтры идентификаторов, ошибки и прерывания.

bxCAN STM32F0 — тот же контроллер, что у STM32F1 и F4: три передающих ящика, два приёмных FIFO на три сообщения и 14 банков фильтров. Он есть у STM32F042, F072, F091 и их вариантов на 1,8 В; у STM32F042 и F072 CAN делит память пакетов с USB, и использовать их одновременно нельзя (RM0091, раздел 29.3).

Скорость задаёт BTR: длительность кванта — (BRP + 1) тактов PCLK, бит — 1 + (TS1 + 1) + (TS2 + 1) квантов. Перед записью BTR контроллер переводят в режим инициализации битом INRQ.

ЭкземплярБазовый адресЕсть у
CAN0x4000 6400всех

Регистры блока

РегистрСмещениеНазначениеПосле сброса
CAN_MCR0x00Управление: режимы и поведение контроллера0x0001 0002
CAN_MSR0x04Состояние контроллера0x0000 0C02
CAN_TSR0x08Состояние передачи0x1C00 0000
CAN_RF0R0x0CВходной FIFO 00x0000 0000
CAN_RF1R0x10Входной FIFO 10x0000 0000
CAN_IER0x14Разрешение прерываний0x0000 0000
CAN_ESR0x18Ошибки и счётчики ошибок0x0000 0000
CAN_BTR0x1CБитовая синхронизация и режимы отладки0x0123 0000
CAN_TI0R0x180Передающий ящик 0: идентификатор и запрос передачи0xXXXX XXXX (кроме бита 0: TXRQ = 0)
CAN_TDT0R0x184Передающий ящик 0: длина и метка времени0xXXXX XXXX
CAN_TDL0R0x188Передающий ящик 0: байты данных 0–30xXXXX XXXX
CAN_TDH0R0x18CПередающий ящик 0: байты данных 4–70xXXXX XXXX
CAN_TI1R0x190Передающий ящик 1: идентификатор и запрос передачи0xXXXX XXXX (кроме бита 0: TXRQ = 0)
CAN_TDT1R0x194Передающий ящик 1: длина и метка времени0xXXXX XXXX
CAN_TDL1R0x198Передающий ящик 1: байты данных 0–30xXXXX XXXX
CAN_TDH1R0x19CПередающий ящик 1: байты данных 4–70xXXXX XXXX
CAN_TI2R0x1A0Передающий ящик 2: идентификатор и запрос передачи0xXXXX XXXX (кроме бита 0: TXRQ = 0)
CAN_TDT2R0x1A4Передающий ящик 2: длина и метка времени0xXXXX XXXX
CAN_TDL2R0x1A8Передающий ящик 2: байты данных 0–30xXXXX XXXX
CAN_TDH2R0x1ACПередающий ящик 2: байты данных 4–70xXXXX XXXX
CAN_RI0R0x1B0Выходной ящик FIFO 0: идентификатор0xXXXX XXXX
CAN_RDT0R0x1B4Выходной ящик FIFO 0: длина, номер фильтра и метка времени0xXXXX XXXX
CAN_RDL0R0x1B8Выходной ящик FIFO 0: байты данных 0–30xXXXX XXXX
CAN_RDH0R0x1BCВыходной ящик FIFO 0: байты данных 4–70xXXXX XXXX
CAN_RI1R0x1C0Выходной ящик FIFO 1: идентификатор0xXXXX XXXX
CAN_RDT1R0x1C4Выходной ящик FIFO 1: длина, номер фильтра и метка времени0xXXXX XXXX
CAN_RDL1R0x1C8Выходной ящик FIFO 1: байты данных 0–30xXXXX XXXX
CAN_RDH1R0x1CCВыходной ящик FIFO 1: байты данных 4–70xXXXX XXXX
CAN_FMR0x200Режим инициализации фильтров0x2A1C 0E01
CAN_FM1R0x204Режим банков фильтров: маска или список0x0000 0000
CAN_FS1R0x20CРазрядность банков фильтров0x0000 0000
CAN_FFA1R0x214Назначение банков фильтров FIFO0x0000 0000
CAN_FA1R0x21CВключение банков фильтров0x0000 0000
CAN_F0R10x240Банк фильтра 0, регистр 10xXXXX XXXX
CAN_F0R20x244Банк фильтра 0, регистр 20xXXXX XXXX
CAN_F1R10x248Банк фильтра 1, регистр 10xXXXX XXXX
CAN_F1R20x24CБанк фильтра 1, регистр 20xXXXX XXXX
CAN_F2R10x250Банк фильтра 2, регистр 10xXXXX XXXX
CAN_F2R20x254Банк фильтра 2, регистр 20xXXXX XXXX
CAN_F3R10x258Банк фильтра 3, регистр 10xXXXX XXXX
CAN_F3R20x25CБанк фильтра 3, регистр 20xXXXX XXXX
CAN_F4R10x260Банк фильтра 4, регистр 10xXXXX XXXX
CAN_F4R20x264Банк фильтра 4, регистр 20xXXXX XXXX
CAN_F5R10x268Банк фильтра 5, регистр 10xXXXX XXXX
CAN_F5R20x26CБанк фильтра 5, регистр 20xXXXX XXXX
CAN_F6R10x270Банк фильтра 6, регистр 10xXXXX XXXX
CAN_F6R20x274Банк фильтра 6, регистр 20xXXXX XXXX
CAN_F7R10x278Банк фильтра 7, регистр 10xXXXX XXXX
CAN_F7R20x27CБанк фильтра 7, регистр 20xXXXX XXXX
CAN_F8R10x280Банк фильтра 8, регистр 10xXXXX XXXX
CAN_F8R20x284Банк фильтра 8, регистр 20xXXXX XXXX
CAN_F9R10x288Банк фильтра 9, регистр 10xXXXX XXXX
CAN_F9R20x28CБанк фильтра 9, регистр 20xXXXX XXXX
CAN_F10R10x290Банк фильтра 10, регистр 10xXXXX XXXX
CAN_F10R20x294Банк фильтра 10, регистр 20xXXXX XXXX
CAN_F11R10x298Банк фильтра 11, регистр 10xXXXX XXXX
CAN_F11R20x29CБанк фильтра 11, регистр 20xXXXX XXXX
CAN_F12R10x2A0Банк фильтра 12, регистр 10xXXXX XXXX
CAN_F12R20x2A4Банк фильтра 12, регистр 20xXXXX XXXX
CAN_F13R10x2A8Банк фильтра 13, регистр 10xXXXX XXXX
CAN_F13R20x2ACБанк фильтра 13, регистр 20xXXXX XXXX

Конструктор значения

Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.

Значение: 0x00010002

0000 0000 0000 0001 0000 0000 0000 0010

CAN->MCR = 0x00010002;

CAN_MCR — управление: режимы и поведение контроллера

Смещение 0x00, адрес 0x4000 6400, 32 бит, после сброса 0x0001 0002. В коде: CAN->MCR.

31302928272625242322212019181716
—
1514131211109876543210
RESET—TTCMABOMAWUMNARTRFLMTXFPSLEEPINRQ
  • RESET (бит 15) — Программный сброс bxCAN, после него — режим сна.
  • TTCM (бит 7) — Режим связи по времени (TTCAN).
  • ABOM (бит 6) — Автоматический выход из состояния bus-off.
  • AWUM (бит 5) — Автоматическое пробуждение при приёме сообщения.
  • NART (бит 4) — Без автоматического повтора передачи.
  • RFLM (бит 3) — Блокировка FIFO при переполнении: новое сообщение отбрасывается.
  • TXFP (бит 2) — Порядок передачи: по приоритету идентификатора или по очереди запросов.
    TXFPЗначение
    0По приоритету идентификатора
    1По порядку запросов
  • SLEEP (бит 1) — Запрос режима сна; установлен после сброса.
  • INRQ (бит 0) — Запрос режима инициализации.

CAN_MSR — состояние контроллера

Смещение 0x04, адрес 0x4000 6404, 32 бит, после сброса 0x0000 0C02. В коде: CAN->MSR.

31302928272625242322212019181716
—
1514131211109876543210
—RXSAMPRXMTXM—SLAKIWKUIERRISLAKINAK
  • RX (бит 11) — Текущий уровень на выводе CAN_RX.
  • SAMP (бит 10) — Уровень RX в последней точке выборки.
  • RXM (бит 9) — Контроллер сейчас принимает.
  • TXM (бит 8) — Контроллер сейчас передаёт.
  • SLAKI (бит 4) — Прерывание: вход в режим сна; сбрасывается записью 1.
  • WKUI (бит 3) — Прерывание пробуждения; сбрасывается записью 1.
  • ERRI (бит 2) — Прерывание по ошибке; сбрасывается записью 1.
  • SLAK (бит 1) — Подтверждение режима сна.
  • INAK (бит 0) — Подтверждение режима инициализации.

CAN_TSR — состояние передачи

Смещение 0x08, адрес 0x4000 6408, 32 бит, после сброса 0x1C00 0000. В коде: CAN->TSR.

31302928272625242322212019181716
LOW2LOW1LOW0TME2TME1TME0CODEABRQ2—TERR2ALST2TXOK2RQCP2
1514131211109876543210
ABRQ1—TERR1ALST1TXOK1RQCP1ABRQ0—TERR0ALST0TXOK0RQCP0
  • LOW0–LOW2 (по биту на каждый y, положение — на карте битов) — Ящик y имеет самый низкий приоритет.
  • TME0–TME2 (по биту на каждый y, положение — на карте битов) — Передающий ящик y свободен.
  • CODE (биты 25:24) — Номер следующего свободного ящика или ящика с низшим приоритетом.
  • ABRQ0–ABRQ2 (по биту на каждый y, положение — на карте битов) — Отмена передачи из ящика y.
  • TERR0–TERR2 (по биту на каждый y, положение — на карте битов) — Ошибка передачи ящика y.
  • ALST0–ALST2 (по биту на каждый y, положение — на карте битов) — Ящик y проиграл арбитраж.
  • TXOK0–TXOK2 (по биту на каждый y, положение — на карте битов) — Передача ящика y успешна.
  • RQCP2 (бит 16) — Запрос ящика 2 выполнен; запись 1 сбрасывает флаги ящика.
  • RQCP0 (бит 0) — Запрос ящика 0 выполнен; запись 1 сбрасывает флаги ящика.
  • RQCP1 (бит 8) — Запрос ящика 1 выполнен; запись 1 сбрасывает флаги ящика.

CAN_RF0R — входной FIFO 0

Смещение 0x0C, адрес 0x4000 640C, 32 бит, после сброса 0x0000 0000. В коде: CAN->RF0R.

31302928272625242322212019181716
—
1514131211109876543210
—RFOM0FOVR0FULL0—FMP0
  • RFOM0 (бит 5) — Освободить выходной ящик FIFO 0.
  • FOVR0 (бит 4) — Переполнение FIFO 0: сообщение потеряно; сбрасывается записью 1.
  • FULL0 (бит 3) — FIFO 0 полон: три сообщения; сбрасывается записью 1.
  • FMP0 (биты 1:0) — Число сообщений в FIFO 0: 0–3.

CAN_RF1R — входной FIFO 1

Смещение 0x10, адрес 0x4000 6410, 32 бит, после сброса 0x0000 0000. В коде: CAN->RF1R.

31302928272625242322212019181716
—
1514131211109876543210
—RFOM1FOVR1FULL1—FMP1
  • RFOM1 (бит 5) — Освободить выходной ящик FIFO 1.
  • FOVR1 (бит 4) — Переполнение FIFO 1: сообщение потеряно; сбрасывается записью 1.
  • FULL1 (бит 3) — FIFO 1 полон: три сообщения; сбрасывается записью 1.
  • FMP1 (биты 1:0) — Число сообщений в FIFO 1: 0–3.

CAN_IER — разрешение прерываний

Смещение 0x14, адрес 0x4000 6414, 32 бит, после сброса 0x0000 0000. В коде: CAN->IER.

31302928272625242322212019181716
—SLKIEWKUIE
1514131211109876543210
ERRIE—LECIEBOFIEEPVIEEWGIE—FOVIE1FFIE1FMPIE1FOVIE0FFIE0FMPIE0TMEIE
  • SLKIE (бит 17) — Прерывание по входу в сон.
  • WKUIE (бит 16) — Прерывание пробуждения.
  • ERRIE (бит 15) — Общее прерывание по ошибкам.
  • LECIE (бит 11) — Ошибка в поле LEC ставит ERRI.
  • BOFIE (бит 10) — Состояние bus-off ставит ERRI.
  • EPVIE (бит 9) — Состояние error passive ставит ERRI.
  • EWGIE (бит 8) — Предупреждение об ошибках ставит ERRI.
  • FOVIE1 (бит 6) — Прерывание по переполнению FIFO 1.
  • FOVIE0 (бит 3) — Прерывание по переполнению FIFO 0.
  • FFIE1 (бит 5) — Прерывание: FIFO 1 полон.
  • FFIE0 (бит 2) — Прерывание: FIFO 0 полон.
  • FMPIE1 (бит 4) — Прерывание: в FIFO 1 есть сообщение.
  • FMPIE0 (бит 1) — Прерывание: в FIFO 0 есть сообщение.
  • TMEIE (бит 0) — Прерывание: передающий ящик освободился.

CAN_ESR — ошибки и счётчики ошибок

Смещение 0x18, адрес 0x4000 6418, 32 бит, после сброса 0x0000 0000. В коде: CAN->ESR.

31302928272625242322212019181716
RECTEC
1514131211109876543210
—LEC—BOFFEPVFEWGF
  • REC (биты 31:24) — Счётчик ошибок приёма.
  • TEC (биты 23:16) — Счётчик ошибок передачи.
  • LEC (биты 6:4) — Код последней ошибки на шине.
    LECЗначение
    000Нет ошибки
    001Ошибка вставки бит (stuff)
    010Ошибка формы
    011Нет подтверждения (ACK)
    100Ошибка бита: ожидался рецессивный
    101Ошибка бита: ожидался доминантный
    110Ошибка CRC
    111Установлено программой
  • BOFF (бит 2) — Состояние bus-off.
  • EPVF (бит 1) — Состояние error passive: счётчик больше 127.
  • EWGF (бит 0) — Предупреждение: счётчик ошибок 96 и больше.

CAN_BTR — битовая синхронизация и режимы отладки

Смещение 0x1C, адрес 0x4000 641C, 32 бит, после сброса 0x0123 0000. В коде: CAN->BTR.

31302928272625242322212019181716
SILMLBKM—SJW—TS2TS1
1514131211109876543210
—BRP
  • SILM (бит 31) — «Молчаливый» режим: только приём.
  • LBKM (бит 30) — Режим петли: передача замкнута на приём.
  • SJW (биты 25:24) — Ширина скачка ресинхронизации: SJW + 1 квантов.
  • TS2 (биты 22:20) — Сегмент 2 после точки выборки: TS2 + 1 квантов.
  • TS1 (биты 19:16) — Сегмент 1 до точки выборки: TS1 + 1 квантов.
  • BRP (биты 9:0) — Делитель кванта: tq = (BRP + 1) периодов PCLK1.

CAN_TI0R — передающий ящик 0: идентификатор и запрос передачи

Смещение 0x180, адрес 0x4000 6580, 32 бит, после сброса 0xXXXX XXXX (кроме бита 0: TXRQ = 0). В коде: CAN->sTxMailBox[0].TIR.

31302928272625242322212019181716
STIDEXID
1514131211109876543210
EXIDIDERTRTXRQ
  • STID (биты 31:21) — Стандартный идентификатор (11 бит) или старшие биты расширенного.
  • EXID (биты 20:3) — Младшие 18 бит расширенного идентификатора.
  • IDE (бит 2) — Формат идентификатора: стандартный или расширенный.
    IDEЗначение
    0Стандартный (11 бит)
    1Расширенный (29 бит)
  • RTR (бит 1) — Кадр данных или удалённый запрос.
    RTRЗначение
    0Кадр данных
    1Удалённый запрос
  • TXRQ (бит 0) — Запрос передачи; сбрасывается, когда ящик освободился.

CAN_TDT0R — передающий ящик 0: длина и метка времени

Смещение 0x184, адрес 0x4000 6584, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[0].TDTR.

31302928272625242322212019181716
TIME
1514131211109876543210
—TGT—DLC
  • TIME (биты 31:16) — Метка времени начала кадра (режим TTCM).
  • TGT (бит 8) — Передача метки времени в двух последних байтах (режим TTCM).
  • DLC (биты 3:0) — Длина данных: 0–8 байт.

CAN_TDL0R — передающий ящик 0: байты данных 0–3

Смещение 0x188, адрес 0x4000 6588, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[0].TDLR.

31302928272625242322212019181716
DATA3DATA2
1514131211109876543210
DATA1DATA0
  • DATA0–DATA3 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_TDH0R — передающий ящик 0: байты данных 4–7

Смещение 0x18C, адрес 0x4000 658C, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[0].TDHR.

31302928272625242322212019181716
DATA7DATA6
1514131211109876543210
DATA5DATA4
  • DATA4–DATA7 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_TI1R — передающий ящик 1: идентификатор и запрос передачи

Смещение 0x190, адрес 0x4000 6590, 32 бит, после сброса 0xXXXX XXXX (кроме бита 0: TXRQ = 0). В коде: CAN->sTxMailBox[1].TIR.

31302928272625242322212019181716
STIDEXID
1514131211109876543210
EXIDIDERTRTXRQ
  • STID (биты 31:21) — Стандартный идентификатор (11 бит) или старшие биты расширенного.
  • EXID (биты 20:3) — Младшие 18 бит расширенного идентификатора.
  • IDE (бит 2) — Формат идентификатора: стандартный или расширенный.
    IDEЗначение
    0Стандартный (11 бит)
    1Расширенный (29 бит)
  • RTR (бит 1) — Кадр данных или удалённый запрос.
    RTRЗначение
    0Кадр данных
    1Удалённый запрос
  • TXRQ (бит 0) — Запрос передачи; сбрасывается, когда ящик освободился.

CAN_TDT1R — передающий ящик 1: длина и метка времени

Смещение 0x194, адрес 0x4000 6594, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[1].TDTR.

31302928272625242322212019181716
TIME
1514131211109876543210
—TGT—DLC
  • TIME (биты 31:16) — Метка времени начала кадра (режим TTCM).
  • TGT (бит 8) — Передача метки времени в двух последних байтах (режим TTCM).
  • DLC (биты 3:0) — Длина данных: 0–8 байт.

CAN_TDL1R — передающий ящик 1: байты данных 0–3

Смещение 0x198, адрес 0x4000 6598, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[1].TDLR.

31302928272625242322212019181716
DATA3DATA2
1514131211109876543210
DATA1DATA0
  • DATA0–DATA3 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_TDH1R — передающий ящик 1: байты данных 4–7

Смещение 0x19C, адрес 0x4000 659C, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[1].TDHR.

31302928272625242322212019181716
DATA7DATA6
1514131211109876543210
DATA5DATA4
  • DATA4–DATA7 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_TI2R — передающий ящик 2: идентификатор и запрос передачи

Смещение 0x1A0, адрес 0x4000 65A0, 32 бит, после сброса 0xXXXX XXXX (кроме бита 0: TXRQ = 0). В коде: CAN->sTxMailBox[2].TIR.

31302928272625242322212019181716
STIDEXID
1514131211109876543210
EXIDIDERTRTXRQ
  • STID (биты 31:21) — Стандартный идентификатор (11 бит) или старшие биты расширенного.
  • EXID (биты 20:3) — Младшие 18 бит расширенного идентификатора.
  • IDE (бит 2) — Формат идентификатора: стандартный или расширенный.
    IDEЗначение
    0Стандартный (11 бит)
    1Расширенный (29 бит)
  • RTR (бит 1) — Кадр данных или удалённый запрос.
    RTRЗначение
    0Кадр данных
    1Удалённый запрос
  • TXRQ (бит 0) — Запрос передачи; сбрасывается, когда ящик освободился.

CAN_TDT2R — передающий ящик 2: длина и метка времени

Смещение 0x1A4, адрес 0x4000 65A4, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[2].TDTR.

31302928272625242322212019181716
TIME
1514131211109876543210
—TGT—DLC
  • TIME (биты 31:16) — Метка времени начала кадра (режим TTCM).
  • TGT (бит 8) — Передача метки времени в двух последних байтах (режим TTCM).
  • DLC (биты 3:0) — Длина данных: 0–8 байт.

CAN_TDL2R — передающий ящик 2: байты данных 0–3

Смещение 0x1A8, адрес 0x4000 65A8, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[2].TDLR.

31302928272625242322212019181716
DATA3DATA2
1514131211109876543210
DATA1DATA0
  • DATA0–DATA3 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_TDH2R — передающий ящик 2: байты данных 4–7

Смещение 0x1AC, адрес 0x4000 65AC, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sTxMailBox[2].TDHR.

31302928272625242322212019181716
DATA7DATA6
1514131211109876543210
DATA5DATA4
  • DATA4–DATA7 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_RI0R — выходной ящик FIFO 0: идентификатор

Смещение 0x1B0, адрес 0x4000 65B0, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFIFOMailBox[0].RIR.

31302928272625242322212019181716
STIDEXID
1514131211109876543210
EXIDIDERTR—
  • STID (биты 31:21) — Стандартный идентификатор (11 бит) или старшие биты расширенного.
  • EXID (биты 20:3) — Младшие 18 бит расширенного идентификатора.
  • IDE (бит 2) — Формат идентификатора: стандартный или расширенный.
    IDEЗначение
    0Стандартный (11 бит)
    1Расширенный (29 бит)
  • RTR (бит 1) — Кадр данных или удалённый запрос.
    RTRЗначение
    0Кадр данных
    1Удалённый запрос

CAN_RDT0R — выходной ящик FIFO 0: длина, номер фильтра и метка времени

Смещение 0x1B4, адрес 0x4000 65B4, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFIFOMailBox[0].RDTR.

31302928272625242322212019181716
TIME
1514131211109876543210
FMI—DLC
  • TIME (биты 31:16) — Метка времени начала кадра (режим TTCM).
  • FMI (биты 15:8) — Номер фильтра, который пропустил сообщение.
  • DLC (биты 3:0) — Длина данных: 0–8 байт.

CAN_RDL0R — выходной ящик FIFO 0: байты данных 0–3

Смещение 0x1B8, адрес 0x4000 65B8, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFIFOMailBox[0].RDLR.

31302928272625242322212019181716
DATA3DATA2
1514131211109876543210
DATA1DATA0
  • DATA0–DATA3 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_RDH0R — выходной ящик FIFO 0: байты данных 4–7

Смещение 0x1BC, адрес 0x4000 65BC, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFIFOMailBox[0].RDHR.

31302928272625242322212019181716
DATA7DATA6
1514131211109876543210
DATA5DATA4
  • DATA4–DATA7 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_RI1R — выходной ящик FIFO 1: идентификатор

Смещение 0x1C0, адрес 0x4000 65C0, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFIFOMailBox[1].RIR.

31302928272625242322212019181716
STIDEXID
1514131211109876543210
EXIDIDERTR—
  • STID (биты 31:21) — Стандартный идентификатор (11 бит) или старшие биты расширенного.
  • EXID (биты 20:3) — Младшие 18 бит расширенного идентификатора.
  • IDE (бит 2) — Формат идентификатора: стандартный или расширенный.
    IDEЗначение
    0Стандартный (11 бит)
    1Расширенный (29 бит)
  • RTR (бит 1) — Кадр данных или удалённый запрос.
    RTRЗначение
    0Кадр данных
    1Удалённый запрос

CAN_RDT1R — выходной ящик FIFO 1: длина, номер фильтра и метка времени

Смещение 0x1C4, адрес 0x4000 65C4, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFIFOMailBox[1].RDTR.

31302928272625242322212019181716
TIME
1514131211109876543210
FMI—DLC
  • TIME (биты 31:16) — Метка времени начала кадра (режим TTCM).
  • FMI (биты 15:8) — Номер фильтра, который пропустил сообщение.
  • DLC (биты 3:0) — Длина данных: 0–8 байт.

CAN_RDL1R — выходной ящик FIFO 1: байты данных 0–3

Смещение 0x1C8, адрес 0x4000 65C8, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFIFOMailBox[1].RDLR.

31302928272625242322212019181716
DATA3DATA2
1514131211109876543210
DATA1DATA0
  • DATA0–DATA3 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_RDH1R — выходной ящик FIFO 1: байты данных 4–7

Смещение 0x1CC, адрес 0x4000 65CC, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFIFOMailBox[1].RDHR.

31302928272625242322212019181716
DATA7DATA6
1514131211109876543210
DATA5DATA4
  • DATA4–DATA7 (по 8 бита на каждый y, положение — на карте битов) — Байт данных y.

CAN_FMR — режим инициализации фильтров

Смещение 0x200, адрес 0x4000 6600, 32 бит, после сброса 0x2A1C 0E01. В коде: CAN->FMR.

31302928272625242322212019181716
—
1514131211109876543210
—CAN2SB—FINIT
  • CAN2SB (биты 13:8) — Первый банк фильтров CAN2; банки до него принадлежат CAN1.
  • FINIT (бит 0) — Режим инициализации фильтров.

CAN_FM1R — режим банков фильтров: маска или список

Смещение 0x204, адрес 0x4000 6604, 32 бит, после сброса 0x0000 0000. В коде: CAN->FM1R.

31302928272625242322212019181716
—FBM27FBM26FBM25FBM24FBM23FBM22FBM21FBM20FBM19FBM18FBM17FBM16
1514131211109876543210
FBM15FBM14FBM13FBM12FBM11FBM10FBM9FBM8FBM7FBM6FBM5FBM4FBM3FBM2FBM1FBM0
  • FBM0–FBM27 (по биту на каждый y, положение — на карте битов) — Режим банка y: маска или список.
    FBMyЗначение
    0Идентификатор с маской
    1Список идентификаторов

CAN_FS1R — разрядность банков фильтров

Смещение 0x20C, адрес 0x4000 660C, 32 бит, после сброса 0x0000 0000. В коде: CAN->FS1R.

31302928272625242322212019181716
—FSC27FSC26FSC25FSC24FSC23FSC22FSC21FSC20FSC19FSC18FSC17FSC16
1514131211109876543210
FSC15FSC14FSC13FSC12FSC11FSC10FSC9FSC8FSC7FSC6FSC5FSC4FSC3FSC2FSC1FSC0
  • FSC0–FSC27 (по биту на каждый y, положение — на карте битов) — Масштаб банка y: два 16-битных или один 32-битный фильтр.
    FSCyЗначение
    0Два 16-битных фильтра
    1Один 32-битный фильтр
  • FSC16 (бит 16) — Масштаб банка 16: два 16-битных или один 32-битный фильтр.
    FSC16Значение
    0Два 16-битных фильтра
    1Один 32-битный фильтр

CAN_FFA1R — назначение банков фильтров FIFO

Смещение 0x214, адрес 0x4000 6614, 32 бит, после сброса 0x0000 0000. В коде: CAN->FFA1R.

31302928272625242322212019181716
—FFA27FFA26FFA25FFA24FFA23FFA22FFA21FFA20FFA19FFA18FFA17FFA16
1514131211109876543210
FFA15FFA14FFA13FFA12FFA11FFA10FFA9FFA8FFA7FFA6FFA5FFA4FFA3FFA2FFA1FFA0
  • FFA0–FFA27 (по биту на каждый y, положение — на карте битов) — FIFO для банка y.
    FFAyЗначение
    0FIFO 0
    1FIFO 1

CAN_FA1R — включение банков фильтров

Смещение 0x21C, адрес 0x4000 661C, 32 бит, после сброса 0x0000 0000. В коде: CAN->FA1R.

31302928272625242322212019181716
—FACT27FACT26FACT25FACT24FACT23FACT22FACT21FACT20FACT19FACT18FACT17FACT16
1514131211109876543210
FACT15FACT14FACT13FACT12FACT11FACT10FACT9FACT8FACT7FACT6FACT5FACT4FACT3FACT2FACT1FACT0
  • FACT0–FACT27 (по биту на каждый y, положение — на карте битов) — Включение банка y.

CAN_F0R1 — банк фильтра 0, регистр 1

Смещение 0x240, адрес 0x4000 6640, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[0].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F0R2 — банк фильтра 0, регистр 2

Смещение 0x244, адрес 0x4000 6644, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[0].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F1R1 — банк фильтра 1, регистр 1

Смещение 0x248, адрес 0x4000 6648, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[1].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F1R2 — банк фильтра 1, регистр 2

Смещение 0x24C, адрес 0x4000 664C, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[1].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F2R1 — банк фильтра 2, регистр 1

Смещение 0x250, адрес 0x4000 6650, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[2].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F2R2 — банк фильтра 2, регистр 2

Смещение 0x254, адрес 0x4000 6654, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[2].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F3R1 — банк фильтра 3, регистр 1

Смещение 0x258, адрес 0x4000 6658, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[3].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F3R2 — банк фильтра 3, регистр 2

Смещение 0x25C, адрес 0x4000 665C, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[3].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F4R1 — банк фильтра 4, регистр 1

Смещение 0x260, адрес 0x4000 6660, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[4].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F4R2 — банк фильтра 4, регистр 2

Смещение 0x264, адрес 0x4000 6664, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[4].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F5R1 — банк фильтра 5, регистр 1

Смещение 0x268, адрес 0x4000 6668, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[5].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F5R2 — банк фильтра 5, регистр 2

Смещение 0x26C, адрес 0x4000 666C, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[5].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F6R1 — банк фильтра 6, регистр 1

Смещение 0x270, адрес 0x4000 6670, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[6].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F6R2 — банк фильтра 6, регистр 2

Смещение 0x274, адрес 0x4000 6674, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[6].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F7R1 — банк фильтра 7, регистр 1

Смещение 0x278, адрес 0x4000 6678, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[7].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F7R2 — банк фильтра 7, регистр 2

Смещение 0x27C, адрес 0x4000 667C, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[7].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F8R1 — банк фильтра 8, регистр 1

Смещение 0x280, адрес 0x4000 6680, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[8].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F8R2 — банк фильтра 8, регистр 2

Смещение 0x284, адрес 0x4000 6684, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[8].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F9R1 — банк фильтра 9, регистр 1

Смещение 0x288, адрес 0x4000 6688, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[9].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F9R2 — банк фильтра 9, регистр 2

Смещение 0x28C, адрес 0x4000 668C, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[9].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F10R1 — банк фильтра 10, регистр 1

Смещение 0x290, адрес 0x4000 6690, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[10].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F10R2 — банк фильтра 10, регистр 2

Смещение 0x294, адрес 0x4000 6694, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[10].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F11R1 — банк фильтра 11, регистр 1

Смещение 0x298, адрес 0x4000 6698, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[11].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F11R2 — банк фильтра 11, регистр 2

Смещение 0x29C, адрес 0x4000 669C, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[11].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F12R1 — банк фильтра 12, регистр 1

Смещение 0x2A0, адрес 0x4000 66A0, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[12].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F12R2 — банк фильтра 12, регистр 2

Смещение 0x2A4, адрес 0x4000 66A4, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[12].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F13R1 — банк фильтра 13, регистр 1

Смещение 0x2A8, адрес 0x4000 66A8, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[13].FR1.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

CAN_F13R2 — банк фильтра 13, регистр 2

Смещение 0x2AC, адрес 0x4000 66AC, 32 бит, после сброса 0xXXXX XXXX. В коде: CAN->sFilterRegister[13].FR2.

31302928272625242322212019181716
FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB16
1514131211109876543210
FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB0
  • FB0–FB31 (по биту на каждый y, положение — на карте битов) — Бит y фильтра: идентификатор или маска.

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

Какой BTR для 500 кбит/с при PCLK 48 МГц?

BRP = 5 (квант 125 нс), TS1 = 12, TS2 = 1: бит = 1 + 13 + 2 = 16 квантов, точка выборки 87,5 %. BTR = 0x001C_0005 (SJW = 1).

Источники

  1. STMicroelectronics. RM0091: Reference manual (Rev 10) — раздел 29.9: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-f0 v2.3.8: заголовки CMSIS stm32f031x6.h, stm32f038xx.h, stm32f042x6.h, stm32f048xx.h, stm32f051x8.h, stm32f058xx.h, stm32f071xb.h, stm32f072xb.h, stm32f078xx.h, stm32f091xc.h, stm32f098xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

Нашли ошибку в регистрах?

Другие регистры STM32F0

Калькуляторы и статьи