Content originally posted in LPCWare by chaitanya9 on Sat Jun 13 01:24:23 MST 2015
Hi,
I am working on CAN peripheral in LPC2368 controller.I am testing the CAN peripheral in Acceptance filter ON mode with 11-bit Standard Explicit identifier.
Tested Following conditions
GRP_STD_ID = 0x300
EXP_STD_ID = 0x400;
EXP_EXT_ID = 0x100000
CAN_MEM_BASE = 0xE0038000;
address =0;
CAN_MEM_BASE = 0xE0038000;
1. For Lower boundary
address =0;
CAN_SFF_SA = address;
i =1;
ID_low = (i << 29) | ((EXP_STD_ID) << 16);
ID_high = ((i+1) << 13) | ((EXP_STD_ID) << 0);
*((volatile DWORD *)(CAN_MEM_BASE + address)) = ID_low | ID_high;
address += 4;
2. For Upper boundary
address =0;
CAN_SFF_SA = address;
i =0;
ID_low = (i << 29) | ((EXP_STD_ID) << 16);
ID_high = ((i+1) << 13) | ((EXP_STD_ID) << 0);
*((volatile DWORD *)(CAN_MEM_BASE + address)) = ID_low | ID_high;
address += 4;
Above Two conditions are working fine,but when i try to include both lower and upper boundaries in CAN channel 2,it's not working
address =0;
CAN_SFF_SA = address;
i =1;
ID_low = (i << 29) | ((EXP_STD_ID) << 16);
ID_high = (i << 13) | ((EXP_STD_ID) << 0);
*((volatile DWORD *)(CAN_MEM_BASE + address)) = ID_low | ID_high;
address += 4;
CAN_SFF_GRP_SA = address;
ID_low = (i << 29) | (GRP_STD_ID << 16);
ID_high = ((i+1) << 13) | (GRP_STD_ID << 0);
*((volatile DWORD *)(CAN_MEM_BASE + address)) = ID_low | ID_high;
address += 4;
CAN_EFF_SA = address;
ID_low = (i << 29) | (EXP_EXT_ID << 0);
*((volatile DWORD *)(CAN_MEM_BASE + address)) = ID_low;
address += 4;
CAN_EOT = address;
While writing the Look uptable RAM memory Acceptance filter is in OFF mode