CAN (Controller area network) - Регистры CAN-шины
CAN control and status registers - регистры управления и состояния CAN-шины
CAN mailbox registers - регистры почтовых ящиков CAN-шины
Offset: 0x180, 0x190, 0x1A0
CAN TX mailbox identifier register
Регистр идентификатора сообщения почтового ящика передатчика CAN-шины
Offset: 0x184, 0x194, 0x1A4
CAN mailbox data length control and time stamp register
Регистр управления длиной данных почтового ящика и временных меток передатчика CAN-шины
Offset: 0x188, 0x198, 0x1A8
CAN mailbox data low register
Регистр младших данных почтового ящика передатчика CAN-шины
Offset: 0x18С, 0x19С, 0x1AС
CAN mailbox data high register
Регистр старших данных почтового ящика передатчика CAN-шины
Offset: 0x1B0, 0x1C0
CAN receive FIFO mailbox identifier register
Регистр идентификатора сообщения почтового ящика FIFO приёмника CAN-шины
Offset: 0x1B4, 0x1C4
CAN receive FIFO mailbox data length control and time stamp register
Регистр управления длиной данных почтового ящика FIFO и временных меток приёмника CAN-шины
Offset: 0x1B8, 0x1C8
CAN receive FIFO mailbox data low register
Регистр младших данных почтового ящика FIFO приёмника CAN-шины
Offset: 0x1BС, 0x1СС
CAN receive FIFO mailbox data high register
Регистр старших данных почтового ящика FIFO приёмника CAN-шины
CAN filter registers - регистры фильтров CAN-шины
Offset: 0x214
CAN filter FIFO assignment register
Регистр назначения фильтра для FIFO CAN-шины
Offset: 0x240...0x31C
Filter bank i register x (i=0..27, x=1, 2)
Регистр банков фильтра CAN-шины (регистр маски / идентификатора)
#define PERIPH_BASE ((uint32_t)0x40000000) /* Peripheral base address in the alias region */
#define APB1PERIPH_BASE PERIPH_BASE
#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000)
#define CAN1_BASE (APB1PERIPH_BASE + 0x6400)
#define CAN2_BASE (APB1PERIPH_BASE + 0x6800)
#define CAN1 ((CAN_TypeDef *) CAN1_BASE)
#define CAN2 ((CAN_TypeDef *) CAN2_BASE)
typedef struct
{
__IO uint32_t MCR;
__IO uint32_t MSR;
__IO uint32_t TSR;
__IO uint32_t RF0R;
__IO uint32_t RF1R;
__IO uint32_t IER;
__IO uint32_t ESR;
__IO uint32_t BTR;
uint32_t RESERVED0[88];
CAN_TxMailBox_TypeDef sTxMailBox[3];
CAN_FIFOMailBox_TypeDef sFIFOMailBox[2];
uint32_t RESERVED1[12];
__IO uint32_t FMR;
__IO uint32_t FM1R;
uint32_t RESERVED2;
__IO uint32_t FS1R;
uint32_t RESERVED3;
__IO uint32_t FFA1R;
uint32_t RESERVED4;
__IO uint32_t FA1R;
uint32_t RESERVED5[8];
CAN_FilterRegister_TypeDef sFilterRegister[14]; /* not STM32F10X_CL */
//CAN_FilterRegister_TypeDef sFilterRegister[28]; /* STM32F10X_CL */
} CAN_TypeDef;
// Controller Area Network TxMailBox
typedef struct
{
__IO uint32_t TIR;
__IO uint32_t TDTR;
__IO uint32_t TDLR;
__IO uint32_t TDHR;
} CAN_TxMailBox_TypeDef;
// Controller Area Network FIFOMailBox
typedef struct
{
__IO uint32_t RIR;
__IO uint32_t RDTR;
__IO uint32_t RDLR;
__IO uint32_t RDHR;
} CAN_FIFOMailBox_TypeDef;
// Controller Area Network FilterRegister
typedef struct
{
__IO uint32_t FR1;
__IO uint32_t FR2;
} CAN_FilterRegister_TypeDef;
/****** STM32 specific Interrupt Numbers *******/
USB_HP_CAN1_TX_IRQn = 19, /* USB Device High Priority or CAN1 TX Interrupts */
USB_LP_CAN1_RX0_IRQn = 20, /* USB Device Low Priority or CAN1 RX0 Interrupts */
CAN1_RX1_IRQn = 21, /* CAN1 RX1 Interrupt */
CAN1_SCE_IRQn = 22, /* CAN1 SCE Interrupt */
...
CAN2_TX_IRQn = 63, /* CAN2 TX Interrupt STM32F10X_CL */
CAN2_RX0_IRQn = 64, /* CAN2 RX0 Interrupt STM32F10X_CL */
CAN2_RX1_IRQn = 65, /* CAN2 RX1 Interrupt STM32F10X_CL */
CAN2_SCE_IRQn = 66, /* CAN2 SCE Interrupt STM32F10X_CL */
//- функции прерывания (из startup-файла)
DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
DCD CAN1_SCE_IRQHandler ; CAN1 SCE