const int8_t TTCAN_SetACCF_Lookup(const uint32_t * const identifier, const uint16_t identifierCount) {
uint32_t address = 0;
uint32_t i, j;
uint32_t ID_high, ID_low;
LPC_CANAF->SFF_sa = address;
// register all identifiers for filtering standard identifier
j = 0;
for (i = 0; i < identifierCount * 2; i += 2) {
ID_low = (i << 29) | (identifier[j] << 16);
ID_high = ((i + 1) << 13) | (identifier[j] << 0);
*((volatile uint32_t *) (LPC_CANAF_RAM_BASE + address)) = ID_low | ID_high;
address += 4;
j++;
}
// disable the other registers
LPC_CANAF->SFF_GRP_sa = address;
LPC_CANAF->EFF_sa = address;
LPC_CANAF->EFF_GRP_sa = address;
LPC_CANAF->ENDofTable = address;
// set end of table
LPC_CANAF->ENDofTable = address;
return TTCAN_OK;
} |