Вы находитесь на странице: 1из 54

1

32. Контроллер сети bxCAN


Этот раздел применим ко всему семейству устройств STM32F4xx,
если не указано иное.
32.1. Введение в bxCAN
CAN периферия, названная как bxCAN, это интерфейсы сети CAN.
Она поддерживает протоколы CAN версии 2.0A и B. Разработана для
эффективного управления большим количеством входящих
сообщений с минимальной загрузкой CPU и также отвечает задачам
приоритетной передачи сообщений.
Для приложений критичных к безопасности, CAN контроллер
обеспечивает все аппаратные функции для опций связи CAN
вызываемых по расписанию.
32.2. Основные характеристики bxCAN
• Поддержка протоколов CAN версий 2.0 A, B;
• Эффективная скорость передачи данных по каналу связи до 1
Мбит/с;
• Поддержка опции CAN вызова по расписанию.
Передача
• Три почтовых ящика для передаваемых сообщений;
• Настраиваемый приоритет передачи;
• Метки времени для передачи SOF (start of frame – начало кадра).
Прием
• Два трехуровневых FIFO буфера приема;
• Масштабируемые банки фильтров:
- Банк из 28 фильтров распределенных между CAN1 и CAN2;
• Опция списка идентификаторов;
• Настраиваемая опция переполнения FIFO;
• Метки времени для приема SOF.
Опция передачи информации по расписанию
• Отключение режима автоматической ретрансляции;
• 16 битный таймер со свободным ходом;
• Метка времени, отправляемая в последних двух байтах данных;
Управление
• Маскируемые прерывания;
• Программно эффективная привязка почтового ящика к
уникальному адресному пространству.
Двухканальный CAN
• CAN1: Ведущий bxCAN для управления связью между ведомым
bxCAN и 512 байтами памяти SRAM;
2
• CAN2: Ведомый bxCAN без прямого доступа к памяти SRAM;
• Две bxCAN ячейки совместно использующие 512 байт памяти
SRAM (см. рисунок 335: Структурная схема двухканального CAN).
32.3. Общее описание bxCAN
В применяемых сегодня CAN сетях количество узлов в сети
возрастает и часто несколько сетей связаны вместе через шлюзы. Как
правило, количество сообщений в системе значительно увеличивается
(и, следовательно, время обработки каждого узла). В дополнении к
сообщениям приложений были внедрены сообщения управления и
диагностики сети.
• Улучшен механизм фильтрации необходимый для обработки
каждого типа сообщений.
Кроме того, задачи приложений требуют большей загрузки CPU,
поэтому в приложениях реального времени должны быть уменьшены
ограничения, связанные с приемом сообщений.
• FIFO схема приемника позволяет CPU выполнять задачи
приложения длительный период времени без потери сообщений.
Стандарт HLP (Higher Layer Protocol – Протокол высшего уровня)
основан на стандарте CAN драйверов требующих эффективного
интерфейса CAN контроллера.

Рис.334. Топология сети CAN

32.3.1. Активное ядро CAN 2.0B


Модуль bxCAN обрабатывает передаваемые и получаемые CAN
сообщения полностью автономно. Стандартные идентификаторы (11
бит) и расширенные идентификаторы (29 бит) полностью
поддерживаются аппаратно.
3

Рис.335. Структурная схема двухканального CAN

32.3.2. Регистры управления,


управления статуса и конфигурации
Приложение использует эти регистры, чтобы:
• Настроить параметры CAN, например скорость передачи данных;
• Запрашивать возможность передачи данных;
• Обрабатывать принимаемые данные;
• Управлять прерываниями;
• Получать диагностическую информацию.
4
32.3.3. Почтовые ящики исходящих сообщений (Tx mailboxes).
Три почтовых ящика исходящих сообщений предусматривают
программную настройку сообщений. Какое исходящее сообщение из
трех почтовых ящиков будет передано первым, определяется
планировщиком передачи.
32.3.4. Фильтры приема
В bxCAN предусмотрены 28 масштабируемых/конфигурируемых
банков идентификационных фильтров, предназначенных для выбора
необходимых для приложения входящих сообщений и игнорирования
остальных. В других устройствах имеется 14
масштабируемых/конфигурируемых банков идентификационных
фильтров.
Приемный FIFO буфер
Два приемных буфера FIFO используются аппаратно для сохранения
входящих сообщений. В каждом FIFO буфере можно сохранить три
полных сообщения. FIFO буферы управляются полностью аппаратно.
32.4. Режимы работы bxCAN
В bxCAN имеется три основных режима работы: инициализация,
нормальный и спящий. После аппаратного сброса bxCAN находится в
спящем режиме для снижения энергопотребления и внутренней
подтяжкой активного вывода CANTX. Программный запрос для входа
bxCAN в режим инициализации или спящий режим осуществляется
установкой INRQ или SLEEP битов в регистре CAN_MCR.
Подтверждение входа в один из этих режимов осуществляется
установкой INAK или SLAK битов в регистре CAN_MSR и
отключением внутренней подтяжки. Когда ни один из битов INAK
или SLAK не установлен, bxCAN работает в нормальном режиме. До
входа в нормальный режим bxCAN всегда синхронизируется с шиной
CAN. Для синхронизации bxCAN ждет пока освободится CAN шина,
признаком чего являются 11 последовательных рецессивных бит
контролируемых на выводе CANRX.
32.4.1. Режим инициализации
Программная инициализация может быть выполнена, пока аппаратура
находится в режиме инициализации. Для входа в этот режим
необходимо программно установить бит INRQ в регистре CAN_MCR
и ждать пока в регистре CAN_MSR аппаратно установится бит INAK.
Чтобы выйти из режима инициализации, необходимо программно
очистить INRQ бит. bxCAN покинет режим инициализации сразу
после того как бит INAK очистится аппаратно.
Находясь в режиме инициализации, прекращается прием и передача
всех сообщений по шине CAN, и состояние вывода CANTX на шине
CAN становится рецессивным (высокий уровень).
5
Вход в режим инициализации не производит каких-либо изменений
регистров конфигурации. (Войдя в режим инициализации нельзя
изменить любой из регистров конфигурации.)
Для инициализации CAN контроллера, необходимо программно
настроить тактовую синхронизацию (Bit Timing) с помощью регистра
CAN_BTR и параметры CAN с помощью регистра конфигурации
CAN_MCR.
Чтобы инициализировать регистры, связанные с банками фильтров
CAN (режим, масштаб, привязка к FIFO, активацию и значения
фильтров), необходимо программно установить FINIT бит
(CAN_FMR). Инициализация фильтров также может быть выполнена
вне режима инициализации.
Прим.: Когда FINIT = 1, приемник CAN отключается.
Параметры фильтров также могут быть изменены при отключении
соответствующих бит активации фильтров (в регистре CAN_FA1R).
Если банк фильтров не используется, рекомендуется оставить его не
активным (оставить соответствующий FACTx бит очищенным).
32.4.2. Нормальный режим
Сразу после завершения инициализации, приложение должно сделать
запрос для входа в нормальный режим, чтобы иметь возможность
синхронизироваться с шиной CAN и начать прием и передачу данных.
Запрос для входа в нормальный режим осуществляется очисткой бита
INRQ в регистре CAN_MCR. bxCAN, войдя в нормальный режим,
готов принять участие в работе шины после синхронизации с
данными, передаваемыми по шине CAN. Это осуществляется путем
ожидания появления последовательности из 11-ти рецессивных бит
(состояние покоя шины). Подтверждением того, что оборудование
переключилось в нормальный режим является очистка INAK бита в
регистре CAN_MSR.
Инициализация значений фильтров не зависит от режима
инициализации, но должна быть выполнена пока фильтры неактивны
(соответствующий FACTx бит очищен). Масштаб фильтра и
конфигурирация режима должны быть выполнены до входа в
нормальный режим.
32.4.3. Спящий режим (режим пониженного энегропотребления)
Для снижения энергопотребления, bxCAN имеет режим пониженного
энергопотребления, называющийся спящим режимом. Вход в этот
режим осуществляется программной установкой бита SLEEP в
регистре CAN_MCR. В этом режиме останавливается тактирование
bxCAN, но приложение все еще имеет доступ к почтовым ящикам
bxCAN.
Если приложению необходимо войти в режим инициализации
установкой бита INRQ, пока bxCAN находится в спящем режиме, то
оно также должно очистить бит SLEEP.
6
bxCAN может пробудиться (выйти из спящего режима) либо с
помощью программной очистки бита SLEEP или при обнаружении
активности на CAN шине.
При обнаружении активности на CAN шине, аппаратура
автоматически производит пробуждение, очищая бит SLEEP, если
установлен бит AWUM в регистре CAN_MCR. Если бит AWUM
сброшен, для выхода из спящего режима необходимо сбросить бит
SLEEP программно, когда произойдет прерывание пробуждения.
Прим.: Если прерывание пробуждения активировано (в регистре CAN_IER
установлен бит WKUIE), то при обнаружении активности на CAN
шине сгенерируется прерывание пробуждения, даже если bxCAN
автоматически выполнило последовательность пробуждения.
После того как бит SLEEP будет очищен, выход из спящего режима
произойдет сразу после синхронизации bxCAN с шиной CAN (см.
рисунок 336. режимы работы bxCAN). Сразу после выхода из спящего
режима бит SLAK очищается аппаратно.

Рис.336. режимы работы bxCAN

1. ACK = Время ожидания в течение которого аппаратура


подтверждает запрос на установку битов INAK или SLACK в
регистре CAN_MSR.
2. SYNC = Состояние в течение которого bxCAN ждет, пока шина
CAN простаивает, и ожидается появление 11-ти последовательных
бит на выводе CANRX.
32.5. Режим теста
Режим тестирования можно выбрать битами SILM и LBKM в
регистре CAN_BTR. Эти биты должны быть сконфигурированы, пока
bxCAN находится в режиме инициализации. После того как выбран
тестовый режим, бит INRQ в регистре CAN_MCR должен быть
сброшен для входа в нормальный режим.
7
32.5.1. Режим молчания
bxCAN можно настроить в режим молчания установив бит SILM в
регистре CAN_BTR.
В режиме молчания, bxCAN способен получать достоверные кадры
данных и достоверные кадры удаленного запроса данных, но он
отправляет только рецессивные биты по шине CAN и не может начать
передачу данных. Если bxCAN должен отправить доминантный бит
(ACK бит, флаг перегрузки, активный флаг ошибки), бит
перенаправляется по внутренним цепям, так что ядро CAN
отслеживает такой доминантный бит, хотя шина CAN может
оставаться в рецессивном состоянии. Режим молчания можно
использовать для анализа траффика на шине CAN без влияния на нее
передачей доминирующих бит (биты подтверждения, ошибки кадров).

