Hi i have problems with CAN1 configuration (CAN0 works fine).
I have this code with PC10 and PC11 pins are connected to PCAN-USB
void peri_clock_gating (void) {
MC_ME.RUN_PC[0].R = 0x00000000;
MC_ME.RUN_PC[1].R = 0x000000FE;
MC_ME.PCTL[70].B.RUN_CFG = 0x1;
MC_ME.PCTL[71].B.RUN_CFG = 0x1;
}
void readCanBus1(unsigned int *id, unsigned char *buf,unsigned int len,unsigned int *outLen)
{
uint8_t j;
uint32_t __attribute__ ((unused)) dummy;
while (CAN_1.IFLAG1.B.BUF4TO1I != 8) {};
*id = CAN_1.MB[4].ID.B.ID_STD;
*outLen = CAN_1.MB[4].CS.B.DLC;
if (*outLen>len)
{
*outLen=len;
}
for (j=0; j<(*outLen); j++) {
buf[j] = CAN_1.MB[4].DATA.B[j];
}
dummy = CAN_1.TIMER.R;
CAN_1.IFLAG1.R = 0x00000010;
}
void writeCanBus1(unsigned int id, unsigned char *buf,unsigned int len)
{
uint8_t i;
CAN_1.MB[0].CS.B.IDE = 0;
CAN_1.MB[0].ID.B.ID_STD = id;
CAN_1.MB[0].CS.B.RTR = 0;
CAN_1.MB[0].CS.B.DLC = len;
for (i=0; i<len; i++) {
CAN_1.MB[0].DATA.B[i] = buf[i];
}
CAN_1.MB[0].CS.B.SRR = 1;
CAN_1.MB[0].CS.B.CODE =0xC;
}
void initCanBus1()
{
int i;
CAN_1.MCR.B.MDIS = 1;
CAN_1.CTRL1.B.CLKSRC=0;
CAN_1.MCR.B.MDIS = 0;
while (!CAN_1.MCR.B.FRZACK) {}
CAN_1.CTRL1.R = 0x04DB0086;
for (i=0; i<96; i++) {
CAN_1.MB[i].CS.B.CODE = 0;
}
CAN_1.MB[0].CS.B.CODE = 8;
CAN_1.MB[4].CS.B.IDE = 0;
CAN_1.MB[4].ID.B.ID_STD = 0x666;
CAN_1.MB[4].CS.B.CODE = 4;
CAN_1.RXMGMASK.R = 0;
SIUL2.MSCR[42].B.SSS = 1;
SIUL2.MSCR[42].B.OBE = 1;
SIUL2.MSCR[42].B.SRC = 3;
SIUL2.MSCR[43].B.IBE = 1;
SIUL2.IMCR[701-512].B.SSS = 3;
CAN_1.MCR.R = 0x0000003F;
while (CAN_1.MCR.B.FRZACK & CAN_1.MCR.B.NOTRDY) {}
}
Also i try send data between CAN0 and CAN1, it doesn't work. I suppose i have some problem with configuration CAN1
Could you help me?
I know CAN1 doesn't have termination resistor. I tried connected CAN0, CAN1 and PCAN-USB parallels
Thank you