查看: 2748|回复: 7

[已解决] 请教下ke6的can模块需要接收4个不同的帧数据,请问过滤器...

[复制链接]
  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
    发表于 2017-4-12 08:59:34 | 显示全部楼层 |阅读模式
    //定义了4个ID
    #define NODE_ID0                        0x08000000   
    #define NODE_ID1                        0x10000000
    #define NODE_ID2                        0x0C000000
    #define NODE_ID3                        0x18000000
    //这里的IDAR该如何设置?
    #define CAN_IDAR0                 
    #define CAN_IDAR1         
    //是否用16位过滤模式   
    #define CAN_IDMR0                0xFFF8001F
    #define CAN_IDMR1                0XFFF8001F

        MSCAN_ConfigType sMSCANConfig = {0};
        uint8_t i;
        MSCAN_GlobeVaribleInit(MSCAN);
        SIM->PINSEL1 &= ~(1<<SIM_PINSEL1_MSCANPS_SHIFT); // CAN_TX on PTC7, CAN_RX on PTC6
        sMSCANConfig.sBaudRateSetting.SJW = BAUD_RATE_SJW; //SJW=0
        sMSCANConfig.sBaudRateSetting.BRP = 9;
        sMSCANConfig.sBaudRateSetting.SAMP = BAUD_RATE_SAMP; // 0
        sMSCANConfig.sBaudRateSetting.TSEG1= BAUD_RATE_TSEG1;  // 4
        sMSCANConfig.sBaudRateSetting.TSEG2= BAUD_RATE_TSEG2;  //3
        sMSCANConfig.u32IDAR0 = (CAN_IDAR0);  //CANIDAR0-3
        sMSCANConfig.u32IDAR1 = (CAN_IDAR1);  //CANIDAR4-7
        sMSCANConfig.u32IDMR0 = (CAN_IDMR0);  //CANIDMR0-3
        sMSCANConfig.u32IDMR1 = (CAN_IDMR1);  //CANIDMR4-7
        sMSCANConfig.u8IDARMode = ID_ACCEPT_MODE_FOUR16; /* 四个16位ID模式 */  
        sMSCANConfig.sSetting.bCanEn = 1;//CAN module enable
        sMSCANConfig.sSetting.bCLKSRC = 1;//clock source is bus clock:20Mhz 0:external 8Mhz
       //sMSCANConfig.sSetting.bLoopModeEn = 1;  //loopback enable
    sMSCANConfig.sSetting.bRxFullIEn=1;//receive full interrupt request enable
    sMSCANConfig.sSetting.bTimerEn=1;// enable internal MSCAN timer
        sMSCANConfig.sSetting.bOverRunIEn=1;//overrun interrup enable
        sMSCANConfig.sSetting.bStatusChangeIEn=1;//del by xiewei Can status change interrupt enable
    //sMSCANConfig.sSetting.bTxEmptyIEn=1;//transmit empty interrupt disable                                          
    CAN_Init(MSCAN,&sMSCANConfig);

    请问: CAN_IDAR0/CAN_IDAR1及CAN_IDMR0/CAN_IDMR1, 应该如何设置? 请各位懂得来帮个忙啦


    最佳答案

    烟雨梦 发表于 2017-4-12 09:47 这个我看过,之前做的产品接收两帧,参考的这个文档,现在接收多帧数据,不知如何配置了 ... 请参考这个网友的问题: https://www.nxpic.org.cn/module/forum/thread-608973-1-1.html ...
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25448
    最后登录
    2025-9-4
    发表于 2017-4-12 09:44:18 | 显示全部楼层
    楼主你好!
    关于这个问题,请查看我写过的一篇经验分享:
    【经验分享】KE06 MSCAN标识符接收滤波器配置讲解 ...
    里面有各种过滤情况的详细讲解及代码。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
     楼主| 发表于 2017-4-12 09:46:50 | 显示全部楼层
    小恩GG 发表于 2017-4-12 09:44
    楼主你好!
    关于这个问题,请查看我写过的一篇经验分享:
    【经验分享】KE06 MSCAN标识符接收滤波器配置讲 ...

    这个我看过,之前做的产品接收两帧,参考的这个文档,现在接收多帧数据,不知如何配置了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
     楼主| 发表于 2017-4-12 09:47:11 | 显示全部楼层
    小恩GG 发表于 2017-4-12 09:44
    楼主你好!
    关于这个问题,请查看我写过的一篇经验分享:
    【经验分享】KE06 MSCAN标识符接收滤波器配置讲 ...

    这个我看过,之前做的产品接收两帧,参考的这个文档,现在接收多帧数据,不知如何配置了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25448
    最后登录
    2025-9-4
    发表于 2017-4-12 10:01:20 | 显示全部楼层
    烟雨梦 发表于 2017-4-12 09:46
    这个我看过,之前做的产品接收两帧,参考的这个文档,现在接收多帧数据,不知如何配置了 ...

    你下载下最新代码,之前这个代码对于多帧有点bug,后来我修复了。里面我添加多帧接收的。
    你用最新代码跑下,如果还有问题,我们继续交流。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
     楼主| 发表于 2017-4-12 10:13:37 | 显示全部楼层
    小恩GG 发表于 2017-4-12 10:01
    你下载下最新代码,之前这个代码对于多帧有点bug,后来我修复了。里面我添加多帧接收的。
    你用最新代码跑 ...

    好的,另外请教下NVIC_EnableIRQ和NVIC_DisableIRQ的原型在哪儿?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25448
    最后登录
    2025-9-4
    发表于 2017-4-12 10:21:32 | 显示全部楼层
    __STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
    {
      if ((int32_t)(IRQn) >= 0)
      {
        NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
      }
    }


    __STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
    {
      if ((int32_t)(IRQn) >= 0)
      {
        NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
      }
    }

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25448
    最后登录
    2025-9-4
    发表于 2017-4-13 13:55:38 | 显示全部楼层
    烟雨梦 发表于 2017-4-12 09:47
    这个我看过,之前做的产品接收两帧,参考的这个文档,现在接收多帧数据,不知如何配置了 ...

    请参考这个网友的问题:
    https://www.nxpic.org.cn/module/forum/thread-608973-1-1.html
    我在地板楼已经给出详细的回复。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-6 14:26 , Processed in 0.107164 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表