Рис.337. bxCAN в режиме молчания

32.5.2. Режим с обратной связью (Loop Back Mode)


bxCAN можно настроить в режим с обратной связью установкой бита
LBKM бита в регистре CAN_BTR. В режиме с обратной связью
bxCAN обрабатывает собственные передаваемые сообщения как
получаемые сообщения и сохраняет их (если они проходят входную
фильтрацию) в приемном почтовом ящике.
Данный режим предназначен для функции самопроверки. Чтобы быть
независимым от внешних событий, ядро CAN игнорирует биты
подтверждения ошибки (отсутствует доминантный бит взятый из поля
подтверждения данных / кадра удаленного запроса данных) в режиме
с обратной связью. Для такого режима в bxCAN выполнена
внутренняя обратная связь от TX выхода к RX входу. Фактическое
значение на выводе приема CANRX игнорируется в bxCAN.
Передаваемые сообщения могут контролироваться на выводе CANTX.
8

Рис.338. bxCAN в режиме с обратной связью

32.5.3. Режим с обратной связью комбинированный с режимом молчания


Также возможно сочетание режима с обратной связью и режима
молчания установкой битов LBKM и SILM в регистре CAN_BTR.
Такой режим можно использовать для «Горячего самотестирования»,
означающего, что bxCAN может тестироваться как в режиме Loop
Back Mode, но без влияния на работающую систему CAN связанную с
выводами CANTX и CANRX. В таком режиме вывод CANRX
отключен от bxCAN, а вывод CANTX удерживается в рецессивном
состоянии.

Рис.339. bxCAN в комбинированном режиме

32.6. Режим отладки.


Когда микроконтроллер находится в режиме отладки (ядро Cortex™-
M4 с ядром FPU останавливается), bxCAN продолжает работать
нормально или останавливается, в зависимости от:
• бита DBG_CAN1_STOP для CAN1 или бита DBG_CAN2_STOP
для CAN2 в DBG модуле. Для более подробной информации см.
раздел 38.16.2: отладочная поддержка для таймеров, сторожевого
таймера, bxCAN и I2C.
• бита DBF в регистре CAN_MCR. Для более подробной
информации, см. раздел 32.9.2.: регистры управления и статуса
CAN.
9
32.7. Функциональное описание bxCAN
32.7.1. Обработчик передачи.
Для того чтобы передать сообщение, приложение должно выбрать
один пустой почтовый ящик, установить идентификатор, код длины
данных (DLC) и данные до того, как выполнять запрос на передачу
установкой соответствующего бита TXRQ в регистре CAN_TIxR.
После того, как почтовый ящик будет заполнен, приложение больше
не имеет доступа для записи в регистры почтового ящика. Сразу после
установки бита TXRQ буфер переходит в режим ожидания и ждет
пока не получит высший приоритет, см. раздел Transmit Priority. Как
только буфер получит наивысший приоритет, он будет запланирован
для передачи. Передача сообщения запланированного буфера
начнется (вход в состояние передачи), когда шина CAN перейдет в
режим ожидания. После успешной передачи данных буфер снова
станет пустым. Аппаратура указывает на успешную передачу
сообщения установкой битов RQCP и TXOK в регистре CAN_TSR.
Если во время передачи возникают сбои, их причина указывается
битом ALST в регистре CAN_TSR в случае потери арбитража, и/или
битом TERR если обнаружена ошибка передачи.
Приоритет передачи
По идентификатору
Когда в режиме ожидания более одного почтового ящика, порядок
передачи задается идентификатором сообщения сохраненного в
почтовом ящике. Сообщение с наименьшим значением
идентификатора имеет наивысший приоритет в соответствии с
арбитражем CAN протокола. Если значения идентификаторов равны,
буфер с меньшим номером будет запланирован первым.
В порядке передачи запроса
Буферы передачи могут быть сконфигурированы как передающие
FIFO буферы установкой бита TXFP в регистре CAN_MCR. В этом
режиме порядок приоритета задается порядком запросов на передачу.
Этот режим очень удобен для сегментированной передачи.
Прерывание
Запрос на передачу может быть прерван пользователем установкой
бита ABRQ в регистре CAN_TSR. В режиме ожидания или в
запланированном состоянии передача сообщения из почтового ящика
прерывается немедленно. Пока сообщение из почтового ящика
находится в состоянии передачи, запрос на его прерывание может
иметь два результата. Если сообщение передано успешно, то
почтовый ящик опустошается и устанавливается бит TXOK в
регистре CAN_TSR. Если при передаче возник сбой, то сообщение
становится запланированным, передача прерывается и почтовый ящик
опустошается, а бит TXOK очищается. Во всех случаях почтовый
ящик очищается, по крайней мере, в конце текущей передачи.
10
Режим неавтоматической ретрансляции
Этот режим реализован в целях выполнения требования возможности
связи по расписанию согласно стандарту CAN. Настройка аппаратуры
в этот режим осуществляется установкой бита NART в регистре
CAN_MCR.
В этом режиме каждая передача начинается только один раз. Если
первая попытка оказалась неудачной, в результате проигрыша
арбитража или ошибки, аппаратура не может автоматически
перезапустить передачу сообщения.
В конце первой попытки передачи аппаратура считает запрос
выполненным и установит бит RQCP в регистре CAN_TSR.
Результат передачи отображается в регистре CAN_TSR состоянием
битов TXOK, ALST и TERR.

Рис.340. Состояния передающих ящиков с исходящими сообщениями

32.7.2. Режим связи по расписанию


В этом режиме активируется внутренний счетчик аппаратуры CAN
который используется для создания отметки времени, значение
которой сохраняется в регистрах CAN_RDTxR/CAN_TDTxR,
соответственно (для Rx и Tx почтовых ящиков). Внутренний счетчик
увеличивается каждый такт CAN (см. раздел 32.7.7. синхронизация
бит). Внутренний счетчик захватывает в качестве точки отсчета
стартовый бит кадра приема и передачи.
11
32.7.3. Обработка принимаемых данных
Для приема CAN сообщений организованы три почтовых ящика в
виде FIFO. В целях сохранения ресурсов CPU, упрощения
приложений и гарантирования целостности данных, FIFO управляется
полностью аппаратно. Приложение осуществляет доступ к
сообщениям, хранящимся в буфере FIFO на выходе FIFO почтового
ящика.
Допустимое сообщение
Полученное сообщение считается правильным если оно было
правильно получено в соответствии с протоколом CAN (no error until
the last but one bit of the EOF field) и успешно прошло
идентификационную фильтрацию, см. раздел 32.7.4.: фильтрация по
идентификатору.

Рис.341. Состояния FIFO приема

Управление FIFO
Начиная с пустого состояния, первое принятое достоверное
сообщение сохраняется в FIFO буфере, который становится в режим
ожидания. Аппаратные сигналы события устанавливают биты
FMP[1:0] регистра CAN_RFR в значение 01b. Сообщение становится
доступным в FIFO почтового ящика исходящих сообщений.
12
Программное обеспечение считывает содержимое почтового ящика и
освобождает его устанавливая бит RFOM в регистре CAN_RFR. FIFO
опустошается снова. Если новое достоверное сообщение было
получено в то же время, FIFO остается в режиме ожидания и новое
сообщение доступно для исходящего почтового ящика.
Если приложение не освобождает почтовый ящик, то следующее
достоверное сообщение сохраняется в FIFO который входит в режим
ожидания 2 (FMP[1:0] = 10b). Процесс сохранения повторяется для
следующего достоверного сообщения, поставив FIFO в состояние
ожидания 3 (FMP[1:0] = 11b). В этот момент приложение должно
освободить исходящий почтовый ящик установкой бита RFOM,
чтобы почтовый ящик освободился для сохранения следующего
достоверного сообщения. Иначе следующее полученное достоверное
сообщение станет причиной потери сообщения.
См. также раздел 32.7.5.: Сохранение сообщений.
Переполнение
После того, как FIFO входит в режим ожидания 3 (т.е. три почтовых
ящика заполнены), следующее достоверное принимаемое сообщение
приведет к переполнению и сообщение будет утеряно. При условии
переполнения аппаратным сигналом устанавливается бит FOVR в
регистре CAN_RFR. Какое сообщение теряется зависит от
конфигурации FIFO:
• Если функция блокировки отключена (RFLM бит в регистре
CAN_MCR очищен), последнее сообщение сохраненное в FIFO
будет перезаписано новым входящим сообщением. В этом случае
последнее сообщение всегда будет доступно для приложения.
• Если функция блокировки включена (RFLM бит в регистре
CAN_MCR установлен) самое последнее сообщение будет
отброшено и приложению будет доступно три наиболее старых
сообщения в FIFO.
Взаимосвязь приема и прерываний
После сохранения сообщения в FIFO, биты FMP[1:0] обновляются и
генерируется запрос на прерывание, если в регистре CAN_IER
установлен бит FMPIE.
Когда FIFO заполнен (т.е. сохранено третье сообщение), бит FULL в
регистре CAN_RFR устанавливается и генерируется прерывание,
если в регистре CAN_IER установлен бит FFIE.
В случае переполнения, устанавливается бит FOVR и генерируется
прерывание, если в регистре CAN_IER установлен бит FOVIE.
32.7.4. Идентификатор фильтрации
В протоколе CAN идентификатор сообщения не связан с адресом
узла, а относится к содержанию сообщения. Следовательно,
передатчик передает эти сообщения для всех приемников. При приеме
сообщения, в зависимости от значения идентификатора, приемный
13
узел определяет – является ли сообщение необходимым для
приложения или нет. Если сообщение необходимо, то оно копируется
в SRAM. Если нет, то сообщение должно игнорироваться без
вмешательства программного обеспечения.
Для выполнения этого требования bxCAN контроллер обеспечивает
28 конфигурируемых и масштабируемых банков фильтров (27-0) для
приложения. В других устройствах bxCAN контроллер обеспечивает
14 конфигурируемых и масштабируемых банков фильтров (13-0) для
приложения в целях получения только необходимых для приложения
сообщений. Такая аппаратная фильтрация сохраняет ресурсы CPU,
которые в противном случае было бы необходимо затратить на
выполнение программной фильтрации. Каждый банк фильтра состоит
из двух 32-битных регистров, CAN_FxR0 и CAN_FxR1.
Масштабируемая ширина
Чтобы оптимизировать и адаптировать фильтры для нужд
приложения, каждый банк фильтра может быть масштабирован
независимо. В зависимости от масштаба, банк фильтра обеспечивает:
• Один 32-битный фильтр для STDID[10:0], EXTID[17:0], IDE и RTR
бит;
• Два 16-битных фильтра для STDID[10:0], RTR, IDE и EXTID[17:15]
бит.
См. рисунок 342.
Кроме того, фильтры можно настроить в маскируемом режиме или в
режиме списка идентификаторов.
Маскируемый режим
В маскируемом режиме регистры идентификатора связаны с
регистрами маски, уточняющими какие биты идентификатора
обрабатываются как «должно соответствовать» или как «без
разницы».
Режим списка идентификаторов
В режиме идентификатора списка, регистры маски используются как
регистры идентификатора. Таким образом, вместо заданных
идентификатора и маски указываются два идентификатора, удваивая
количество отдельных идентификаторов. Все биты входящих
идентификаторов должны соответствовать битам, указанным в
регистрах фильтров.
Масштабирование банка фильтров и конфигурирование режимов
Банки фильтров настраиваются значениями соответствующего
CAN_FMR регистра. Для конфигурации банка фильтров он должен
быть отключен очисткой бита FACT в регистре CAN_FAR. Масштаб
фильтров настраивается значениями соответствующих FSCx бит в
регистре CAN_FS1R, см. рисунок 342. Режим списка
идентификаторов или маски идентификатора для соответствующих
14
регистров маски/идентификатора настраивается значениями битов
FBMx в регистре CAN_FMR.

