CAN master status register (CAN_MSR)
Регистр состояния передачи CAN-шины
Смещение (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 |
0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
ABRQ2 | Reserved | TERR2 | ALST2 | TXOK2 | RQCP2 | ||
rs | --- | --- | --- | rc_w1 | rc_w1 | rc_w1 | rc_w1 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
ABRQ1 | Reserved | TERR1 | ALST1 | TXOK1 | RQCP1 | ||
rs | --- | --- | --- | rc_w1 | rc_w1 | rc_w1 | rc_w1 |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ABRQ0 | Reserved | TERR0 | ALST0 | TXOK0 | RQCP0 | ||
rs | --- | --- | --- | rc_w1 | rc_w1 | rc_w1 | rc_w1 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Устанавливается аппаратно, когда несколько почтовых ящиков ожидают передачи, а почтовый ящик 2 имеет самый низкий приоритет
Устанавливается аппаратно, когда несколько почтовых ящиков ожидают передачи, а почтовый ящик 1 имеет самый низкий приоритет
Устанавливается аппаратно, когда несколько почтовых ящиков ожидают передачи, а почтовый ящик 0 имеет самый низкий приоритет
Биты LOW0..1 сброшены в 0, когда в работе только один почтовый ящик.
Устанавливается аппаратно, когда для почтовог ящика 2 не запроса на передачу.
Устанавливается аппаратно, когда для почтовог ящика 1 не запроса на передачу.
Устанавливается аппаратно, когда для почтовог ящика 0 не запроса на передачу.
Если хотя бы один почтовый ящик для передачи свободен, значение кода равно номеру свободного почтового ящика для передачи.
Если все почтовые ящики для передачи находятся в ожидании (свободны), значение кода равно номеру почтового ящика для передачи с наименьшим приоритетом.
Устанавливается программно, для отмены запроса на передачу для почтового ящика mailbox 2.
Сбрасывается аппаратно, когда почтовый ящик становится пустым.
Установка этого бита не действует, если почтовый ящик не ожидает передачи.
Устанавливается аппаратно, когда предыдущая передача данных из почтового ящика mailbox 2 завершилась неудачей из-за ошибки.
Сбрасывается программно запистью 1.
Устанавливается аппаратно, когда предыдущая передача данных завершилась неудачей из-за проигранного арбитража.
Сбрасывается программно запистью 1.
Обновляется аппаратно после каждой попытки передачи. Сбрасывается программно запистью 1.
0 : предыдущая передача закончилась неудачей.
1 : предыдущая передача завершилась успешно (запрос на передачу данных из почтового ящика 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 */