导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→你可以看看~~

* 73272: 求助一个P87c591中CAN网初始化的问题?

   fenggou80 
fenggou80发表的帖子 

 你可以看看~~
P87C591单片机:
/******************************************
 单片机CAN寄存器初始化函数
******************************************/
void P87C591_CANRegInit_Config()
{
    REG_CANADR = REG_CAN_MOD;             //指针指向CAN寄存器MOD
    REG_CANDAT = 0x01;                    //置复位请求
    
    P1M2 = P1M2|0xC2;                     //将CAN总线TXDC置成推挽模式
    
    REG_CANADR = REG_CAN_IER;             
    REG_CANDAT = 0x83;                    //开CAN中断
    
    REG_CANADR = REG_CAN_BTR0;            //10K波特率 FOR 12M(CAN) 
    REG_CANDAT = 0xEF;
    REG_CANADR = REG_CAN_BTR1;
    REG_CANDAT = 0xFF;
    
    REG_CANADR = REG_CAN_ACF1_ACR0;       //设置验收代码滤波器(接收标志:0xAC)
    REG_CANDAT = 0xAC;
    REG_CANDAT = 0x00;
    REG_CANDAT = 0x00;
    
    REG_CANADR = REG_CAN_ACF1_AMR0;       //设置验收代码屏蔽器
    REG_CANDAT = 0x00;
    REG_CANDAT = 0xFF;
    REG_CANDAT = 0xFF;
    REG_CANDAT = 0xFF;
     
    REG_CANADR = REG_CAN_ACFMOD;          //设置验收滤波器工作模式(单滤波器,接收扩展帧)
    REG_CANDAT = 0x33;
    
    REG_CANADR = REG_CAN_ACFPRIO;         //设置所有滤波器优先级为高
    REG_CANDAT = 0xFF;
    
    REG_CANADR = REG_CAN_ACFEN;           //使能验收滤波器1
    REG_CANDAT = 0x01;
    
    REG_CANADR = REG_CAN_MOD;             //退出复位使能
    REG_CANDAT = 0x00;
}

    

/*************************************************
 CAN中断处理函数
*************************************************/
void ECAN_int_service(void) interrupt 13  
{
    
 REG_CANADR = REG_CAN_IR;
 InterruptRegCopy = REG_CANDAT;           //读出CAN中断状态
                CANADR_save = REG_CANADR;

               if((InterruptRegCopy & 0x01) == 0x01)
 {
          //接收中断       
 }  

 if((InterruptRegCopy & 0x02) == 0x02)
 {
         //发送中断处理
 }

               if((InterruptRegCopy & 0x80) == 0x80)
 {
        //总线出错处理
 }
    
    REG_CANADR = CANADR_save;

}

你试试先~~
都是跑通了的
初始化波特率写入的值那里我不太肯定,忘了,你自己查一下




发表时间:2005年2月21日10:10:48

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:不一定当然,做上隔离是最好的。但是不隔离不一定就不行。我做的也是工业级应用,没有隔离,现场跑了几个月
[下一篇帖子]:[求助]请问使用CAN总线电路时一定要用光隔和电源隔离吗?大家好,请问在使用CAN总线收发器,如82