打印
[CAN-bus/DeviceNet]

周立功技术支持请进,LPC2219or2292的CAN应用高手请进

[复制链接]
2205|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
smallfish6|  楼主 | 2007-1-30 12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include "config.h"


#define BPS_1000K   (0<<23)|(1<<20)|(7<<16)|(0<<14)|0 /*定义CAN的通信波特率*/
#define CAN1     0 





void PinSet (UINT8  CanNum)
{
PCONP |= ((UINT32)0x01 << (13+CanNum));
switch(CanNum)
{
   case CAN1:
         PINSEL1&=~((UINT32)0x03<<18);
         PINSEL1|=((UINT32)0x01<<18);
         break;
         default:
         break;
  }
}


void SetBuad(UINT8  CanNum)
{
  switch(CanNum)
{
  case CAN1:
       CAN1BTR=BPS_1000K;
       break;
  default:
       break;
}
}


void SetWarmVal(UINT8  CanNum)
{
switch(CanNum)
{
  case CAN1:
         CAN1EWL=0x60;
         break;
  default:
         break;
}
}


void SetInterrupt(UINT8  CanNum)
{
switch(CanNum)
{
  case CAN1:
         CAN1IER=0x01;
         break;
  default:
         break;
}
}


void InitCAN(UINT8  CanNum)
{
  PinSet(CanNum);
  switch(CanNum)
{
  case CAN1:  
      CAN1MOD=CAN1MOD|0x01;
      SetWarmVal(CAN1);
      SetBuad(CAN1);
      SetInterrupt(CAN1);
      CAN1MOD=CAN1MOD|0x4;
      CAN1MOD=CAN1MOD&0xFE;   //CAN的工作模式选择  
      break;
default:
      break;
  }
      
}

void __irq CAN1INT(void)
{
UINT32 temp;
temp=CAN1ICR;                         //清除中断方式

CAN1CMR=0x04;                         //释放接收缓冲
VICVectAddr=0x00;                     //通知中断结束
}

int main (void)
{
   
      VICIntSelect = 0;        // 设置所有中断分配为IRQ中断

    // CAN1 中断入口设定,非向量中断
    VICDefVectAddr = (UINT32)CAN1INT;
    
    // 打开相应的VIC中断允许
    VICIntEnable = (0x01L << 19);
    VICIntEnable = ((0x01L << 20) | (0x01L << 26));
    
    CANAFMR=0x02;  //旁路模式

        InitCAN(CAN1);
      
  
    
    CAN1TFI1=0<<31|0<<30|8<<16|0x00;       /*帧信息:标准数据帧,8位数据*/
    CAN1TID1=0xAA;                         /*帧ID:0xAA*/
    CAN1TDA1=0x44332211;                   /*前4字节数据*/
    CAN1TDB1=0x88776655;                   /*后4字节数据*/
   
    CAN1CMR=0x30;                         /*选择第一缓冲并启动发送*/
    
    while(1);                              /*等待中断*/
    return 0;
}

这是我改的一个自发自收的CAN程序,但是不能够发送出去,进不了中断,请高手们帮看下是哪个地方有问题,谢谢!!
我买的是SMART2200的扳子,CPU用的是2292,我把CAN收发器的H与L端已经用电阻短接了

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