void Can_Config(void) { InitECanaGpio(); InitECana(); DCDC_3KW_CANTransmit_Init(); DCDC_3KW_CANReceive_Init(); DCDC_3KW_Init_ECana_INT(); LogDataMboxInit(); Init_CAN_RcvBuf() } void LogDataMboxInit(void) { union CANLAM_REG ECanaLAMShadow; ECanaMboxes.MBOX16.MSGID.all = LOG_Rx_ID; ECanaLAMShadow.all = ECanaLAMRegs.LAM16.all; ECanaLAMShadow.bit.LAMI = 1; // Keep same with mailbox 15 identifier, receive if same ECanaLAMShadow.bit.rsvd1 = 3; // Reserved bit, invalid write ECanaLAMShadow.bit.LAM_L = 0x0000; // Low bytes for comparison ECanaLAMShadow.bit.LAM_H = 0x0000; // High bytes for comparison ECanaLAMRegs.LAM16.all = ECanaLAMShadow.all; ECanaMboxes.MBOX15.MSGID.all = LOG_Tx_ID; ECanaShadow.CANMD.all = ECanaRegs.CANMD.all; ECanaShadow.CANMD.bit.MD15 = 0; // Transmit mailbox ECanaShadow.CANMD.bit.MD16 = 1; //Receive mailbox ECanaRegs.CANMD.all = ECanaShadow.CANMD.all; ECanaShadow.CANME.all = ECanaRegs.CANME.all; ECanaShadow.CANME.bit.ME15 = 1; ECanaShadow.CANME.bit.ME16 = 1; ECanaRegs.CANME.all = ECanaShadow.CANME.all; struct ECAN_REGS ECanaShadow; EALLOW; // ECanaShadow.CANMIM.all=ECanaRegs.CANMIM.all; // ECanaShadow.CANMIM.bit.MIM16=1; ECanaRegs.CANMIM.all= ECanaShadow.CANMIM.all; // ECanaShadow.CANMIL.all=ECanaRegs.CANMIL.all; ECanaShadow.CANMIL.bit.MIL16=0; ECanaRegs.CANMIL.all=ECanaShadow.CANMIL.all; // ECanaShadow.CANGIM.all=ECanaRegs.CANGIM.all; ECanaShadow.CANGIM.bit.AAIM=0; // ECanaShadow.CANGIM.bit.BOIM=0; // ECanaShadow.CANGIM.bit.EPIM=0; // ECanaShadow.CANGIM.bit.WDIM=0; // ECanaShadow.CANGIM.bit.WUIM=0; // ECanaShadow.CANGIM.bit.WLIM=0; // ECanaShadow.CANGIM.bit.I0EN=1; // ECanaShadow.CANGIM.bit.I1EN=0; // ECanaShadow.CANGIM.bit.GIL=0; // ECanaShadow.CANGIM.bit.MTOM=0; // ECanaShadow.CANGIM.bit.RMLIM=0; // ECanaShadow.CANGIM.bit.TCOM=0; // ECanaRegs.CANGIM.all=ECanaShadow.CANGIM.all; EDIS; }