在使用STM32F4的CAN总线接收数据时怎么无法接收到扩展帧呢?
我现在需要接收的数据帧的ID是0x07909ADC,滤波器采用的0,,采用的是32位标识符列表模式,按照官方手册的说明:
我在程序里面是这样配置的:
CAN_Filter_init.CAN_FilterMode = CAN_FilterMode_IdList;//ÑúÂëÄ£ê½,′Ë′|¿éÅäÖÃÎaÑúÂëÄ£ê½oíáD±íÄ£ê½
CAN_Filter_init.CAN_FilterScale = CAN_FilterScale_32bit;//
u32 temp;
temp = 0x07909ADC>>11;
temp = temp>>13;
temp = temp&0x1F;
CAN_Filter_init.CAN_FilterIdHigh = ((0x07909ADC&0x7FF)<<5)|temp;//这是获取STD[10:0]和EXID[17:13]
temp = 0x07909ADC>>11;
temp &=0x1FFF;
CAN_Filter_init.CAN_FilterIdLow = temp<<3|0x04;//这是获取EXID[12:0],同时还将IDE位置位,表示接收扩展帧;
CAN_FilterInit(&CAN_Filter_init);
怎么就不行呢?我也看了寄存器,也没问题啊!如果改为接收标准帧就可以。CAN_Filter_init.CAN_FilterIdLow = temp<<3|0x00;//这是获取EXID[12:0],同时还将IDE位置位,表示接收扩展帧;这样就能收到0x2DC的数据。
|