[STM32F4] STM32F4 CAN总线数据接收

[复制链接]
1186|0
 楼主| 596142041 发表于 2016-8-18 21:10 | 显示全部楼层 |阅读模式
在使用STM32F4的CAN总线接收数据时怎么无法接收到扩展帧呢?
我现在需要接收的数据帧的ID是0x07909ADC,滤波器采用的0,,采用的是32位标识符列表模式,按照官方手册的说明:
QQ截图20160818205339.png
我在程序里面是这样配置的:

    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的数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

177

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部