void MX_CAN1_filter_Init(void)
{
CAN_FilterConfTypeDef sFilterConfig;
//======CAN1过滤器 0 初始化======
sFilterConfig.FilterNumber = 0; //过滤器组0
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //工作在标识符屏蔽位模式
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为单个32位。
//===使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。
sFilterConfig.FilterIdHigh = (((uint32_t)(0x0A490000 + chouti_ID )<<3)&0xFFFF0000)>>16; //要过滤的ID高位
sFilterConfig.FilterIdLow = (((uint32_t)(0x0A490000 + chouti_ID )<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位
sFilterConfig.FilterMaskIdHigh = 0x0000; //过滤器高16位每位必须匹配
sFilterConfig.FilterMaskIdLow = 0x0000; //过滤器低16位每位必须匹配
sFilterConfig.FilterFIFOAssignment = 0; //过滤器被关联到FIFO 0
sFilterConfig.FilterActivation = ENABLE; //使能过滤器
sFilterConfig.BankNumber = 10;
HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
// //======CAN1过滤器 1 初始化======
// sFilterConfig.FilterNumber = 1; //过滤器组0
// sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //工作在标识符屏蔽位模式
// sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为单个32位。
// //===使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。
// sFilterConfig.FilterIdHigh = (((uint32_t)(0x08C90000 + chouti_ID )<<3)&0xFFFF0000)>>16; //要过滤的ID高位
// sFilterConfig.FilterIdLow = (((uint32_t)(0x08C90000 + chouti_ID )<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位
// sFilterConfig.FilterMaskIdHigh = 0xFFFF; //过滤器高16位每位必须匹配
// sFilterConfig.FilterMaskIdLow = 0x8000; //过滤器低16位每位必须匹配
// sFilterConfig.FilterFIFOAssignment = 0; //过滤器被关联到FIFO 0
// sFilterConfig.FilterActivation = ENABLE; //使能过滤器
// sFilterConfig.BankNumber = 10;
// HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
//
// //======CAN1过滤器 2 初始化======
// sFilterConfig.FilterNumber = 2; //过滤器组0
// sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //工作在标识符屏蔽位模式
// sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为单个32位。
// //===使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。
// sFilterConfig.FilterIdHigh = (((uint32_t)(0x02490000 + chouti_ID )<<3)&0xFFFF0000)>>16; //要过滤的ID高位
// sFilterConfig.FilterIdLow = (((uint32_t)(0x02490000 + chouti_ID )<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位
// sFilterConfig.FilterMaskIdHigh = 0xFFFF; //过滤器高16位每位必须匹配
// sFilterConfig.FilterMaskIdLow = 0x8000; //过滤器低16位每位必须匹配
// sFilterConfig.FilterFIFOAssignment = 0; //过滤器被关联到FIFO 0
// sFilterConfig.FilterActivation = ENABLE; //使能过滤器
// sFilterConfig.BankNumber = 10;
// HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
//
// //======CAN1过滤器 3 初始化======
// sFilterConfig.FilterNumber = 3; //过滤器组0
// sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //工作在标识符屏蔽位模式
// sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为单个32位。
// //===使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。
// sFilterConfig.FilterIdHigh = (((uint32_t)(0X00C90000 + chouti_ID )<<3)&0xFFFF0000)>>16; //要过滤的ID高位
// sFilterConfig.FilterIdLow = (((uint32_t)(0X00C90000 + chouti_ID )<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位
// sFilterConfig.FilterMaskIdHigh = 0xFFFF; //过滤器高16位每位必须匹配
// sFilterConfig.FilterMaskIdLow = 0x8000; //过滤器低16位每位必须匹配
// sFilterConfig.FilterFIFOAssignment = 0; //过滤器被关联到FIFO 0
// sFilterConfig.FilterActivation = ENABLE; //使能过滤器
// sFilterConfig.BankNumber = 10;
// HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
//
//
//
}
//=============================================================================
//函 数 名: void MX_CAN2_filter_Init(void);
//功 能 : //------ CAN1 滤波程序段 ------
//入口参数: MX_CAN1_filter_Init( ); //------ CAN1 滤波程序段 ------
//出口参数: 无
//返 回 值: 无
//=============================================================================
void MX_CAN2_filter_Init(void)
{
CAN_FilterConfTypeDef sFilterConfig;
//======CAN2过滤器 0 初始化======
sFilterConfig.FilterNumber = 11; //过滤器组0
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //工作在标识符屏蔽位模式
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为单个32位。
//===使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。
sFilterConfig.FilterIdHigh = (((uint32_t)(0x0A490000 + chouti_ID )<<3)&0xFFFF0000)>>16; //要过滤的ID高位
sFilterConfig.FilterIdLow = (((uint32_t)(0x0A490000 + chouti_ID )<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位
sFilterConfig.FilterMaskIdHigh = 0xFFFF; //过滤器高16位每位必须匹配
sFilterConfig.FilterMaskIdLow = 0x8000; //过滤器低16位每位必须匹配
sFilterConfig.FilterFIFOAssignment = 0; //过滤器被关联到FIFO 0
sFilterConfig.FilterActivation = ENABLE; //使能过滤器
sFilterConfig.BankNumber = 10;
HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
//======CAN2过滤器 1 初始化======
sFilterConfig.FilterNumber = 12; //过滤器组0
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //工作在标识符屏蔽位模式
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为单个32位。
//===使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。
sFilterConfig.FilterIdHigh = (((uint32_t)(0x08C90000 + chouti_ID )<<3)&0xFFFF0000)>>16; //要过滤的ID高位
sFilterConfig.FilterIdLow = (((uint32_t)(0x08C90000 + chouti_ID )<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位
sFilterConfig.FilterMaskIdHigh = 0xFFFF; //过滤器高16位每位必须匹配
sFilterConfig.FilterMaskIdLow = 0x8000; //过滤器低16位每位必须匹配
sFilterConfig.FilterFIFOAssignment = 0; //过滤器被关联到FIFO 0
sFilterConfig.FilterActivation = ENABLE; //使能过滤器
sFilterConfig.BankNumber = 10;
HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
//======CAN2过滤器 2 初始化======
sFilterConfig.FilterNumber = 13; //过滤器组0
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //工作在标识符屏蔽位模式
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为单个32位。
//===使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。
sFilterConfig.FilterIdHigh = (((uint32_t)(0x02490000 + chouti_ID )<<3)&0xFFFF0000)>>16; //要过滤的ID高位
sFilterConfig.FilterIdLow = (((uint32_t)(0x02490000 + chouti_ID )<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位
sFilterConfig.FilterMaskIdHigh = 0xFFFF; //过滤器高16位每位必须匹配
sFilterConfig.FilterMaskIdLow = 0x8000; //过滤器低16位每位必须匹配
sFilterConfig.FilterFIFOAssignment = 0; //过滤器被关联到FIFO 0
sFilterConfig.FilterActivation = ENABLE; //使能过滤器
sFilterConfig.BankNumber = 10;
HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
//======CAN2过滤器 3 初始化======
sFilterConfig.FilterNumber = 14; //过滤器组0
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; //工作在标识符屏蔽位模式
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; //过滤器位宽为单个32位。
//===使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。
sFilterConfig.FilterIdHigh = (((uint32_t)(0X00C90000 + chouti_ID )<<3)&0xFFFF0000)>>16; //要过滤的ID高位
sFilterConfig.FilterIdLow = (((uint32_t)(0X00C90000 + chouti_ID )<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //要过滤的ID低位
sFilterConfig.FilterMaskIdHigh = 0xFFFF; //过滤器高16位每位必须匹配
sFilterConfig.FilterMaskIdLow = 0x8000; //过滤器低16位每位必须匹配
sFilterConfig.FilterFIFOAssignment = 0; //过滤器被关联到FIFO 0
sFilterConfig.FilterActivation = ENABLE; //使能过滤器
sFilterConfig.BankNumber = 10;
HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
}
|