Рис.342. Конфигурация масштаба банка фильтров – организация регистра

Для фильтрации группы идентификаторов, необходимо настроить


регистры маски/идентификатора в маскируемом режиме.
Для выбора единственного идентификатора, необходимо настроить
регистры маски/идентификатора в режиме списка идентификатора.
Фильтры, которые не используются приложением, должны быть
оставлены отключенными.
Каждый фильтр в банке фильтров пронумерован (называется номер
фильтра) от 0 до максимума и зависит от режима и масштаба каждого
из банков фильтра.
О конфигурировании фильтра см. рисунок 342.
Индексация в соответствии с фильтром
После того как сообщение было получено в FIFO, оно доступно для
приложения. Как правило, данные приложения копируются в SRAM.
Для копирования данных в правильное месторасположение,
приложение идентифицирует данные с помощью идентификатора.
15
Чтобы избежать этого и облегчить доступ к SRAM, CAN контроллер
обеспечивает индексацию в соответствии с фильтром.
Такой индекс сохраняется в почтовом ящике вместе с сообщением
соответствующим правилам приоритета фильтров. Таким образом,
каждое полученное сообщение индексируется в соответствие с
фильтром.

Рис.343. Пример нумерации фильтров

Индексацию в соответствии с фильтром можно применять двумя


способами:
• Сравнение индекса, соответствующего фильтру со списком
ожидаемых значений;
• Использование индекса, соответствующего фильтру как указателя
на массив для доступа к искомым данным.
Для немаскируемых фильтров приложение не сравнивает
идентификаторы.
Если фильтр маскируемый, то приложение уменьшает сравнение
только до маскируемых бит.
Значение индекса номера фильтра не принимает во внимание
активное состояние банков фильтра. В дополнение, используются две
независимых схемы нумерации, одна для каждого FIFO.
См. рисунок 343 например.
16
Правила приоритета фильтров
В зависимости от комбинации фильтров, может произойти, что
идентификатор успешно проходит через несколько фильтров. В таком
случае фильтр с совпадающим значением сохраняется в приемном
почтовом ящике, выбираемом по следующим правилам приоритета:
• 32-х битный фильтр получает приоритет над 16-битным фильтром.
• Для фильтров с одинаковым масштабом, приоритет дается режиму
списка идентификатора над режимом маски идентификатора.
• Для фильтров с одинаковым масштабом и режимом, приоритет
отдается номеру фильтра (чем меньше номер, тем выше приоритет).
В приведенном ниже примере показаны принципы фильтрации в
bxCAN. В принятом сообщении идентификатор сперва сравнивается с
фильтрами, сконфигурированными в режиме списка идентификатора.
Если есть совпадение, сообщение сохраняется в соответствующий
FIFO и присвоенный индекс сравниваемого фильтра сохраняется в
поле FMI (Filter Match Index) регистра CAN_RDTxR. Как показано в
примере, идентификатор сравнивается с идентификатором 2 и таким
образом содержимое сообщения и FMI 2 сохраняется в FIFO.
Если совпадений нет, входящий идентификатор сравнивается с
фильтрами настроенными в маскируемом режиме.
Если идентификатор не совпадает с любыми идентификаторами,
настроенными в фильтрах, сообщение игнорируется аппаратно без
вмешательства программного обеспечения.

Рис.344. Пример механизма фильтрации\


17
32.7.5. Сохранение сообщений
Интерфейс между приложением и аппаратной частью для CAN
сообщений реализован посредством почтовых ящиков. Почтовый
ящик содержит всю информацию, относящуюся к сообщению;
идентификатор, данные, биты контроля, состояния и информацию о
временных метках.
Почтовый ящик исходящих сообщений
Приложение задает параметры передаваемого сообщения в пустой
почтовый ящик для исходящих сообщений. Состояние передачи
отображается аппаратно в регистре CAN_TSR.
Табл.181. Карта адресов почтовых ящиков для передачи исходящих сообщений

Почтовый ящик входящих сообщений


Когда сообщение получено, оно доступно для приложения в почтовом
ящике входящих сообщений FIFO. После того, как сообщение
обработано программно (т.е. прочитано), приложение должно
освободить выходной буфер FIFO почтового ящика с помощью бита
RFOM в регистре CAN_RFR, чтобы стало возможным получение
следующего входящего сообщения. Индекс соответствующий
фильтру сохраняется в поле FMI регистра CAN_RDTxR. Значение
16-битной временной метки сохраняется в поле TIME[15:0] регистра
CAN_RDTxR.
Табл.182. Карта адресов почтовых ящиков для приема входящих сообщений

32.7.6. Управление ошибками


Управление ошибками, как описывается в протоколе CAN
интерфейса, выполняется полностью аппаратно используя счетчик
ошибок передачи «Transmit Error Counter» (значение TEC в регистре
CAN_ESR) и счетчик ошибок приема «Receive Error Counter»
(значение REC в регистре CAN_ESR), которые увеличиваются или
уменьшаются в зависимости от условий ошибки. Для более
подробной информации об управлении TEC и REC смотрите
стандарт CAN.
18
Оба из этих счетчиков можно программно прочитать, чтобы
определить стабильность сети.
Кроме того, аппаратура CAN предоставляет детальную информацию о
текущем состоянии ошибки в регистре CAN_ESR ESR. С помощью
регистра CAN_IIER (бит ERRIE,, и др.), можно программно
програ очень
гибко настроить генерацию прерывания при обнаружении ошибки.

Рис.345.
345. Диаграмма состояния ошибок CAN

Восстановление сбоя шины


