CAN master status register (CAN_MSR)

Регистр основного состояния CAN-шиной

Смещение (Address offset): 0x04

Reset value: 0x0000'0C02

3130292827262524
Reserved
------------------------
00000000
2322212019181716
Reserved
------------------------
00000000


15141312111098
Reserved RX SAMP RXM TXM
------------rrrr
00001100
76543210
Reserved SLAKI WKUI ERRI SLAK INAK
---------rc_w1rc_w1rc_w1rr
00000010


Bits 31:12
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bit 11
RX
CAN Rx signal
Отображает текущее значение на выводе CAN_RX (вход приёмника).
Bit 10
SAMP
Last sample point
Значение RX в последней точке выборки (текущее полученное значение бита).
Bit 9
RXM
Receive mode
CAN-контроллер в режиме приёма
Bit 8
TXM
Transmit mode
CAN-контроллер в режиме передачи
Bits 7:5
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bit 4
SLAKI
Sleep acknowledge interrupt
Подтверждение сформированного прерывания при переходе CAN-контроллера в спящий режим.

Этот бит устанавливается, когда установлен SLKIE=1 в регистре CAN_IER (разрешено прерывание при переходе в спящий режим) и CAN-контроллер переходит в спящий режим. Так же генерируется прерывание изменения состояния.

Сбрасывается программно записью 1 или аппаратно, когда очищается SLAK.

Когда SLKIE=0 в регистре CAN_IER, опрос SLAKI невозможен. В этом случае может быть запрошен бит SLAK.

Bit 3
WKUI
Wakeup interrupt
Управляет поведением CAN-контроллера при приеме сообщений в спящем режиме.

Устанавливается аппаратно при обнаружении стартового бита сообщения SOF, когда контроллер CAN-шины находился в спящем режиме.

Если установлен бит WKUIE в регистре CAN_IER, то будет сгенерировано прерывание изменения состояния.

Сбрасывается программно записью 1.

Bit 2
ERRI
Error interrupt
Прерывание по ошибке

Устанавливается аппаратно, когда бит CAN_ESR был настроен на обнаружение ошибок и включено соответствующее прерывание в CAN_IER.

При установке бита автоматически генерируется прерывание изменения состояния, если установлен бит ошибки в регистре CAN_IER.

Сбрасывается программно записью 1.

Bit 1
SLAK
Sleep acknowledge
Подтверждение режима сна

Устанавливается аппаратно и указывает на нахождение контроллера CAN-шины в спящем режиме.

Подтверждает программный запрос (установка бита SLEEP=1 в регистре CAN_MCR) после перехода контроллера в спящий режим.

Сбрасывается аппаратно, когда контроллер CAN-шины выходит из спящего режима. Для синхронизации контроллер должен отслеживать последовательность из 11 последовательных рецессивных битов в сигнале CAN RX.

Сбрасывается программно, когда сбрасывается бит SLEEP в регистре CAN_MCR.

см. бит AWUM в регистре CAN_MCR

Bit 0
INAK
Initialization acknowledge
Подтверждение режима инициализации

Устанавливается аппаратно и указывает на нахождение контроллера CAN-шины в режиме инициализации.

Подтверждает программный запрос (установка бита INRQ=1 в регистре CAN_MCR) на инициализацию после перехода контроллера в режим инициализации.

Сбрасывается аппаратно, когда контроллер CAN-шины выходит из режима инициализации. Для синхронизации контроллер должен отслеживать последовательность из 11 последовательных рецессивных битов в сигнале CAN RX.



/*******************  Bit definition for CAN_MSR register  ********************/

#define  CAN_MSR_INAK      ((uint16_t)0x0001)       /* Initialization Acknowledge   */
#define  CAN_MSR_SLAK      ((uint16_t)0x0002)       /* Sleep Acknowledge            */
#define  CAN_MSR_ERRI      ((uint16_t)0x0004)       /* Error Interrupt              */

#define  CAN_MSR_WKUI      ((uint16_t)0x0008)       /* Wakeup Interrupt             */
#define  CAN_MSR_SLAKI     ((uint16_t)0x0010)       /* Sleep Acknowledge Interrupt  */
#define  CAN_MSR_TXM       ((uint16_t)0x0100)       /* Transmit Mode                */

#define  CAN_MSR_RXM       ((uint16_t)0x0200)       /* Receive Mode                 */
#define  CAN_MSR_SAMP      ((uint16_t)0x0400)       /* Last Sample Point             */
#define  CAN_MSR_RX        ((uint16_t)0x0800)       /* CAN Rx Signal                 */