十万火急,求助啊,CAN通信(发在其它版上无人回答,跑这儿来了)
我现在使用CAN控制器通信总是总线错误啊,使用的芯片是LPC2292,CAN控制器是集成在这个芯片里面的。自测试模式是能够正常的收发数据的。请高人指点需要注意下什么啊,我现在做项目十分紧迫啊,都卡在这个问题上了,如果你有完整的解决方案,可以和我联系,我的电话是:13711746278,QQ:52382473,付报酬。
相关配置文件(Custom.h)如下,帮我看看参数是否正确,波特率
#ifndef _CUSTOM_H_
#define _CUSTOM_H_
#define BPS_250K 0x0017C003
#define CAN_MAX_NUM 4
#define CAN_OFFSET_ADR 0x4000
#define USE_CAN_RCV_BUF_SIZE 0x20
#define USE_MODE_CAN1 0x00
#define USE_MODE_CAN2 0x00
#define USE_MODE_CAN3 0x00
#define USE_MODE_CAN4 0x00
#define USE_EWL_CAN1 0x60
#define USE_EWL_CAN2 0x60
#define USE_EWL_CAN3 0x60
#define USE_EWL_CAN4 0x60
#define USE_INT_CAN1 0x7FF
#define USE_INT_CAN2 0x7FF
#define USE_INT_CAN3 0x7FF
#define USE_INT_CAN4 0x7FF
#define USE_TPM_CAN1 0x01
#define USE_TPM_CAN2 0x01
#define USE_TPM_CAN3 0x01
#define USE_TPM_CAN4 0x01
#define USE_BTR_CAN1 BPS_250K
#define USE_BTR_CAN2 BPS_250K
#define USE_BTR_CAN3 BPS_250K
#define USE_BTR_CAN4 BPS_250K
#endif
//CAN初始化函数
void InitCAN(eCANNUM CanNum)
{
HwEnCAN(CanNum); SoftRstCAN(CanNum); CANEWL(CanNum).Bits.EWL_BIT = USE_EWL_CAN[CanNum]; //初始化波特率
CANBTR(CanNum).Word = USE_BTR_CAN[CanNum];
VICDefVectAddr =(uint32)CANIntPrg;
VICIntEnable |=(1<<19)|(1<<(20+ CanNum))|(1<<(26+ CanNum));
CANIER(CanNum).Word= USE_INT_CAN[CanNum]; //配置验收过滤器 CANAFMR.Bits.AccBP_BIT =1;
CANMOD(CanNum).Bits.TPM_BIT = USE_TPM_CAN[CanNum];
CANMOD(CanNum).Bits. LOM_BIT = USE_MOD_CAN[CanNum]; CANRcvBufApp.FullFlag1=CANRcvBufApp.FullFlag2=CANRcvBufApp.FullFla g3=CANRcvBufApp.FullFlag4=0;
CANRcvBufApp.ReadPoint1=CANRcvBufApp.ReadPoint2=CANRcvBufApp.ReadP oint3=CANRcvBufApp.ReadPoint4=0;
CANRcvBufApp.WritePoint1=CANRcvBufApp.WritePoint2=CANRcvBufApp.Wri tePoint3=CANRcvBufApp.WritePoint4=0;
SoftEnCAN(CanNum);
}