Состояние сбоя шины достигается, когда TEC больше чем 255, на это
состояние указывает бит BOFF в регистре CAN_ESR ESR. В состоянии
сбоя шины bxCAN больше не может передавать и принимать
сообщения.
В зависимости от бита ABOM в регистре CAN_MCR MCR bxCAN будет
восстановлен из состояния сбоя шины (ошибка
(ошибка снова стала активной)
активной
либо автоматически, либо после программного запроса. Но в обоих
случаях bxCAN придется ждать, по крайней мере до восстановления
последовательности указанной в CAN стандарте (отслеживание
( 11
рецессивных бит на CANRX в 128 случаях).
Если бит ABOM установлен, bxCAN запускает последовательность
последовательност
восстановления после
п входа в состояние сбоя шины.
Если бит ABOM очищен, то приложение должно инициировать
цепочку восстановления отправляя запросы bxCAN на вход и выход
из режима инициализации.
Прим.: В режиме инициализации bxCAN не отслеживает сигнал на CANRX,
поэтому завершение цепочки восстановления невозможно. Для
восстановления, bxCAN должен быть в нормальном режиме.
режиме
19
32.7.7. Синхронизация данных
Логика синхронизации данных контролирует последовательную
шину, выполняет взятие выборок и регулирует точки выборок,
синхронизируя по фронту старт бита и ресинхронизируя по
следующему фронту.
Его работа может быть объяснена простым разделением номинальной
скорости на три фрагмента следующим образом:
• Фрагмент синхронизации (SYNC_SEG): изменение бит должно
произойти в этот отрезок времени. Он имеет фиксированную длину
одного такта (1 x tq).
• Фрагмент бита №1 (BS1): определяет расположение точек выборок.
Он включает в себя PROP_SEG и PHASE_SEG1 по стандарту CAN.
Его продолжительность программируется от 1 до 16 тактов, но
может быть автоматически продлена, чтобы компенсировать
положительный сдвиг фазы из-за различий частоты в разных узлах
сети.
• Фрагмент бита №2 (BS2): определяет расположение точки
передачи. Он представляет собой PHASE_SEG2 согласно стандарту
CAN. Его продолжительность программируется от 1 до 8 тактами,
но может также быть автоматически сокращена для компенсации
отрицательного сдвига фазы.
Ширина шага ресинхронизации (SJW) определяет верхний предел для
размера удлинений и укорочений битовых сегментов. Он
программируется между 1 и 4 тактами.
Достоверный фронт определяется как первый переход при
синхронизации от доминантного к рецессивному уровню шины, при
условии, что контроллер не отправляет рецессивный бит сам себе.
Если достоверный фронт обнаружен в BS1 вместо SYNC_SEG, BS1
продлевается до SJW, так что точка выборки откладывается.
И наоборот, если допустимый фронт обнаружен в BS2 вместо
SYNC_SEG, BS2 сокращается до SJW, так что точка передачи
смещается раньше.
В качестве защиты от ошибок программирования, конфигурация
регистров Синхронизации (CAN_BTR) возможна, только пока
устройство в режиме ожидания.
Прим.: Для детального описания синхронизации CAN и механизма
ресинхронзации см. стандарт ISO 11898.
20

Рис.346. Синхронизация данных


21

Рис.347. Кадры данных CAN

32.8. Прерывания bxCAN


В bxCAN выделено четыре вектора прерываний. Каждый источник
прерывания может быть независимо включен или отключен с
помощью регистра CAN Interrupt Enable (CAN_IER).
• Прерывание передачи может быть вызвано следующими
событиями:
- Ящик исходящих сообщений 0 пуст, установлен бит RQCP0 в
регистре CAN_TSR.
- Ящик исходящих сообщений 1 пуст, установлен бит RQCP1 в
регистре CAN_TSR.
22
- Ящик исходящих сообщений 2 пуст, установлен бит RQCP2 в
регистре CAN_TSR.

Рис.348. Флаги событий и генерация прерываний

• Прерывание FIFO 0 может быть сгенерировано следующими


событиями:
- Получение нового сообщения, биты FMP0 в регистре
CAN_RF0R не «00».
- При условии заполнения FIFO0, в регистре CAN_RF0R
установлен FULL0 бит.
- При условии переполнения FIFO0, в регистре CAN_RF0R
установлен FOVR0 бит.
• Прерывание FIFO 1 может быть сгенерировано следующими
событиями:
- Получение нового сообщения, биты FMP1 в регистре
CAN_RF1R не «00».
23
- При условии заполнения FIFO1, в регистре CAN_RF1R
установлен FULL1 бит.
- При условии переполнения FIFO1, в регистре CAN_RF1R
установлен FOVR1 бит.
• Ошибка и изменение статуса прерывания могут генерироваться
следующими событиями:
- При условии ошибки, для более подробной информации
обращайтесь к описанию регистра статуса ошибок CAN
(CAN_ESR).
- При условии пробуждения, контроль SOF на выводе CAN Rx.
- Вход в спящий режим.
32.9. Описание регистров CAN
Регистры периферии имеют доступ размерностью слово (32-бита).
32.9.1. Защита доступа к регистрам
Неправильный доступ при конфигурации определенных регистров
может вызвать аппаратное нарушение с временным нарушением
целостности сети. Поэтому регистр CAN_BTR можно изменять
только когда аппаратура находится в режиме инициализации.
Хотя передача недостоверных данных не вызовет проблем на уровне
сети CAN, но может серьезно нарушить работу приложения. Ящик
исходящих сообщений может быть изменен программно, пока он
пуст, см. рисунок 340: состояния ящика исходящих сообщений.
Значения фильтров можно изменять либо при отключении
соответствующих банков фильтров, либо при установке бита FINIT.
Более того, изменение конфигурации фильтра (масштаб, режим и
закрепление за FIFO) в регистрах CAN_FMxR, CAN_FSxR и
CAN_FFAR может выполняться, только когда в режиме
инициализации фильтра в регистре CAN_FMR установлен бит FINIT
(FINIT=1).
32.9.2. Регистры управления и статуса CAN
См. раздел 1.1. со списком сокращений используемых при описании
регистров.
24
CAN master control register (CAN_MCR)
Address offset: 0x00
Reset value: 0x0001 0002
31 30 29 28 27 26 25 24
Reserved
23 22 21 20 19 18 17 16
DBF
Reserved
RW
15 14 13 12 11 10 9 8
RESET
Reserved
RW
7 6 5 4 3 2 1 0
TTCM ABOM AWUM NART RFLM TXFP SLEEP INRQ
RW RW RW RW RW RW RW RW

Биты 31:17 Зарезервированы, аппаратно сброшены в 0.


Бит 16 DBF: Заморозка при отладке
0: CAN работает во время отладки
1: CAN прием/передача заморожены во время отладки. Буферы
приема FIFOs все еще доступны/управляются нормально.
Бит 15 RESET: bxCAN управление программным принудительным
сбросом
0: Нормальная работа.
1: Активировать принудительный сброс bxCAN -> После сброса
активируется спящий режим (биты FMP и регистр CAN_MCR
инициализируются исходными значениями «reset value»). Этот
бит автоматически сбрасывается в 0.
Биты 14:8 Зарезервированы, должны иметь «reset value».
Бит 7 TTCM: Режим связи «по расписанию».
0: Режим связи «по расписанию» отключен.
1: Режим связи «по расписанию» включен.
Прим: Для более подробной информации о режиме связи «по
расписанию» см. раздел 32.7.2.: Режим связи «по расписанию».
Бит 6 ABOM: Автоматическое управление «bus-off»
Этот бит управляет поведением аппаратной части CAN при
выходе из состояния «Bus-Off».
0: Контроллер выходит из состояния «Bus-Off» по программному
запросу, после обнаружения 128 случаев появления 11
рецессивных бит и первой программной установки и очистки
бита INRQ в регистре CAN_MCR.
1: Контроллер выходит из состояния «Bus-Off» автоматически
аппаратно, после обнаружения 128 случаев появления 11
рецессивных бит.
Для более подробной информации о состоянии «Bus-off» см.
раздел 32.7.6: Управление ошибками.
25
Бит 5 AWUM: Режим автоматического пробуждения
Этот бит управляет поведением аппаратуры CAN при
получении сообщения в течение спящего режима.
0: Контроллер выходит из спящего режима при программной
очистке бита SLEEP в регистре CAN_MCR.
1: Контроллер выходит из спящего режима автоматически
аппаратно при обнаружении сообщения.
Бит SLEEP регистра CAN_MCR и бит SLAK регистра
CAN_MSR очищаются аппаратно.
Бит 4 NART: Запрет автоматической повторной передачи.
0: Аппаратура CAN будет автоматически повторно передавать
сообщение, пока не произойдет успешной передачи в
соответствии со стандартом CAN.
1: Повторная передача сообщения произойдет лишь один раз,
независимо от результата передачи (успешно, ошибка или
потеря арбитража).
Бит 3 RFLM: Режим блокировки приемного FIFO буфера.
0: Приемный FIFO буфер не блокируется при переполнении.
После того, как приемный FIFO буфер заполнен, следующее
входящее сообщение перезапишет предыдущее.
1: Приемный FIFO буфер блокируется при переполнении. После
заполнения приемного FIFO буфера последующие входящие
сообщения игнорируются.
Бит 2 TXFP: Приоритет передающего FIFO буфера.
Этот бит управляет порядком передачи, когда несколько
почтовых ящиков в ожидании одновременно.
0: Приоритет определяется идентификатором сообщения.
1: Приоритет определяется порядком запросов на передачу (в
хронологическом порядке).
Бит 1 SLEEP: Запрос спящего режима
Этот бит устанавливается программно для запроса аппаратуры
CAN на вход в спящий режим. Вход в спящий режим
произойдет сразу же после завершения текущей активности
CAN (передача или прием кадра данных CAN).
Этот бит очищается программно для выхода из спящего
режима.
Этот бит очищается аппаратно, когда установлен бит AWUM и
на выводе CAN Rx обнаружен сигнал SOF.
Этот бит установлен после сброса - CAN запускается в спящем
режиме.
Бит 0 INRQ: Запрос инициализации
Программное обеспечение должно очистить этот бит, чтобы
переключиться в нормальный режим. После обнаружения
26
последовательности из 11 рецессивных бит на выводе Rx,
аппаратура CAN синхронизируется и готова для передачи и
приема. Аппаратным сигналом этого события очищается бит
INAK в регистре CAN_MSR.
Программное обеспечение устанавливает этот бит для запроса
аппаратуры CAN на вход в режим инициализации. После
программной установки бита INRQ, аппаратура CAN ожидает
завершения текущей активности, (передача или прием) прежде
чем войти в режим инициализации. Аппаратные сигналы этого
события устанавливают бит INAK в регистре CAN_MSR.
27
CAN master status register (CAN_MSR)
Address offset: 0x04
Reset value: 0x0000 0C02
31 30 29 28 27 26 25 24
Reserved
23 22 21 20 19 18 17 16
Reserved
15 14 13 12 11 10 9 8
RX SAMP RXM TXM
Reserved
r r r r
7 6 5 4 3 2 1 0
SLAKI WKUI ERRI SLAK INAK
Reserved
rc_w1 rc_w1 rc_w1 r r

Биты 31:12 Зарезервированы, должны иметь «reset value».


Бит 11 RX: Сигнал приема CAN Rx
Отслеживает фактическое значение вывода CAN_RX.
Бит 10 SAMP: Последняя выборка
Значение RX последней принятой выборки (значение текущего
полученного бита).
Бит 9 RXM: Режим приема
В настоящее время аппаратура CAN работает на прием.
Бит 8 TXM: Режим передачи
В настоящее время аппаратура CAN работает на передачу.
Биты 7:5 Зарезервированы, должны иметь «reset value».
Бит 4 SLAKI: Подтверждение прерывания спящего режима
Когда SLKIE = 1, этот бит устанавливается аппаратно и
сигнализирует, что bxCAN вошел в спящий режим. Когда
установлен этот бит, генерируется прерывание, если в регистре
CAN_IER установлен бит SLKIE.
Этот бит очищается программно или аппаратно, когда бит
SLAK очищен.
Прим: Когда SLKIE = 0, можно не опрашивать SLAKI. В этом случае
может быть опрошен бит SLAK.
Бит 3 WKUI: Прерывание пробуждения.
Этот бит устанавливается аппаратно и сигнализирует о том,
что был обнаружен бит SOF во время спящего режима CAN.
Когда установлен этот бит, генерируется прерывание, если
установлен бит WKUIE в регистре CAN_IER.
Этот бит очищается программно.
Бит 2 ERRI: Прерывание ошибки
Этот бит устанавливается аппаратно, когда бит регистра
CAN_ESR был настроен на обнаружение ошибок и включено
соответствующее прерывание в регистре CAN_IER. Установка
28
этого бита, генерирует изменение состояния прерывания, если
установлен бит ERRIE в регистре CAN_IER.
Этот бит очищается программно.
Бит 1 SLAK: Подтверждение режима сна
Этот бит устанавливается аппаратно и указывает
программному обеспечению, что аппаратура CAN сейчас в
спящем режиме. Этот бит подтверждает спящий режим по
программному запросу (установка бита SLEEP в регистре
CAN_MCR).
Этот бит очищается аппаратно, когда аппаратура CAN
покинула спящий режим (для синхронизации на CAN шине).
Для синхронизации аппаратура отслеживает
последовательность из 11 подряд идущих рецессивных бит на
выводе CAN RX.
Прим: Процесс выхода из спящего режима запускается, после
очистки бита SLEEP в регистре CAN_MCR. См. описание
бита AWUM регистра CAN_MCR для более подробной
информации по очистке бита SLEEP.
Бит 0 INAK: Подтверждение инициализации
Этот бит устанавливается аппаратно и указывает
программному обеспечению, что аппаратура CAN сейчас
находится в режиме инициализации. Этот бит подтверждает
режим инициализации по программному запросу (установка
бита INRQ в регистре CAN_MCR).
Этот бит очищается аппаратно, когда аппаратура CAN вышла
из режима инициализации (для синхронизации на CAN шине).
Для синхронизации аппаратура отслеживает
последовательность из 11 подряд идущих рецессивных бит на
выводе CAN RX.
29
CAN transmit status register (CAN_TSR)
Address offset: 0x08
Reset value: 0x1C00 0000
31 30 29 28 27 26 25 24
LOW2 LOW1 LOW0 TME2 TME1 TME0 CODE[1:0]
r r r r r r r r
23 22 21 20 19 18 17 16
ABRQ2 TERR2 ALST2 TXOK2 RQCP2
Reserwed
rs rc_w1 rc_w1 rc_w1 rc_w1
15 14 13 12 11 10 9 8
ABRQ1 TERR1 ALST1 TXOK1 RQCP1
Reserwed
rs rc_w1 rc_w1 rc_w1 rc_w1
7 6 5 4 3 2 1 0
ABRQ0 TERR0 ALST0 TXOK0 RQCP0
Reserwed
rs rc_w1 rc_w1 rc_w1 rc_w1

Бит 31 LOW2: Флаг наименьшего приоритета для почтового


ящика №2.
Этот бит устанавливается аппаратно, когда больше чем 1
почтовый ящик в состоянии ожидания на передачу и почтовый
ящик 2 имеет наименьший приоритет.
Бит 30 LOW1: Флаг наименьшего приоритета для почтового
ящика №1.
Этот бит устанавливается аппаратно, когда больше чем 1
почтовый ящик в состоянии ожидания на передачу и почтовый
ящик 1 имеет наименьший приоритет.
Бит 29 LOW0: Флаг наименьшего приоритета для почтового
ящика №1
Этот бит устанавливается аппаратно, когда больше чем 1
почтовый ящик в состоянии ожидания на передачу и почтовый
ящик 0 имеет наименьший приоритет.
Прим: Биты LOW[2:0] сбрасываются в 0, когда в состоянии ожидания
только 1 почтовый ящик.
Бит 28 TME2: Передающий почтовый ящик 2 пуст
Этот бит устанавливается аппаратно, когда в очереди
ожидания нет запросов на передачу для почтового ящика 2.
Бит 27 TME1: Передающий почтовый ящик 1 пуст
Этот бит устанавливается аппаратно, когда в очереди
ожидания нет запросов на передачу для почтового ящика 1.
Бит 26 TME0: Передающий почтовый ящик 0 пуст
Этот бит устанавливается аппаратно, когда в очереди
ожидания нет запросов на передачу для почтового ящика 0.
Биты 25:24 CODE[1:0]: Код почтового ящика
В случае, если хотя бы один передающий почтовый ящик
свободен, значение кода равно номеру следующего свободного
передающего почтового ящика.
30
В случае, если все передающие ящики находятся в очереди
ожидания, то значение кода равно номеру передающего
почтового ящика с самым низким приоритетом.
Бит 23 ABRQ2: Прерывание запроса для почтового ящика 2
Устанавливается программно для прерывания запроса на
передачу для соответствующего почтового ящика.
Очищается аппаратно, когда почтовый ящик становится
пустым.
Установка этого бита не имеет эффекта, когда почтовый ящик
не находится в очереди ожидания на передачу.
Биты 22:20 Зарезервированы, должны иметь «reset value».
Бит 19 TERR2: Ошибка передачи почтового ящика 2
Этот бит установлен, когда при предыдущей попытке передачи
произошла ошибка.
Бит 18 ALST2: Потеря арбитража для почтового ящика 2
Этот бит установлен, когда при предыдущей попытке передачи
произошел проигрыш арбитража.
Бит 17 TXOK2: Передача почтового ящика 2 произошла успешно.
Аппаратура обновляет этот бит после каждой попытки
передачи.
0: При предыдущей передаче произошла ошибка
1: Предыдущая передача была успешна
Этот бит устанавливается аппаратно, когда запрос на передачу
почтового ящика 2 завершен успешно. См. рисунок 340.
Бит 16 RQCP2: Завершен запрос почтового ящика 2
Устанавливается аппаратно после того, как последний запрос
выполнен (передача или прерывание).
Очищается программно записью «1» или аппаратно при
запросе передачи (установка TXRQ2 в регистре
CAN_TMID2R).
Очистка этого бита очищает все биты статуса (TXOK2, ALST2
и TERR2) для почтового ящика 2.
Бит 15 ABRQ1: Прерывание запроса для почтового ящика 1
Устанавливается программно для прерывания запроса на
передачу для соответствующего почтового ящика.
Очищается аппаратно, когда почтовый ящик становится
пустым.
Установка этого бита не имеет эффекта, когда почтовый ящик
не находится в очереди ожидания на передачу.
Биты 14:12 Зарезервированы, должны иметь «reset value».
Бит 11 TERR1: Ошибка передачи почтового ящика 1
31
Этот бит установлен, когда при предыдущей попытке передачи
произошла ошибка.
Бит 10 ALST1: Потеря арбитража для почтового ящика 1
Этот бит установлен, когда при предыдущей попытке передачи
произошел проигрыш арбитража.
Бит 9 TXOK1: Передача почтового ящика 1 произошла успешно.
Аппаратура обновляет этот бит после каждой попытки
передачи.
0: При предыдущей передаче произошла ошибка
1: Предыдущая передача была успешна
Этот бит устанавливается аппаратно, когда запрос на передачу
почтового ящика 1 завершен успешно. См. рисунок 340.
Бит 8 RQCP1: Завершен запрос почтового ящика 1
Устанавливается аппаратно после того, как последний запрос
выполнен (передача или прерывание).
Очищается программно записью «1» или аппаратно при
запросе передачи (установка TXRQ1 в регистре
CAN_TMID1R).
Очистка этого бита очищает все биты статуса (TXOK1, ALST1
и TERR1) для почтового ящика 1.
Бит 7 ABRQ0: Прерывание запроса для почтового ящика 0
Устанавливается программно для прерывания запроса на
передачу для соответствующего почтового ящика.
Очищается аппаратно, когда почтовый ящик становится
пустым.
Установка этого бита не имеет эффекта, когда почтовый ящик
не находится в очереди ожидания на передачу.
Биты 6:4 Зарезервированы, должны иметь «reset value».
Бит 3 TERR0: Ошибка передачи почтового ящика 0
Этот бит установлен, когда при предыдущей попытке передачи
произошла ошибка.
Бит 2 ALST0: Потеря арбитража для почтового ящика 0
Этот бит установлен, когда при предыдущей попытке передачи
произошел проигрыш арбитража.
Бит 1 TXOK0: Передача почтового ящика 0 произошла успешно
Аппаратура обновляет этот бит после каждой попытки
передачи.
0: При предыдущей передаче произошла ошибка
1: Предыдущая передача была успешна
Этот бит устанавливается аппаратно, когда запрос на передачу
почтового ящика 0 завершен успешно. См. рисунок 227.
Бит 0 RQCP0: Завершен запрос почтового ящика 0
32
Устанавливается аппаратно после того, как последний запрос
выполнен (передача или прерывание).
Очищается программно записью «1» или аппаратно при
запросе передачи (установлен TXRQ0 в регистре
CAN_TMID0R).
Очистка этого бита очищает все биты статуса (TXOK0, ALST0
и TERR0) для почтового ящика 0.
33
CAN receive FIFO 0 register (CAN_RF0R)
Address offset: 0x0C
Reset value: 0x0000 0000
31 30 29 28 27 26 25 24
Reserved
23 22 21 20 19 18 17 16
Reserved
15 14 13 12 11 10 9 8
Reserved
7 6 5 4 3 2 1 0
RFOM0 FOVR0 FULL0 FMP0[1:0]
Reserved Reserved
rs rc_w1 rc_w1 r r

Биты 31:6 Зарезервированы, должны иметь «reset value».


Бит 5 RFOM0: Освобождение выходного FIFO0 почтового ящика
Устанавливается программно для освобождения выходного
почтового ящика FIFO. Выходной почтовый ящик может быть
освобожден только когда, по крайней мере, одно сообщение
находится в ожидании в FIFO. Установка этого бита при
пустом FIFO не оказывает никакого эффекта. Если, по крайней
мере, два сообщения в ожидании в FIFO, программное
обеспечение должно освободить выходной почтовый ящик,
чтобы получить доступ к следующему сообщению.
Очищается аппаратно, после того как выходной почтовый
ящик был освобожден.
Бит 4 FOVR0: Переполнение FIFO0
Этот бит устанавливается аппаратно, когда полученное новое
сообщение прошло фильтр, в то время как FIFO был заполнен.
Этот бит очищается программно.
Бит 3 FULL0: FIFO0 заполнен
Устанавливается аппаратно когда три сообщения сохранены в
FIFO.
Этот бит очищается программно.
Бит 2 Зарезервирован, должен иметь «reset value».
Биты 1:0 FMP0[1:0]: Сообщение в FIFO0 в ожидании.
Эти биты показывают сколько сообщений в ожидании в
приемном FIFO.
Значение FMP увеличивается каждый раз, как аппаратура
сохраняет новое сообщение в FIFO. Величина FMP
уменьшается каждый раз, как программное обеспечение
освобождает выходной почтовый ящик установкой бита
RFOM0.
34
CAN receive FIFO 1 register (CAN_RF1R)
Address offset: 0x10
Reset value: 0x0000 0000
31 30 29 28 27 26 25 24
Reserved
23 22 21 20 19 18 17 16
Reserved
15 14 13 12 11 10 9 8
Reserved
7 6 5 4 3 2 1 0
RFOM1 FOVR1 FULL1 FMP1[1:0]
Reserved Reserved
rs rc_w1 rc_w1 r r

Биты 31:6 Зарезервированы, должны иметь «reset value».


Бит 5 RFOM1: Освобождение выходного FIFO1 почтового ящика
Устанавливается программно для освобождения выходного
почтового ящика FIFO. Выходной почтовый ящик может быть
освобожден только когда, по крайней мере, одно сообщение
находится в ожидании в FIFO. Установка этого бита при
пустом FIFO не оказывает никакого эффекта. Если, по крайней
мере, два сообщения в ожидании в FIFO, программное
обеспечение должно освободить выходной почтовый ящик,
чтобы получить доступ к следующему сообщению.
Очищается аппаратно, после того как выходной почтовый
ящик был освобожден.
Бит 4 FOVR1: Переполнение FIFO1
Этот бит устанавливается аппаратно, когда полученное новое
сообщение прошло фильтр, в то время как FIFO был заполнен.
Этот бит очищается программно.
Бит 3 FULL1: FIFO1 заполнен
Устанавливается аппаратно, когда три сообщения сохранены в
FIFO.
Этот бит очищается программно.
Бит 2 Зарезервирован, должен иметь «reset value».
Биты 1:0 FMP1[1:0]: Сообщение в FIFO1 в ожидании.
Эти биты показывают сколько сообщений в ожидании в
приемном FIFO1.
Значение FMP1 увеличивается каждый раз, как аппаратура
сохраняет новое сообщение в FIFO1. Величина FMP1
уменьшается каждый раз, как программное обеспечение
освобождает выходной почтовый ящик установкой бита
RFOM1.
35
CAN interrupt enable register (CAN_IER)
Address offset: 0x14
Reset value: 0x0000 0000
31 30 29 28 27 26 25 24
Reserved
23 22 21 20 19 18 17 16
SLKIE WKUIE
Reserved
rw rw
15 14 13 12 11 10 9 8
ERRIE LECIE BOFIE EPVIE EWGIE
Reserved
rw rw rw rw rw
7 6 5 4 3 2 1 0
FOVIE1 FFIE1 FMPIE1 FOVIE0 FFIE0 FMPIE0 TMEIE
Reserved
rw rw rw rw rw rw rw

Биты 31:18 Зарезервированы, должны иметь «reset value».


Бит 17 SLKIE: Прерывание в спящем режиме разрешено
0: При установленном бите SLAKI нет прерывания.
1: Генерация прерывания разрешена при установленном бите
SLAKI.
Бит 16 WKUIE: Прерывание пробуждения разрешено
0: При установленном бите WKUI нет прерывания.
1: Генерация прерывания разрешена при установленном бите
WKUI.
Бит 15 ERRIE: Прерывание при ошибке разрешено
0: При существовании состояния ошибки в регистре CAN_ESR
прерывание не сгенерируется.
1: При существовании состояния ошибки в регистре CAN_ESR
произойдет генерация прерывания.
Биты 14:12 Зарезервированы, должны иметь «reset value».
Бит 11 LECIE: Разрешения прерывания по коду последней ошибки
0: Бит ERRI не будет установлен, когда в LEC[2:0] аппаратно
установится код ошибки при ее обнаружении.
1: Бит ERRI будет установлен, когда в LEC[2:0] аппаратно
установится код ошибки при ее обнаружении.
Бит 10 BOFIE: «Bus-off» прерывание разрешено
0: Бит ERRI не будет установлен, когда установлен BOFF.
1: Бит ERRI будет установлен, когда установлен BOFF.
Бит 9 EPVIE: Разрешение прерывания при скрытой ошибке
0: Бит ERRI не будет установлен, когда установлен EPVF.
1: Бит ERRI будет установлен, когда установлен EPVF.
Бит 8 EWGIE: Разрешения прерывания предупреждения при
ошибке
0: Бит ERRI не будет установлен, когда установлен EWGF.
36
1: Бит ERRI будет установлен, когда установлен EWGF.
Бит 7 Зарезервирован, должен иметь «reset value».
Бит 6 FOVIE1: Разрешение прерывания при переполнении FIFO1
0: При установленном бите FOVR прерывание не произойдет.
1: При установленном бите FOVR прерывание произойдет.
Бит 5 FFIE1: Разрешение прерывания при заполнении FIFO1
0: При установленном бите FULL прерывание не произойдет.
1: При установленном бите FULL прерывание произойдет.
Бит 4 FMPIE1: Разрешение прерывания FIFO message pending
0: Прерывание не произойдет, когда состояние битов FMP[1:0]
не «00».
1: Прерывание произойдет, когда состояние битов FMP[1:0] не
«00».
Бит 3 FOVIE0: Разрешение прерывания при переполнении FIFO0
0: При установленном бите FOVR прерывание не произойдет.
1: При установленном бите FOVR прерывание произойдет.
Бит 2 FFIE0: Разрешение прерывания при заполнении FIFO0
0: При установленном бите FULL прерывание не произойдет.
1: При установленном бите FULL прерывание произойдет.
Бит 1 FMPIE0: Разрешение прерывания FIFO message pending
0: Прерывание не произойдет, когда состояние битов FMP[1:0]
не «00».
1: Прерывание произойдет, когда состояние битов FMP[1:0] не
«00».
Бит 0 TMEIE: Разрешение прерывания при пустом передающем
почтовом ящике
0: Прерывание не произойдет при установленном бите RQCPx.
1: Прерывание произойдет при установленном бите RQCPx.
Прим: См. раздел 24.8: прерывания bxCAN.
37
CAN error status register (CAN_ESR)
Address offset: 0x18
Reset value: 0x0000 0000
31 30 29 28 27 26 25 24
REC[7:0]
r r r r r r r r
23 22 21 20 19 18 17 16
TEC[7:0]
r r r r r r r r
15 14 13 12 11 10 9 8
Reserved
7 6 5 4 3 2 1 0
LEC[2:0] BOFF EPVF EWGF
Reserved Reserved
rw rw rw r r r

Биты 31:24 REC[7:0]: Счетчик ошибок приема


Часть CAN протокола реализующая механизм локализации
ошибок. В случае ошибки во время приема, этот счетчик
увеличивается на 1 или 8 в зависимости от условий,
определяемых стандартом CAN. После каждого успешного
приема счетчик уменьшается на 1 или сбрасывается до 120
если его значение было выше 128. Когда значение счетчика
превышает 127, CAN контроллер входит в пассивное состояние
ошибки.
Биты 23:16 TEC[7:0]: Младший значащий байт счетчика ошибок
передачи
Часть CAN протокола реализующая механизм локализации
ошибок.
Биты 15:7 Зарезервированы, должны иметь «reset value».
Биты 6:4 LEC[2:0]: Код последней ошибки
Эта область устанавливается аппаратно и содержит код,
который указывает ошибочные условия, по причине которых
произошла последняя ошибка на CAN шине. Если сообщение
было передано (получено или отправлено)без ошибки, это поле
будет сброшено в «0».
Значение бит LEC[2:0] можно установить программно в «111».
Они обновятся аппаратно для указания текущего состояния
линии связи.
000: Нет ошибок
001: Stuff Error
010: Form Error
011: Acknowledgment Error
100: Bit recessive Error
101: Bit dominant Error
110: CRC Error
38
111: Set by software
Бит 3 Зарезервирован, должен иметь «reset value».
Бит 2 BOFF: Флаг «Bus-off»
Этот бит устанавливается аппаратно, когда входит в состояние
«bus-off». Состояние «bus-off» получается при переполнении
счетчика TEC, больше чем 255, см. раздел 24.7.6 на стр. 644.
Бит 1 EPVF: Error passive flag
Этот бит устанавливается аппаратно, когда был достигнут
предел Error Passive (Счетчики ошибок приема или ошибок
передачи > 127).
Бит 0 EWGF: Флаг предупреждения об ошибке
Этот бит устанавливается аппаратно, когда приближается
опасность достижения предела (Счетчики ошибок приема или
ошибок передачи ≥ 96).
39
CAN bit timing register (CAN_BTR)
Address offset: 0x1C
Reset value: 0x0123 0000
Этот регистр может быть доступен программно, только когда
аппаратура CAN в режиме инициализации.
31 30 29 28 27 26 25 24
SILM LBKM SJW[1:0]
Reserved
rw rw rw rw
23 22 21 20 19 18 17 16
TS2[2:0] TS1[3:0]
Reserved
rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
BRP[9:8]
Reserved
rw rw
7 6 5 4 3 2 1 0
BRP[7:0]
rw rw rw rw rw rw rw rw

Бит 31 SILM: Режим молчания (для отладки)


0: Нормальная работа
1: Режим молчания
Бит 30 LBKM: Режим Loop back mode (для отладки)
0: Режим Loop Back Mode запрещен
1: Режим Loop Back Mode разрешен
Биты 29:26 Зарезервированы, должны иметь «reset value».
Биты 25:24 SJW[1:0]: Ширина перехода ресинхронизации
Эти биты определяют максимальное количество квантов
времени аппаратуры CAN позволяющих удлинить или
сократить бит для выполнения ресинхронизации.
tRJW = tCAN x (SJW[1:0] + 1)
Бит 23 Зарезервирован, должен иметь «reset value».
Биты 22:20 TS2[2:0]: Временной отрезок 2
Эти биты определяют количество временных квантов во
временном отрезке 2.
tBS2 = tCAN x (TS2[2:0] + 1)
Биты 19:16 TS1[3:0]: Временной отрезок 1
Эти биты определяют количество временных квантов во
временном отрезке 1
tBS1 = tCAN x (TS1[3:0] + 1)
Для более подробной информации по тактовой синхронизации,
см. раздел 32.7.7: Тактовая синхронизация на стр. 644.
Биты 15:10 Зарезервированы, должны иметь «reset value».
Биты 9:0 BRP[9:0]: Предделитель скорости передачи
Эти биты определяют длину кванта времени.
tq = (BRP[9:0]+1) x tPCLK
40
32.9.3. Регистры почтовых ящиков CAN
Эта глава описывает регистры почтовых ящиков приема и передачи.
См. раздел 32.7.5.: Хранение сообщений на стр. 1068 для подробной
карты регистров.
Почтовые ящики передачи и приема имеют одинаковые регистры, за
исключением:
• Поле FMI в регистре CAN_RDTxR.
• Почтовый ящик приема всегда защищен от записи.
• Почтовый ящик передачи доступен для записи, только пока он пуст,
соответствующий бит TME в регистре CAN_TSR при этом
установлен.
Имеется 3 передающих почтовых ящика и 2 приемных почтовых
ящика. Каждый приемный почтовый ящик предоставляет доступ к
трехуровневому FIFO, доступ предлагается только к самому старому
принятому сообщению в FIFO.
Каждый почтовый ящик состоит из четырех регистров.
41
CAN TX mailbox identifier register (CAN_TIxR) (x = 0..2)
Address offsets: 0x180, 0x190, 0x1A0
Reset value: 0xXXXX XXXX (за исключением бита 0, TXRQ =
0)
Все TX регистры защищены от записи, когда почтовый ящик в
состоянии готовности к пересылке (TMEx сброшен).
Этот регистр также выполняет управление запросами на передачу (бит
0) – значение при сбросе = 0.
31 30 29 28 27 26 25 24
STID[10:3]/EXID[28:20]
rw rw rw rw rw rw rw rw
23 22 21 20 19 18 17 16
STID[2:0]/EXID[20:18] EXID[17:13]
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
EXID[12:5]
rw rw rw rw rw rw rw rw
7 6 5 4 3 2 1 0
EXID[4:0] IDE RTR TXRQ
rw rw rw rw rw rw rw rw

Биты STID[10:0]/EXID[28:18]: Стандартный или расширенный


идентификатор
Стандартный идентификатор или Старшая значащая часть
расширенного идентификатора (в зависимости от значения
бита IDE)/
Биты 20:3 EXID[17:0]: Расширенный идентификатор
Младшая значащая часть расширенного идентификатора.
Бит 2 IDE: Расширение идентификатора
Этот бит определяет тип идентификатора сообщения в
почтовом ящике.
0: Стандартный идентификатор
1: Расширенный идентификатор
Бит 1 RTR: Удаленный запрос передачи
0: Кадр данных
1: Кадр удаленного запроса данных
Бит 0 TXRQ: Запрос пересылки почтового ящика
Устанавливается программно для запроса передачи данных из
соответствующего почтового ящика.
Очищается аппаратно, когда почтовый ящик становится пуст.
42
CAN mailbox data length control and time stamp register
(CAN_TDTxR) (x = 0..2)
Address offsets: 0x184, 0x194, 0x1A4
Reset value: undefined
Все биты этого регистра защищены от записи, когда почтовый ящик
не пуст.
31 30 29 28 27 26 25 24
TIME[15:8]
rw rw rw rw rw rw rw rw
23 22 21 20 19 18 17 16
TIME[7:0]
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
TGT
Reserved
rw
7 6 5 4 3 2 1 0
DLC[3:0]
Reserved
rw rw rw rw

Биты 31:16 TIME[15:0]: Метка времени сообщения


Это поле содержит значение 16-ти битного таймера,
зафиксированное SOF пересылкой.
Биты 15:9 Зарезервированы
Бит 8 TGT: Общее время передачи
Этот бит активен, только тогда, когда аппаратура в режиме
связи по расписанию (Time Trigger Communication mode), бит
TTCM в регистре CAN_MCR установлен.
0: Метка времени TIME[15:0] не пересылается.
1: Значение метки времени TIME[15:0] отправляется в последних
двух байтах данных 8-ми байтного сообщения:
TIME[7:0] в 7 байте данных и TIME[15:8] в 6 байте данных,
заменяют данные записанные в регистре CAN_TDHxR[31:16]
(DATA6[7:0] и DATA7[7:0]). Поле DLC должно быть
запрограммировано как 8, чтобы в таком порядке два байта
были отправлены по шине CAN.
Биты 7:4 Зарезервированы
Биты 3:0 DLC[3:0]: Код длины данных
Это поле определяет число байт данных содержащихся в кадре
данных или в кадре удаленного запроса.
Сообщение может содержать от 0 до 8 байт данных, в
зависимости от значения поля DLC.
43
CAN mailbox data low register (CAN_TDLxR) (x = 0..2)
Address offsets: 0x188, 0x198, 0x1A8
Reset value: undefined
Все биты этого регистра защищены от записи, когда почтовый ящик
не в пустом состоянии.
31 30 29 28 27 26 25 24
DATA3[7:0]
rw rw rw rw rw rw rw rw
23 22 21 20 19 18 17 16
DATA2[7:0]
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
DATA1[7:0]
rw rw rw rw rw rw rw rw
7 6 5 4 3 2 1 0
DATA0[7:0]
rw rw rw rw rw rw rw rw

Биты 31:24 DATA3[7:0]: Байт данных 3


Четвертый байт данных сообщения.
Биты 23:16 DATA2[7:0]: Байт данных 2
Третий байт данных сообщения.
Биты 15:8 DATA1[7:0]: Байт данных 1
Второй байт данных сообщения.
Биты 7:0 DATA0[7:0]: Байт данных 0
Первый байт данных сообщения.
Сообщение может содержать от 0 до 8 байт данных и
начинается с байта 0.
44
CAN mailbox data high register (CAN_TDHxR) (x=0..2)
Address offsets: 0x18C, 0x19C, 0x1AC
Reset value: undefined
Все биты этого регистра защищены от записи, когда почтовый ящик
не пуст.
31 30 29 28 27 26 25 24
DATA7[7:0]
rw rw rw rw rw rw rw rw
23 22 21 20 19 18 17 16
DATA6[7:0]
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
DATA5[7:0]
rw rw rw rw rw rw rw rw
7 6 5 4 3 2 1 0
DATA4[7:0]
rw rw rw rw rw rw rw rw

Биты 31:24 DATA7[7:0]: Байт данных 7


Восьмой байт данных сообщения.
Прим: Если биты TGT и TTCM активны, в DATA7 и DATA6
будет перемещено значение метки времени.
Биты 23:16 DATA6[7:0]: Байт данных 6
Седьмой байт данных сообщения.
Биты 15:8 DATA5[7:0]: Байт данных 5
Шестой байт данных сообщения.
Биты 7:0 DATA4[7:0]: Байт данных 4
Пятый байт данных сообщения.
45
CAN receive FIFO mailbox identifier register (CAN_RIxR) (x=0..1)
Address offsets: 0x1B0, 0x1C0
Reset value: undefined
Прим: Все RX регистры защищены от записи.
31 30 29 28 27 26 25 24
STID[10:3]/EXID[28:21]
r r r r r r r r
23 22 21 20 19 18 17 16
STID[2:0]/EXID[20:18] EXID[17:13]
r r r r r r r r
15 14 13 12 11 10 9 8
EXID[12:5]
r r r r r r r r
7 6 5 4 3 2 1 0
EXID[4:0] IDE RTR
Reserved
r r r r r r r

Биты 31:21 STID[10:0]/EXID[28:18]: Стандартный или расширенный


идентификатор
Стандартный идентификатор или старшая значащая часть
расширенного идентификатора (в зависимости от значения
бита IDE).
Биты 20:3 EXID[17:0]: Расширенный идентификатор
Младшая значащая часть расширенного идентификатора.
Бит 2 IDE: Расширение идентификатора
Этот бит определяет тип идентификатора сообщения в
почтовом ящике.
0: Стандартный идентификатор
1: Расширенный идентификатор
Бит 1 RTR: Удаленный запрос передачи
0: Кадр данных
1: Кадр удаленного запроса данных
Бит 0 Зарезервирован
46
CAN receive FIFO mailbox data length control and time stamp register
(CAN_RDTxR) (x = 0..1)
Address offsets: 0x1B4, 0x1C4
Reset value: undefined
Прим: Все RX регистры защищены от записи.
31 30 29 28 27 26 25 24
TIME[15:8]
r r r r r r r r
23 22 21 20 19 18 17 16
TIME[7:0]
r r r r r r r r
15 14 13 12 11 10 9 8
FMI[7:0]
r r r r r r r r
7 6 5 4 3 2 1 0
DLC[3:0]
Reserved
r r r r

Биты 31:16 TIME[15:0]: Метка времени сообщения


Это поле содержит зафиксированное значение 16-ти битного
таймера при обнаружении SOF.
Биты 15:8 FMI[7:0]: Фильтр, соответствующий индексу
Этот регистр содержит индекс фильтра сохраненного
сообщения в почтовом ящике. Для более подробной
информации по идентификаторам фильтров см. раздел 23.7.4:
Идентификаторы фильтров на стр. 620 – параграф соответствие
индекса фильтру.
Биты 7:4 Зарезервированы, принудительно сброшены в 0.
Биты 3:0 DLC[3:0]: Код длины данных
Это поле определяет количество байт данных содержащихся в
кадре данных (от 0 до 8). Равны 0 в случае кадра удаленного
запроса данных.
47
CAN receive FIFO mailbox data low register (CAN_RDLxR) (x = 0..1)
Address offsets: 0x1B8, 0x1C8
Reset value: undefined
Все биты этого регистра защищены от записи, когда почтовый ящик
не пуст.
Прим: Все RX регистры защищены от записи
31 30 29 28 27 26 25 24
DATA3[7:0]
r r r r r r r r
23 22 21 20 19 18 17 16
DATA2[7:0]
r r r r r r r r
15 14 13 12 11 10 9 8
DATA1[7:0]
r r r r r r r r
7 6 5 4 3 2 1 0
DATA0[7:0]
r r r r r r r r

Биты 31:24 DATA3[7:0]: Байт данных 3


Четвертый байт данных сообщения
Биты 23:16 DATA2[7:0]: Байт данных 2
Третий байт данных сообщения
Биты 15:8 DATA1[7:0]: Байт данных 1
Второй байт данных сообщения
Биты 7:0 DATA0[7:0]: Байт данных 0
Первый байт данных сообщения
Сообщение может содержать от 0 до 8 байт данных и
начинается с байта 0
48
CAN receive FIFO mailbox data high register (CAN_RDHxR) (x =
0..1)
Address offsets: 0x1BC, 0x1CC
Reset value: undefined
Прим: Все RX регистры защищены от записи
31 30 29 28 27 26 25 24
DATA7[7:0]
r r r r r r r r
23 22 21 20 19 18 17 16
DATA6[7:0]
r r r r r r r r
15 14 13 12 11 10 9 8
DATA5[7:0]
r r r r r r r r
7 6 5 4 3 2 1 0
DATA4[7:0]
r r r r r r r r

Биты 31:24 DATA7[7:0]: Байт данных 7


Восьмой байт данных сообщения
Биты 23:16 DATA6[7:0]: Байт данных 6
Седьмой байт данных сообщения
Биты 15:8 DATA5[7:0]: Байт данных 5
Шестой байт данных сообщения
Биты 7:0 DATA4[7:0]: Байт данных 4
Пятый байт данных сообщения
49
32.9.4. Регистры фильтров CAN
CAN filter master register (CAN_FMR)
Address offset: 0x200
Reset value: 0x2A1C 0E01
Прим: Все биты этого регистра устанавливаются и очищаются
программно.
31 30 29 28 27 26 25 24
Reserved
23 22 21 20 19 18 17 16
Reserved
15 14 13 12 11 10 9 8
CAN2SB[5:0]
Reserved
rw rw rw rw rw rw
7 6 5 4 3 2 1 0
FINIT
Reserved
rw

Биты 31:14 Зарезервированы, принудительно сброшены


Биты 13:8 CAN2SB[5:0]: Начальный банк CAN2
Эти биты устанавливаются и очищаются программно. Они
определяют начальный банк для интерфейса CAN2 в диапазоне
от 1 до 27.
Прим: Эти биты доступны только в линейке устройств
«connectivity line devices» и в противном случае
зарезервированы.
Биты 7:1 Зарезервированы, принудительно сброшены
Бит 0 FINIT: Режим настройки фильтров
Режим инициализации для банков фильтров
0: Режим активирования фильтров.
1: Режим инициализации для фильтров.
50
CAN filter mode register (CAN_FM1R)
Address offset: 0x204
Reset value: 0x00
Прим.: Этот регистр может быть записан только когда установлен режим
инициализации фильтров (FINIT = 1) в регистре CAN_FMR.
31 30 29 28 27 26 25 24
FBM27 FBM26 FBM25 FBM24
Reserved
rw rw rw rw
23 22 21 20 19 18 17 16
FBM23 FBM22 FBM21 FBM20 FBM19 FBM18 FBM17 FBM16
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
FBM15 FBM14 FBM13 FBM12 FBM11 FBM10 FBM9 FBM8
rw rw rw rw rw rw rw rw
7 6 5 4 3 2 1 0
FBM7 FBM6 FBM5 FBM4 FBM3 FBM2 FBM1 FBM0
rw rw rw rw rw rw rw rw

Прим.: См. рисунок 342: Настройка масштаба банка фильтров – организация


регистра на стр. 1066.
Биты 31:28 Зарезервированы. Сброшены в 0 аппаратно.
Биты 27:0 FBMx: Режим фильтра
Режим регистров фильтра X.
0: Два 32-битных регистра банка X фильтров в режиме
маскирования идентификатора.
1: Два 32-битных регистра банка X фильтров в режиме списка
идентификатора.
51
CAN filter scale register (CAN_FS1R)
Address offset: 0x20C
Reset value: 0x00
Прим.: Этот регистр может быть записан только когда установлен режим
инициализации фильтров (FINIT = 1) в регистре CAN_FMR.
31 30 29 28 27 26 25 24
FSC27 FSC26 FSC25 FSC24
Reserved
rw rw rw rw
23 22 21 20 19 18 17 16
FSC23 FSC22 FSC21 FSC20 FSC19 FSC18 FSC17 FSC16
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
FSC15 FSC14 FSC13 FSC12 FSC11 FSC10 FSC9 FSC8
rw rw rw rw rw rw rw rw
7 6 5 4 3 2 1 0
FSC7 FSC6 FSC5 FSC4 FSC3 FSC2 FSC1 FSC0
rw rw rw rw rw rw rw rw

Биты 31:28 Зарезервированы. Сброшены в 0 аппаратно.


Биты 27:0 FSCx: Настройка масштаба фильтров
Эти биты определяют настройку масштаба фильтров 0 - 13.
0: Двойная 16-битная настройка масштаба.
1: Одиночная 32-битная настройка масштаба.
52
CAN filter FIFO assignment register (CAN_FFA1R)
Address offset: 0x214
Reset value: 0x00
Прим.: Этот регистр может быть записан только когда установлен режим
инициализации фильтров (FINIT = 1) в регистре CAN_FMR.
31 30 29 28 27 26 25 24
FFA27 FFA26 FFA25 FFA24
Reserved
rw rw rw rw
23 22 21 20 19 18 17 16
FFA23 FFA22 FFA21 FFA20 FFA19 FFA18 FFA17 FFA16
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
FFA15 FFA14 FFA13 FFA12 FFA11 FFA10 FFA9 FFA8
rw rw rw rw rw rw rw rw
7 6 5 4 3 2 1 0
FFA7 FFA6 FFA5 FFA4 FFA3 FFA2 FFA1 FFA0
rw rw rw rw rw rw rw rw

Биты 31:28 Зарезервированы. Сброшены в 0 аппаратно.


Биты 27:0 FFAx: Закрепление фильтра X за нужным FIFO
Сообщения прошедшие через эти фильтры будут сохранены в
указанном FIFO.
0: Фильтр задан для FIFO0
1: Фильтр задан для FIFO1
53
CAN filter activation register (CAN_FA1R)
Address offset: 0x21C
Reset value: 0x00
31 30 29 28 27 26 25 24
FACT27 FACT26 FACT25 FACT24
Reserved
rw rw rw rw
23 22 21 20 19 18 17 16
FACT23 FACT22 FACT21 FACT20 FACT19 FACT18 FACT17 FACT16
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
FACT15 FACT14 FACT13 FACT12 FACT11 FACT10 FACT9 FACT8
rw rw rw rw rw rw rw rw
7 6 5 4 3 2 1 0
FACT7 FACT6 FACT5 FACT4 FACT3 FACT2 FACT1 FACT0
rw rw rw rw rw rw rw rw

Биты 31:28 Зарезервированы. Сброшены в 0 аппаратно.


Биты 27:0 FACTx: Активация фильтра
Программное обеспечение должно установить этот бит для
активации фильтра X. Для модификации регистров фильтра X
(CAN_FxR[0:7]), бит FACTx должен быть очищен или должен
быть установлен бит FINIT регистра CAN_FMR.
0: Фильтр X не активен
1: Фильтр X активен
54
Filter bank i register x (CAN_FiRx) (i=0..27 in connectivity line
devices, x = 1, 2)
Address offsets: 0x240..0x31C
Reset value: undefined
Здесь существует 28 банков фильтров, i = 0..27. Каждый банк
фильтров i состоит из двух 32-битных регистров CAN_FiR[2:1].
Эти регистры можно изменять только когда в регистре CAN_FAxR
очищен бит FACTx или когда в регистре CAN_FMR установлен бит
FINIT.
31 30 29 28 27 26 25 24
FB31 FB30 FB29 FB28 FB27 FB26 FB25 FB24
rw rw rw rw rw rw rw rw
23 22 21 20 19 18 17 16
FB23 FB22 FB21 FB20 FB19 FB18 FB17 FB16
rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8
FB15 FB14 FB13 FB12 FB11 FB10 FB9 FB8
rw rw rw rw rw rw rw rw
7 6 5 4 3 2 1 0
FB7 FB6 FB5 FB4 FB3 FB2 FB1 FB0
rw rw rw rw rw rw rw rw

Во всех конфигурациях:
Bits 31:0 FB[31:0]: Биты фильтра
Идентификатор
Каждый бит регистра определяет уровень соответствующего бита
в ожидаемом идентификаторе.
0: Ожидается доминантный бит
1: Ожидается рецессивный бит
Маска
Каждый бит регистра определяет, совпадает ли соответствующий
бит идентификатора в регистре с соответствующим битом
ожидаемого идентификатора или нет.
0: Без разницы, бит не используется для сравнения
1: Должен совпадать, бит входящего идентификатора должен
иметь тот же самый уровень, который определен в
соответствующем регистре идентификатора фильтра.
Прим: В зависимости от масштаба и режима конфигурации фильтра,
функция каждого регистра может изменяться. Для
отображения фильтра, описание функций и связанных
регистров маски, см. раздел 32.7.4: Идентификатор фильтрации
на стр. 1064.
Регистр маски/идентификатора в режиме маски имеет такую
же карту бит, как и в режиме списка идентификатора.
Для составления карты/адресации регистра банка фильтров см.
таблицу 184 на стр. 1095.

Вам также может понравиться