CAN: настройка фильтров FIFO процессора Cortex-M3
Настройка фильтров FIFO CAN-контроллера можно выполнить с помощью функции стандартной библиотеки (stm32f10x_can.h):
void CAN_FilterInit (CAN_FilterInitTypeDef* CAN_FilterInitStruct);
поддерживает только интерфейс CAN1;
CAN_FilterInitStruct - структура с параметрами инициализации фильтров CAN-контроллера:
//- stm32f10x_can.h
typedef struct
{
uint16_t CAN_FilterIdHigh; /* Старшие разряды ID в 32-битном режиме или первый ID в 16-битном режиме */
uint16_t CAN_FilterIdLow; /* Младшие разряды ID в 32-битном режиме или второй ID в 16-битном режиме */
uint16_t CAN_FilterMaskIdHigh; /* Старшие разряды Mask/ID в 32-битном режиме или первый Mask/ID в 16-битном режиме */
uint16_t CAN_FilterMaskIdLow; /* Младшие разряды Mask/ID в 32-битном режиме или второй Mask/ID в 16-битном режиме */
uint16_t CAN_FilterFIFOAssignment; /* Назначает FIFO (0 или 1) для фильтра */
uint8_t CAN_FilterNumber; /* Номер фильтра от 0 до 13 */
uint8_t CAN_FilterMode; /* Режим работы фильтра (IdMask или IdList) */
uint8_t CAN_FilterScale; /* Разрядность фильтра 32- или 16-бит */
FunctionalState CAN_FilterActivation; /* Устанавливает активность фильтра: ENABLE или DISABLE */
} CAN_FilterInitTypeDef;
CAN_FilterFIFOAssignment - номер FIFO, назначенный фильтру CAN-контроллера:
#define CAN_Filter_FIFO0 ((uint8_t)0x00) /* Filter FIFO 0 assignment for filter x */
#define CAN_Filter_FIFO1 ((uint8_t)0x01) /* Filter FIFO 1 assignment for filter x */
CAN_FilterMode - режим работы фильтра CAN-контроллера:
#define CAN_FilterMode_IdMask ((uint8_t)0x00) /* identifier/mask mode */
#define CAN_FilterMode_IdList ((uint8_t)0x01) /* identifier list mode */
CAN_FilterScale - разрядность фильтра CAN-контроллера:
#define CAN_FilterScale_16bit ((uint8_t)0x00) /* Two 16-bit filters */
#define CAN_FilterScale_32bit ((uint8_t)0x01) /* One 32-bit filter */