Other Parts Discussed in Thread: TMS320F28035
I have a TMS320F28035 customer with an issue using the CAN module...
I configured two mailbox to receive different messages. Following is initialization...
EALLOW; ECanaRegs.CANME.bit.ME0 = 0; ECanaMboxes.MBOX1.MSGID.bit.AME = 1; ECanaMboxes.MBOX1.MSGID.all = 0xFFF1FFFF; ECanaLAMRegs.LAM1.all = 0xFFF0FFFF; ECanaRegs.CANMD.bit.MD0 = 1; ECanaRegs.CANME.bit.ME0 = 1; ECanaRegs.CANME.bit.ME2 = 0; ECanaMboxes.MBOX2.MSGID.bit.AME = 1; ECanaMboxes.MBOX2.MSGID.all = 0xFFF2FFFF; ECanaLAMRegs.LAM2.all = 0xFFF0FFFF; ECanaRegs.CANMD.bit.MD2 = 1; ECanaRegs.CANME.bit.ME2 = 1;
EDIS Mailbox 1 receive CAN message as expected and RMP1 bit set at every CAN message with matching identifier. Mailbox 2 receive only one message after power cycle. Mailbox 2 has valid data (Same as monitored by CAN adapter, spy tool), but RMP2 bit is always 0. I am not using interrupts for CAN. Value of ECanaRegs.CANRMP is zero, which indicates message was not received by other mailbox. Message identifier on CAN bus is 0x10220007, which match mailbox 2.
Following is portion of code which handle mailbox two data...
if(ECanaRegs.CANRMP.bit.RMP2) { ECanaRegs.CANRMP.bit.RMP2 = 0; Read data from mailbox2 }else if(ECanaRegs.CANRML.bit.RML2) { ECanaRegs.CANRMP.bit.RMP2 = 1; }
Can you please suggest possible cause? Does TI have any example code for CAN?
Thanks!