查看: 2157|回复: 1

MC9S08DZ60 CAN滤波器配置

[复制链接]

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
17
最后登录
2017-3-31
发表于 2016-1-11 12:39:52 | 显示全部楼层 |阅读模式
我把can的滤波器配置为4个16位的滤波器,代码如下,但是只有滤波器0和2是有效的,滤波器1和3无效,下面是代码,请大神们帮忙分析下。

    CANCTL0_INITRQ = 1;  //设置MSCAN进入初始化模式
    while (!CANCTL1_INITAK) ;//等待进入初始化模式
   
    sj = (C_SJW-1)<<6;
    p = (C_BRP-1);
    CANBTR0 = (sj|p);  //0
   
    t_seg2 = (C_TSEG2-1)<<4;//3<<4
    t_seg1 = (C_TSEG1-1); //10
    CANBTR1 = (t_seg2|t_seg1);  //位时间定义
   
    //滤波器选择及配置寄存器
    CANIDAC_IDAM = 0b01; //4个16位的接收滤波器
    //滤波器0设置
    CANIDAR0 = 0x72;//C_IDAR1_H;
    CANIDAR1 = 0x40;//C_IDAR1_L;   id: 0x392
   
    CANIDMR0 = 0x00;//C_IDMR1_H; //0:match  1:ignore
    CANIDMR1 = 0x00;//C_IDMR1_L; //0:match  1:ignore
   
    //滤波器1设置
    CANIDAR2 = 0x62;
    CANIDAR3 = 0x20;   //  ID :0x311
    CANIDMR2 = 0xff; //0:match  1:ignoreSSff
    CANIDMR3 = 0xff; //0:match  1:ignore
   
    //滤波器2设置
    CANIDAR4 = 0xB1;//C_IDAR2_H;
    CANIDAR5 = 0x60;//C_IDAR2_LEPS ID :0x58B
    CANIDMR4 = 0x00;//C_IDMR2_H; //0:match  1:ignore
    CANIDMR5 = 0x00;//C_IDMR2_L; //0:match  1:ignore
    //滤波器3设置   
    CANIDAR6 = 0x00;
    CANIDAR7 = 0x00;   
    CANIDMR6 = 0xff; //0:match  1:ignore
    CANIDMR7 = 0xff; //0:match  1:ignore
   
    CANCTL1 = 0x80;
      //MSCAN module is enabled
      //Clock source is the oscillator clock
      //Automatic bus-off recovery
      //Wake up on any dominant level on the CAN bus
      
    CANCTL0_INITRQ = 0;   //can总线进入正常工作模式
    while (CANCTL1_INITAK) ; //等待can总线进入正常工作模式
   

回复

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
17
最后登录
2017-3-31
 楼主| 发表于 2016-1-11 12:49:48 | 显示全部楼层
滤波器1和3,我的屏蔽标识符接收寄存器的,但是什么数据都收不到,
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-8-3 08:59 , Processed in 0.078099 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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