求助各位大虾2292cpu的can滤波器设置程序,我自己写了个可是调试发现有问题,通不了,不知道哪里有问题,烦请大虾们出来指点一二。 void Init_CAN_AccFilter(void) {
UINT32 i=0;
CANAFMR.Word |=1; //关闭验收滤波器 CANAFMR.Word |= 1<<1; //使能修改相关寄存器 CANAFMR.Word &= ~(1<<2); //禁止FullCAN模式 CANSFF_sa.Bits.SADR_BIT = 8; /*独立标准帧标识符*/ CANSFF_TAB(i).Bits.CANSFFID2 = 8; CANSFF_TAB(i).Bits.EN_BIT2 = 0; CANSFF_TAB(i).Bits.Num_BIT2 = 1;//使用的 CAN控制器号; CANSFF_TAB(i).Bits.CANSFFID1 = 16; CANSFF_TAB(i).Bits.EN_BIT1 = 0; CANSFF_TAB(i).Bits.Num_BIT1 = 1;//使用的 CAN控制器号; i++; /*组标准帧标识符*/ CANSFF_GRP_TAB(i).Bits.CANSFFID2 = 8; CANSFF_GRP_TAB(i).Bits.EN_BIT2 = 0; CANSFF_GRP_TAB(i).Bits.Num_BIT2 = 1;//使用的 CAN控制器号; CANSFF_GRP_TAB(i).Bits.CANSFFID1 = 1; CANSFF_GRP_TAB(i).Bits.EN_BIT1 = 0; CANSFF_GRP_TAB(i).Bits.Num_BIT1 = 1;//使用的CAN控制器号;
i++;
/*独立扩展帧标识符*/ CANEFF_TAB(i).Bits.CANEFFID1 = 8; CANEFF_TAB(i).Bits.Num_BIT = 1;//使用的CAN控制器号; i++; CANEFF_TAB(i).Bits.CANEFFID1 = 1; CANEFF_TAB(i).Bits.Num_BIT = 1;//使用的CAN控制器号; i++; /*组扩展帧标识符*/ CANEFF_GRP_TAB(i).Bits.CANEFFID1 = 8; CANEFF_GRP_TAB(i).Bits.Num_BIT = 1;//使用的 CAN控制器号;
i++;
CANEFF_GRP_TAB(i).Bits.CANEFFID1 = 1; CANEFF_GRP_TAB(i).Bits.Num_BIT = 1;//使用的CAN控制器号;
/*各表格起始地址*/ CANSFF_sa.Word = (0x00<<2); CANSFF_GRP_sa.Word = (0x01<<2); CANEFF_sa.Word =(0x02<<2); CANEFF_GRP_sa.Word = (0x04<<2); CANENDofTable.Word = (0x06<<2); CANAFMR.Word &= ~1; //打开验收滤波器 CANAFMR.Word &= ~(1<<1); //禁止修改相关寄存器*/
} |