首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

CAN扩展帧 标示符屏蔽设置问题

CAN扩展帧 标示符屏蔽设置问题

本帖最后由 dicke-dunkun 于 2009-12-12 09:27 编辑

//预分频系数为1,即Tq=晶振时钟=0.25us
#define BaudRatePrescaler 2
//TSEG1=5,TSEG2=2,即Tbit=(1+5+2)*Tq=2us,即波特率为500kbps
#define TimeSegment1  5
#define TimeSegment2  2
//SJW=2*Tq
#define SyncJumpWidth  2

void MSCANInit(void)
{
CAN0CTL0 = 0x01;                                      //进入初始化模式
while(CAN0CTL1_INITAK==0)                             //等待CAN进入初始化模式
;                           
CAN0CTL1 = 0x84;                                      //开启CAN模块,开启唤醒低通滤波,晶振时钟作为时钟源
CAN0BTR0 = ((SyncJumpWidth-1)<<6)|(BaudRatePrescaler-1);   //设置波特率
CAN0BTR1 = ((TimeSegment2-1)<<4)|(TimeSegment1-1);


CAN0CTL0_INITRQ = 0;                                  //进入普通模式
while(CAN0CTL1_INITAK!=0)                             //等待进入普通模式
;                           
                                                      
CAN0TIER = 0;                                        //关闭CAN发送空中断
CAN0CTL0_WUPE = 1;                                    //允许唤醒
CAN0CTL0_CSWAI = 0;                                  //WAI模式下工作
  while(CAN0CTL0_RXFRM!=1)                              //判断信息接受标志位
   ;                                                   
}

以上是我的CAN初始化程序,在接受扩展帧时收不到消息,麻烦各位大侠帮看一下,另外请教一下加入我该节点要收四个扩展帧ID怎么设置标示符接收屏蔽寄存器!十分感谢!
首先看你选择哪种过滤器,将那种过滤器里的IDE位置1
返回列表