打印
[STM32F4]

STM32F4 CAN总线数据接收

[复制链接]
985|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在使用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的数据。
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

177

帖子

1

粉丝