CAN master status register (CAN_MSR)

Регистр состояния передачи CAN-шины

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

Reset value: 0x1C00'0000

3130292827262524
LOW2 LOW1 LOW0 TME2 TME1 TME0 CODE[1:0]
rrrrrrrr
00011100
2322212019181716
ABRQ2 Reserved TERR2 ALST2 TXOK2 RQCP2
rs---------rc_w1rc_w1rc_w1rc_w1
00000000


15141312111098
ABRQ1 Reserved TERR1 ALST1 TXOK1 RQCP1
rs---------rc_w1rc_w1rc_w1rc_w1
00001100
76543210
ABRQ0 Reserved TERR0 ALST0 TXOK0 RQCP0
rs---------rc_w1rc_w1rc_w1rc_w1
00000000


Bit 31
LOW2
Lowest priority flag for mailbox 2
Флаг наименьшего приоритета у mailbox 2.

Устанавливается аппаратно, когда несколько почтовых ящиков ожидают передачи, а почтовый ящик 2 имеет самый низкий приоритет

Bit 30
LOW1
Lowest priority flag for mailbox 1
Флаг наименьшего приоритета у mailbox 1.

Устанавливается аппаратно, когда несколько почтовых ящиков ожидают передачи, а почтовый ящик 1 имеет самый низкий приоритет

Bit 29
LOW0
Lowest priority flag for mailbox 0
Флаг наименьшего приоритета у mailbox 0.

Устанавливается аппаратно, когда несколько почтовых ящиков ожидают передачи, а почтовый ящик 0 имеет самый низкий приоритет

Биты LOW0..1 сброшены в 0, когда в работе только один почтовый ящик.

Bit 28
TME2
Transmit mailbox 2 empty
Почтовый ящик mailbox 2 пуст.

Устанавливается аппаратно, когда для почтовог ящика 2 не запроса на передачу.

Bit 27
TME1
Transmit mailbox 1 empty
Почтовый ящик mailbox 1 пуст.

Устанавливается аппаратно, когда для почтовог ящика 1 не запроса на передачу.

Bit 26
TME0
Transmit mailbox 0 empty
Почтовый ящик mailbox 0 пуст.

Устанавливается аппаратно, когда для почтовог ящика 0 не запроса на передачу.

Bits 25:24
CODE[1:0]
Mailbox code
Код почтового ящика

Если хотя бы один почтовый ящик для передачи свободен, значение кода равно номеру свободного почтового ящика для передачи.

Если все почтовые ящики для передачи находятся в ожидании (свободны), значение кода равно номеру почтового ящика для передачи с наименьшим приоритетом.

Bit 23
ABRQ2
Abort request for mailbox 2
Отмена запроса на передачу для mailbox 2.

Устанавливается программно, для отмены запроса на передачу для почтового ящика mailbox 2.

Сбрасывается аппаратно, когда почтовый ящик становится пустым.

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

Bits 22:20
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bit 19
TERR2
Transmission error of mailbox 2
Ошибка передачи данных из mailbox 2.

Устанавливается аппаратно, когда предыдущая передача данных из почтового ящика mailbox 2 завершилась неудачей из-за ошибки.

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

Bit 18
ALST2
Arbitration lost for mailbox 2
Проигран арбитраж для mailbox 2.

Устанавливается аппаратно, когда предыдущая передача данных завершилась неудачей из-за проигранного арбитража.

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

Bit 17
TXOK2
Transmission OK of mailbox 2
Результат передачи данных для mailbox 2

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

 0 :  предыдущая передача закончилась неудачей.

 1 :  предыдущая передача завершилась успешно (запрос на передачу данных из почтового ящика mailbox 2 успешно выполнен).

Bit 16
RQCP2
Request completed mailbox2
Последний запрос для mailbox 2 выполнен.

Устанавливается аппаратно, когда был выполнен последний запрос (передача или прерывание).

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

Сбрасывается аппаратно при запросе на передачу (TXRQ2, установленный в регистре CAN_TMID2R).

Сброс этого бита приводит к сбросу всех битов состояния (TXOK2, ALST2 и TERR2) для почтового ящика 2.



Биты состояния передачи для mailbox 1 и 0 соответствуют битам состояния передачи для mailbox 2.



/*******************  Bit definition for CAN_TSR register  ********************/

#define  CAN_TSR_RQCP0         ((uint32_t)0x00000001)        /* Request Completed Mailbox0     */
#define  CAN_TSR_TXOK0         ((uint32_t)0x00000002)        /* Transmission OK of Mailbox0    */
#define  CAN_TSR_ALST0         ((uint32_t)0x00000004)        /* Arbitration Lost for Mailbox0  */
#define  CAN_TSR_TERR0         ((uint32_t)0x00000008)        /* Transmission Error of Mailbox0 */
#define  CAN_TSR_ABRQ0         ((uint32_t)0x00000080)        /* Abort Request for Mailbox0     */

#define  CAN_TSR_RQCP1         ((uint32_t)0x00000100)        /* Request Completed Mailbox1     */
#define  CAN_TSR_TXOK1         ((uint32_t)0x00000200)        /* Transmission OK of Mailbox1    */
#define  CAN_TSR_ALST1         ((uint32_t)0x00000400)        /* Arbitration Lost for Mailbox1  */
#define  CAN_TSR_TERR1         ((uint32_t)0x00000800)        /* Transmission Error of Mailbox1 */
#define  CAN_TSR_ABRQ1         ((uint32_t)0x00008000)        /* Abort Request for Mailbox 1    */

#define  CAN_TSR_RQCP2         ((uint32_t)0x00010000)        /* Request Completed Mailbox2     */
#define  CAN_TSR_TXOK2         ((uint32_t)0x00020000)        /* Transmission OK of Mailbox 2   */
#define  CAN_TSR_ALST2         ((uint32_t)0x00040000)        /* Arbitration Lost for mailbox 2 */
#define  CAN_TSR_TERR2         ((uint32_t)0x00080000)        /* Transmission Error of Mailbox 2 */
#define  CAN_TSR_ABRQ2         ((uint32_t)0x00800000)        /* Abort Request for Mailbox 2    */

#define  CAN_TSR_CODE          ((uint32_t)0x03000000)        /* Mailbox Code */

#define  CAN_TSR_TME           ((uint32_t)0x1C000000)        /* TME[2:0] bits */
#define  CAN_TSR_TME0          ((uint32_t)0x04000000)        /* Transmit Mailbox 0 Empty */
#define  CAN_TSR_TME1          ((uint32_t)0x08000000)        /* Transmit Mailbox 1 Empty */
#define  CAN_TSR_TME2          ((uint32_t)0x10000000)        /* Transmit Mailbox 2 Empty */

#define  CAN_TSR_LOW           ((uint32_t)0xE0000000)        /* LOW[2:0] bits */
#define  CAN_TSR_LOW0          ((uint32_t)0x20000000)        /* Lowest Priority Flag for Mailbox 0 */
#define  CAN_TSR_LOW1          ((uint32_t)0x40000000)        /* Lowest Priority Flag for Mailbox 1 */
#define  CAN_TSR_LOW2          ((uint32_t)0x80000000)        /* Lowest Priority Flag for Mailbox 2 */