Hello.
I'm implementing CAN driver on TMS320f28069 and Local-acceptance-mask doesn't work as expected. In Local-Acceptance-Mask Register I specify 0x1FFC0000 and according to the reference manual it should ignore 19-28 bits and match 1-18 with MSGID but it ignore ids like 0x00020000 and 0x00010000 while MSGID is set to 0x00020000 or 0x00010000 like:
union CANMSGID_REG msgid; msgid.all = (1<< 16); msgid.bit.IDE = 1; msgid.bit.AME = 1; obj->canAMboxes->MBOX16.MSGID.all = msgid.all; union CANLAM_REG lam16; lam16.all = 0x1FFC0000 ;//0001 1111 1111 1100 0000 0000 0000 0000 lam16.bit.LAMI = 1; obj->canALAMRegs->LAM16.all = lam16.all;
or
union CANMSGID_REG msgid; msgid.all = (2<< 16); msgid.bit.IDE = 1; msgid.bit.AME = 1; obj->canAMboxes->MBOX16.MSGID.all = msgid.all; union CANLAM_REG lam16; lam16.all = 0x1FFC0000 ;//0001 1111 1111 1100 0000 0000 0000 0000 lam16.bit.LAMI = 1; obj->canALAMRegs->LAM16.all = lam16.all;
according to the reference manual when LAMI is set to 1 and acceptance mask bit is 0 it compares that bit with MSGID and accepts on match, but in my application CAN drops this messages. Any suggestions?