123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532 |
- ////////////////////////////////////////////////////////////////////////////////
- /// @file reg_can.h
- /// @author AE TEAM
- /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE SERIES OF
- /// MM32 FIRMWARE LIBRARY.
- ////////////////////////////////////////////////////////////////////////////////
- /// @attention
- ///
- /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
- /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
- /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
- /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
- /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
- /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
- ///
- /// <H2><CENTER>© COPYRIGHT MINDMOTION </CENTER></H2>
- ////////////////////////////////////////////////////////////////////////////////
- // Define to prevent recursive inclusion
- #ifndef __REG_CAN_H
- #define __REG_CAN_H
- // Files includes
- #include <stdint.h>
- #include <stdbool.h>
- #include "types.h"
- #if defined ( __CC_ARM )
- #pragma anon_unions
- #endif
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN Base Address Definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN1_BASE (APB1PERIPH_BASE + 0x6400) ///< Base Address: 0x40006400
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN Register Structure Definition
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN basic
- ////////////////////////////////////////////////////////////////////////////////
- typedef struct {
- __IO u32 CR; ///< Control register, offset: 0x00
- __IO u32 CMR; ///< Command register, offset: 0x04
- __IO u32 SR; ///< <Status register, offset: 0x08
- __IO u32 IR; ///< Interrupt register, offset: 0x0c
- __IO u32 ACR; ///< Acceptance Code register, offset: 0x10
- __IO u32 AMR; ///< Acceptance Mask register, offset: 0x14
- __IO u32 BTR0; ///< Bus Timing register 0, offset: 0x18
- __IO u32 BTR1; ///< Bus Timing register 1, offset: 0x1C
- __IO u32 RESERVED0;
- __IO u32 RESERVED1;
- __IO u32 TXID0; ///< Send ID register 0, offset: 0x28
- __IO u32 TXID1; ///< Send ID register 1, offset: 0x2c
- __IO u32 TXDR0; ///< Send Data register 0, offset: 0x30
- __IO u32 TXDR1; ///< Send Data register 1, offset: 0x34
- __IO u32 TXDR2; ///< Send Data register 2, offset: 0x38
- __IO u32 TXDR3; ///< Send Data register 3, offset: 0x3c
- __IO u32 TXDR4; ///< Send Data register 4, offset: 0x40
- __IO u32 TXDR5; ///< Send Data register 5, offset: 0x44
- __IO u32 TXDR6; ///< Send Data register 6, offset: 0x48
- __IO u32 TXDR7; ///< Send Data register 7, offset: 0x4c
- __IO u32 RXID0; ///< Mode register, offset: 0x50
- __IO u32 RXID1; ///< Mode register, offset: 0x54
- __IO u32 RXDR0; ///< Mode register, offset: 0x58
- __IO u32 RXDR1; ///< Mode register, offset: 0x5C
- __IO u32 RXDR2; ///< Mode register, offset: 0x60
- __IO u32 RXDR3; ///< Mode register, offset: 0x64
- __IO u32 RXDR4; ///< Mode register, offset: 0x68
- __IO u32 RXDR5; ///< Mode register, offset: 0x6c
- __IO u32 RXDR6; ///< Mode register, offset: 0x70
- __IO u32 RXDR7; ///< Mode register, offset: 0x74
- __IO u32 RESERVED2;
- __IO u32 CDR; ///< Clock Divider register, offset: 0x7c
- } CAN_TypeDef;
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN Peli
- ////////////////////////////////////////////////////////////////////////////////
- typedef struct {
- __IO u32 MOD; ///< Mode register, offset: 0x00
- __IO u32 CMR; ///< Command register, offset: 0x04
- __IO u32 SR; ///< Status register, offset: 0x08
- __IO u32 IR; ///< Interrupt Enable register, offset: 0x0c
- __IO u32 IER; ///< Mode register, offset: 0x10
- __IO u32 RESERVED0;
- __IO u32 BTR0; ///< Bus Timing register 0, offset: 0x18
- __IO u32 BTR1; ///< Bus Timing register 1, offset: 0x1C
- __IO u32 RESERVED1;
- __IO u32 RESERVED2;
- __IO u32 RESERVED3;
- __IO u32 ALC; ///< Arbitration Lost Capture register, offset: 0x2c
- __IO u32 ECC; ///< Error Code Capture register, offset: 0x30
- __IO u32 EWLR; ///< Error Warning Limit register, offset: 0x34
- __IO u32 RXERR; ///< RX Error Counter register, offset: 0x38
- __IO u32 TXERR; ///< TX Error Counter register, offset: 0x3c
- __IO u32 FF; ///< Frame Format register, offset: 0x40
- __IO u32 ID0; ///< ID register 0, offset: 0x44
- __IO u32 ID1; ///< ID register 1, offset: 0x48
- __IO u32 DATA0; ///< Data register 0, offset: 0x4c
- __IO u32 DATA1; ///< Data register 1, offset: 0x50
- __IO u32 DATA2; ///< Data register 2, offset: 0x54
- __IO u32 DATA3; ///< Data register 3, offset: 0x58
- __IO u32 DATA4; ///< Data register 4, offset: 0x5c
- __IO u32 DATA5; ///< Data register 5, offset: 0x60
- __IO u32 DATA6; ///< Data register 6, offset: 0x64
- __IO u32 DATA7; ///< Data register 7, offset: 0x68
- __IO u32 DATA8; ///< Data register 8, offset: 0x6c
- __IO u32 DATA9; ///< Data register 9, offset: 0x70
- __IO u32 RMC; ///< RMC register, offset: 0x74
- __IO u32 RBSA; ///< RBSA register, offset: 0x78
- __IO u32 CDR; ///< Clock Divider register offset: 0x7c
- } CAN_Peli_TypeDef;
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN type pointer Definition
- ////////////////////////////////////////////////////////////////////////////////
- typedef struct {
- __IO u32 ACR0;
- __IO u32 ACR1;
- __IO u32 ACR2;
- __IO u32 ACR3;
- __IO u32 AMR0;
- __IO u32 AMR1;
- __IO u32 AMR2;
- __IO u32 AMR3;
- } CAN_FLT_GROUP;
- typedef struct {
- CAN_FLT_GROUP GROUP0; //Address offset: 0x40
- u32 RESERVED[8]; //Address offset: 0x60
- __IO u32 AFM0; //Address offset: 0x80
- __IO u32 AFM1; //Address offset: 0x84
- __IO u32 AFM2; //Address offset: 0x88
- __IO u32 FGA0; //Address offset: 0x8C
- __IO u32 FGA1; //Address offset: 0x90
- __IO u32 FGA2; //Address offset: 0x94
- CAN_FLT_GROUP GROUP1; //Address offset: 0x98
- CAN_FLT_GROUP GROUP2; //Address offset: 0xB8
- CAN_FLT_GROUP GROUP3; //Address offset: 0xD8
- CAN_FLT_GROUP GROUP4; //Address offset: 0xF8
- CAN_FLT_GROUP GROUP5; //Address offset: 0x118
- CAN_FLT_GROUP GROUP6; //Address offset: 0x138
- CAN_FLT_GROUP GROUP7; //Address offset: 0x158
- CAN_FLT_GROUP GROUP8; //Address offset: 0x178
- CAN_FLT_GROUP GROUP9; //Address offset: 0x198
- CAN_FLT_GROUP GROUP10; //Address offset: 0x1B8
- CAN_FLT_GROUP GROUP11; //Address offset: 0x1D8
- CAN_FLT_GROUP GROUP12; //Address offset: 0x1F8
- CAN_FLT_GROUP GROUP13; //Address offset: 0x218
- CAN_FLT_GROUP GROUP14; //Address offset: 0x238
- CAN_FLT_GROUP GROUP15; //Address offset: 0x258
- CAN_FLT_GROUP GROUP16; //Address offset: 0x278
- CAN_FLT_GROUP GROUP17; //Address offset: 0x298
- CAN_FLT_GROUP GROUP18; //Address offset: 0x2B8
- CAN_FLT_GROUP GROUP19; //Address offset: 0x2D8
- } CAN_Peli_FLT_TypeDef;
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN type pointer Definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN1 ((CAN_TypeDef*) CAN1_BASE)
- #define CAN1_PELI ((CAN_Peli_TypeDef*) CAN1_BASE)
- #define CAN_Peli_FLT ((CAN_Peli_FLT_TypeDef*)(CAN1_BASE + 0x40))
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN basic
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_CR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_CR_RR_Pos (0)
- #define CAN_CR_RR (0x01U << CAN_CR_RR_Pos) ///< CAN reset request
- #define CAN_CR_RIE_Pos (1)
- #define CAN_CR_RIE (0x01U << CAN_CR_RIE_Pos) ///< CAN receive interrupt enable
- #define CAN_CR_TIE_Pos (2)
- #define CAN_CR_TIE (0x01U << CAN_CR_TIE_Pos) ///< CAN transmit interrupt enable
- #define CAN_CR_EIE_Pos (3)
- #define CAN_CR_EIE (0x01U << CAN_CR_EIE_Pos) ///< CAN error interrupt enable
- #define CAN_CR_OIE_Pos (4)
- #define CAN_CR_OIE (0x01U << CAN_CR_OIE_Pos) ///< CAN overflow interrupt enable
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_CMR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_CMR_TR_Pos (0)
- #define CAN_CMR_TR (0x01U << CAN_CMR_TR_Pos ) ///< CAN transmission request
- #define CAN_CMR_AT_Pos (1)
- #define CAN_CMR_AT (0x01U << CAN_CMR_AT_Pos ) ///< CAN abort transmission
- #define CAN_CMR_RRB_Pos (2)
- #define CAN_CMR_RRB (0x01U << CAN_CMR_RRB_Pos) ///< CAN release receive buffer
- #define CAN_CMR_CDO_Pos (3)
- #define CAN_CMR_CDO (0x01U << CAN_CMR_CDO_Pos) ///< CAN clear data overrun
- #define CAN_CMR_GTS_Pos (4)
- #define CAN_CMR_GTS (0x01U << CAN_CMR_GTS_Pos) ///< CAN go to sleep
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_SR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_SR_RBS_Pos (0)
- #define CAN_SR_RBS (0x01U << CAN_SR_RBS_Pos) ///< CAN receive buffer status
- #define CAN_SR_DOS_Pos (1)
- #define CAN_SR_DOS (0x01U << CAN_SR_DOS_Pos) ///< CAN data overrun status
- #define CAN_SR_TBS_Pos (2)
- #define CAN_SR_TBS (0x01U << CAN_SR_TBS_Pos) ///< CAN transmit buffer status
- #define CAN_SR_TCS_Pos (3)
- #define CAN_SR_TCS (0x01U << CAN_SR_TCS_Pos) ///< CAN transmission complete status
- #define CAN_SR_RS_Pos (4)
- #define CAN_SR_RS (0x01U << CAN_SR_RS_Pos) ///< CAN receive status
- #define CAN_SR_TS_Pos (5)
- #define CAN_SR_TS (0x01U << CAN_SR_TS_Pos) ///< CAN transmit status
- #define CAN_SR_ES_Pos (6)
- #define CAN_SR_ES (0x01U << CAN_SR_ES_Pos) ///< CAN error status
- #define CAN_SR_BS_Pos (7)
- #define CAN_SR_BS (0x01U << CAN_SR_BS_Pos) ///< CAN bus status
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_ACR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_ACR_AC (0xFFU << 0) ///< CAN acceptance code
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_AMR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_AMR_AM_Pos (0)
- #define CAN_AMR_AM (0xFFU << CAN_AMR_AM_Pos) ///< CAN acceptance mask
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_BTR0 register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_BTR0_BRP_Pos (0)
- #define CAN_BTR0_BRP (0x003FU << CAN_BTR0_BRP_Pos) ///< CAN baud rate prescaler
- #define CAN_BTR0_SJW_Pos (6)
- #define CAN_BTR0_SJW (0x03U << CAN_BTR0_SJW_Pos) ///< CAN synchronization jump width
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_BTR1 register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_BTR1_TESG1_Pos (0)
- #define CAN_BTR1_TESG1 (0x000FU << CAN_BTR1_TESG1_Pos) ///< CAN Time segment 1
- #define CAN_BTR1_TESG2_Pos (4)
- #define CAN_BTR1_TESG2 (0x07U << CAN_BTR1_TESG2_Pos) ///< CAN Time segment 2
- #define CAN_BTR1_SAM_Pos (7)
- #define CAN_BTR1_SAM (0x01U << CAN_BTR1_SAM_Pos) ///< CAN sampling
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_TXID0 register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_TXID0_ID_3_Pos (0)
- #define CAN_TXID0_ID_3 (0x01U << CAN_TXID0_ID_3_Pos) ///< CAN identifier byte 3
- #define CAN_TXID0_ID_4_Pos (1)
- #define CAN_TXID0_ID_4 (0x01U << CAN_TXID0_ID_4_Pos) ///< CAN identifier byte 4
- #define CAN_TXID0_ID_5_Pos (2)
- #define CAN_TXID0_ID_5 (0x01U << CAN_TXID0_ID_5_Pos) ///< CAN identifier byte 5
- #define CAN_TXID0_ID_6_Pos (3)
- #define CAN_TXID0_ID_6 (0x01U << CAN_TXID0_ID_6_Pos) ///< CAN identifier byte 6
- #define CAN_TXID0_ID_7_Pos (4)
- #define CAN_TXID0_ID_7 (0x01U << CAN_TXID0_ID_7_Pos) ///< CAN identifier byte 7
- #define CAN_TXID0_ID_8_Pos (5)
- #define CAN_TXID0_ID_8 (0x01U << CAN_TXID0_ID_8_Pos) ///< CAN identifier byte 8
- #define CAN_TXID0_ID_9_Pos (6)
- #define CAN_TXID0_ID_9 (0x01U << CAN_TXID0_ID_9_Pos) ///< CAN identifier byte 9
- #define CAN_TXID0_ID_10_Pos (7)
- #define CAN_TXID0_ID_10 (0x01U << CAN_TXID0_ID_10_Pos) ///< CAN identifier byte 10
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_TXID1 register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_TXID1_DLC0_Pos (0)
- #define CAN_TXID1_DLC0 (0x01U << CAN_TXID1_DLC0_Pos) ///< CAN data length code 0 ~ 8
- #define CAN_TXID1_DLC1_Pos (1)
- #define CAN_TXID1_DLC1 (0x01U << CAN_TXID1_DLC1_Pos) ///< CAN data length code 0 ~ 8
- #define CAN_TXID1_DLC2_Pos (2)
- #define CAN_TXID1_DLC2 (0x01U << CAN_TXID1_DLC2_Pos) ///< CAN data length code 0 ~ 8
- #define CAN_TXID1_DLC3_Pos (3)
- #define CAN_TXID1_DLC3 (0x01U << CAN_TXID1_DLC3_Pos) ///< CAN data length code 0 ~ 8
- #define CAN_TXID1_RTR_Pos (4)
- #define CAN_TXID1_RTR (0x01U << CAN_TXID1_RTR_Pos ) ///< CAN remote transmission request
- #define CAN_TXID1_ID_0_Pos (5)
- #define CAN_TXID1_ID_0 (0x01U << CAN_TXID1_ID_0_Pos) ///< CAN identifier byte 0
- #define CAN_TXID1_ID_1_Pos (6)
- #define CAN_TXID1_ID_1 (0x01U << CAN_TXID1_ID_1_Pos) ///< CAN identifier byte 1
- #define CAN_TXID1_ID_2_Pos (7)
- #define CAN_TXID1_ID_2 (0x01U << CAN_TXID1_ID_2_Pos) ///< CAN identifier byte 2
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_TXDRn register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_TXDRn (0x00FFU) // (n = 0..7) ///< CAN send data
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_CDR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_CDR_MODE_Pos (7)
- #define CAN_CDR_MODE (0x01U << CAN_CDR_MODE_Pos) ///< CAN mode
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN Peli
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_MOD register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_MOD_RM_Pos (0)
- #define CAN_MOD_RM (0x01U << CAN_MOD_RM_Pos) ///< CAN reset mode
- #define CAN_MOD_LOM_Pos (1)
- #define CAN_MOD_LOM (0x01U << CAN_MOD_LOM_Pos) ///< CAN listen only mode
- #define CAN_MOD_STM_Pos (2)
- #define CAN_MOD_STM (0x01U << CAN_MOD_STM_Pos) ///< CAN self test mode
- #define CAN_MOD_AFM_Pos (3)
- #define CAN_MOD_AFM (0x01U << CAN_MOD_AFM_Pos) ///< CAN acceptance filter mode
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_CMR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_CMR_TR_Pos (0)
- #define CAN_CMR_TR (0x01U << CAN_CMR_TR_Pos ) ///< CAN transmission request
- #define CAN_CMR_AT_Pos (1)
- #define CAN_CMR_AT (0x01U << CAN_CMR_AT_Pos ) ///< CAN abort transmission
- #define CAN_CMR_RRB_Pos (2)
- #define CAN_CMR_RRB (0x01U << CAN_CMR_RRB_Pos) ///< CAN release receive buffer
- #define CAN_CMR_CDO_Pos (3)
- #define CAN_CMR_CDO (0x01U << CAN_CMR_CDO_Pos) ///< CAN clear data overrun
- #define CAN_CMR_SRR_Pos (4)
- #define CAN_CMR_SRR (0x01U << CAN_CMR_SRR_Pos) ///< CAN self reset request
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_SR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_SR_RBS_Pos (0)
- #define CAN_SR_RBS (0x01U << CAN_SR_RBS_Pos) ///< CAN receive buffer status
- #define CAN_SR_DOS_Pos (1)
- #define CAN_SR_DOS (0x01U << CAN_SR_DOS_Pos) ///< CAN data overrun status
- #define CAN_SR_TBS_Pos (2)
- #define CAN_SR_TBS (0x01U << CAN_SR_TBS_Pos) ///< CAN transmit buffer status
- #define CAN_SR_TCS_Pos (3)
- #define CAN_SR_TCS (0x01U << CAN_SR_TCS_Pos) ///< CAN transmission complete status
- #define CAN_SR_RS_Pos (4)
- #define CAN_SR_RS (0x01U << CAN_SR_RS_Pos) ///< CAN receive status
- #define CAN_SR_TS_Pos (5)
- #define CAN_SR_TS (0x01U << CAN_SR_TS_Pos) ///< CAN transmit status
- #define CAN_SR_ES_Pos (6)
- #define CAN_SR_ES (0x01U << CAN_SR_ES_Pos) ///< CAN error status
- #define CAN_SR_BS_Pos (7)
- #define CAN_SR_BS (0x01U << CAN_SR_BS_Pos) ///< CAN bus status
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_IR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_IR_RI_Pos (0)
- #define CAN_IR_RI (0x01U << CAN_IR_RI_Pos) ///< CAN receive interrupt
- #define CAN_IR_TI_Pos (1)
- #define CAN_IR_TI (0x01U << CAN_IR_TI_Pos) ///< CAN transmit interrupt
- #define CAN_IR_EI_Pos (2)
- #define CAN_IR_EI (0x01U << CAN_IR_EI_Pos) ///< CAN error interrupt
- #define CAN_IR_DOI_Pos (3)
- #define CAN_IR_DOI (0x01U << CAN_IR_DOI_Pos) ///< CAN data overrun interrupt
- #define CAN_IR_EPI_Pos (5)
- #define CAN_IR_EPI (0x01U << CAN_IR_EPI_Pos) ///< CAN error passive interrupt
- #define CAN_IR_ALI_Pos (6)
- #define CAN_IR_ALI (0x01U << CAN_IR_ALI_Pos) ///< CAN arbitration lost interrupt
- #define CAN_IR_BEI_Pos (7)
- #define CAN_IR_BEI (0x01U << CAN_IR_BEI_Pos) ///< CAN bus error interrupt
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_IR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_IER_RIE_Pos (0)
- #define CAN_IER_RIE (0x01U << CAN_IER_RIE_Pos) ///< CAN receive interrupt enable
- #define CAN_IER_TIE_Pos (1)
- #define CAN_IER_TIE (0x01U << CAN_IER_TIE_Pos) ///< CAN transmit interrupt enable
- #define CAN_IER_EIE_Pos (2)
- #define CAN_IER_EIE (0x01U << CAN_IER_EIE_Pos) ///< CAN error interrupt enable
- #define CAN_IER_DOIE_Pos (3)
- #define CAN_IER_DOIE (0x01U << CAN_IER_DOIE_Pos) ///< CAN data overrun interrupt enable
- #define CAN_IER_EPIE_Pos (5)
- #define CAN_IER_EPIE (0x01U << CAN_IER_EPI_Pos) ///< CAN error passive interrupt enable
- #define CAN_IER_ALIE_Pos (6)
- #define CAN_IER_ALIE (0x01U << CAN_IER_ALIE_Pos) ///< CAN arbitration lost interrupt enable
- #define CAN_IER_BEIE_Pos (7)
- #define CAN_IER_BEIE (0x01U << CAN_IER_BEIE_Pos) ///< CAN bus error interrupt enable
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_ACRn register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_ACRn_AC_Pos (0)
- #define CAN_ACRn_AC (0xFFU << CAN_ACRn_AC_Pos) ///< CAN acceptance code
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_AMRn register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_AMRn_AM_Pos (0)
- #define CAN_AMRn_AM (0xFFU << CAN_AMRn_AM_Pos) ///< CAN acceptance mask
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_BTR0 register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_BTR0_BRP_Pos (0)
- #define CAN_BTR0_BRP (0x003FU << CAN_BTR0_BRP_Pos) ///< CAN baud rate prescaler
- #define CAN_BTR0_SJW_Pos (6)
- #define CAN_BTR0_SJW (0x03U << CAN_BTR0_SJW_Pos) ///< CAN synchronization jump width
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_ALC register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_ALC_BITNO_Pos (0)
- #define CAN_ALC_BITNO (0x001FU << CAN_ALC_BITNO_Pos) ///< CAN bit number
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_ECC register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_ECC_SEG_Pos (0)
- #define CAN_ECC_SEG (0x001FU <<CAN_ECC_SEG_Pos) ///< CAN error code capture
- #define CAN_ECC_DIR_Pos (5)
- #define CAN_ECC_DIR (0x01U << CAN_ECC_DIR_Pos) ///< CAN direction
- #define CAN_ECC_ERRC_Pos (6)
- #define CAN_ECC_ERRC (0x03U << CAN_ECC_ERRC_Pos) ///< CAN error code
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_EWLR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_EWLR_EWL_Pos (0)
- #define CAN_EWLR_EWL (0x00FFU << CAN_EWLR_EWL_Pos) ///< CAN programmable error warning limit
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_RXERR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_RXERR_RXERR_Pos (0)
- #define CAN_RXERR_RXERR (0x00FFU << CAN_RXERR_RXERR_Pos) ///< CAN RX error counter register
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_TXERR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_TXERR_TXERR_Pos (0)
- #define CAN_TXERR_TXERR (0x00FFU << CAN_TXERR_TXERR_Pos) ///< CAN TX error counter register
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_FF register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_FF_DLC_0_Pos (0)
- #define CAN_FF_DLC_0 (0x01U << CAN_FF_DLC_0_Pos) ///< CAN data length code bit
- #define CAN_FF_DLC_1_Pos (1)
- #define CAN_FF_DLC_1 (0x01U << CAN_FF_DLC_1_Pos) ///< CAN data length code bit
- #define CAN_FF_DLC_2_Pos (2)
- #define CAN_FF_DLC_2 (0x01U << CAN_FF_DLC_2_Pos) ///< CAN data length code bit
- #define CAN_FF_DLC_3_Pos (3)
- #define CAN_FF_DLC_3 (0x01U << CAN_FF_DLC_3_Pos) ///< CAN data length code bit
- #define CAN_FF_RTR_Pos (6)
- #define CAN_FF_RTR (0x01U << CAN_FF_RTR_Pos) ///< CAN remote transmission request
- #define CAN_FF_FF_Pos (7)
- #define CAN_FF_FF (0x01U << CAN_FF_FF_Pos) ///< CAN frame format
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_TXID0 register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_TXID0_ID_21_Pos (0)
- #define CAN_TXID0_ID_21 (0x01U << CAN_TXID0_ID_21_Pos) ///< CAN identifier bit 21
- #define CAN_TXID0_ID_22_Pos (1)
- #define CAN_TXID0_ID_22 (0x01U << CAN_TXID0_ID_22_Pos) ///< CAN identifier bit 22
- #define CAN_TXID0_ID_23_Pos (2)
- #define CAN_TXID0_ID_23 (0x01U << CAN_TXID0_ID_23_Pos) ///< CAN identifier bit 23
- #define CAN_TXID0_ID_24_Pos (3)
- #define CAN_TXID0_ID_24 (0x01U << CAN_TXID0_ID_24_Pos) ///< CAN identifier bit 24
- #define CAN_TXID0_ID_25_Pos (4)
- #define CAN_TXID0_ID_25 (0x01U << CAN_TXID0_ID_25_Pos) ///< CAN identifier bit 25
- #define CAN_TXID0_ID_26_Pos (5)
- #define CAN_TXID0_ID_26 (0x01U << CAN_TXID0_ID_26_Pos) ///< CAN identifier bit 26
- #define CAN_TXID0_ID_27_Pos (6)
- #define CAN_TXID0_ID_27 (0x01U << CAN_TXID0_ID_27_Pos) ///< CAN identifier bit 27
- #define CAN_TXID0_ID_28_Pos (7)
- #define CAN_TXID0_ID_28 (0x01U << CAN_TXID0_ID_28_Pos) ///< CAN identifier bit 28
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_TXID1 register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_TXID1_ID_13_Pos (0)
- #define CAN_TXID1_ID_13 (0x01U << CAN_TXID1_ID_13_Pos) ///< CAN identifier bit 13
- #define CAN_TXID1_ID_14_Pos (1)
- #define CAN_TXID1_ID_14 (0x01U << CAN_TXID1_ID_14_Pos) ///< CAN identifier bit 14
- #define CAN_TXID1_ID_15_Pos (2)
- #define CAN_TXID1_ID_15 (0x01U << CAN_TXID1_ID_15_Pos) ///< CAN identifier bit 15
- #define CAN_TXID1_ID_16_Pos (3)
- #define CAN_TXID1_ID_16 (0x01U << CAN_TXID1_ID_16_Pos) ///< CAN identifier bit 16
- #define CAN_TXID1_ID_17_Pos (4)
- #define CAN_TXID1_ID_17 (0x01U << CAN_TXID1_ID_17_Pos) ///< CAN identifier bit 17
- #define CAN_TXID1_ID_18_Pos (5)
- #define CAN_TXID1_ID_18 (0x01U << CAN_TXID1_ID_18_Pos) ///< CAN identifier bit 18
- #define CAN_TXID1_ID_19_Pos (6)
- #define CAN_TXID1_ID_19 (0x01U << CAN_TXID1_ID_19_Pos) ///< CAN identifier bit 19
- #define CAN_TXID1_ID_20_Pos (7)
- #define CAN_TXID1_ID_20 (0x01U << CAN_TXID1_ID_20_Pos) ///< CAN identifier bit 20
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_TXDATAn register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_TXDATAn_Pos (0)
- #define CAN_TXDATAn (0x00FFU << CAN_TXDATAn_Pos) ///< CAN transmit data n
- ////////////////////////////////////////////////////////////////////////////////
- /// @brief CAN_CDR register Bit definition
- ////////////////////////////////////////////////////////////////////////////////
- #define CAN_CDR_MODE_Pos (7)
- #define CAN_CDR_MODE (0x01U << CAN_CDR_MODE_Pos) ///< CAN mode
- /// @}
- /// @}
- /// @}
- ////////////////////////////////////////////////////////////////////////////////
- #endif
- ////////////////////////////////////////////////////////////////////////////////
|