Changing ID or Mask of CAN FULL Rx Mailbox at runtime

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hello,

   

I'm working on a project where I need to set the CAN_ID of a FULL CAN mailbox at runtime (because the ID is coming from an EEPROM). Using the following topic (http://www.cypress.com/forum/psoc-3-architecture/modifying-full-can-mailbox-s-identifier-program) I was able to set my Tx FULL mailboxes appropriately to transmit with the appropriate ID. 

   

However when I try the same pattern for CAN full Rx mailboxes it doesn't work:

   
    CY_SET_REG32((reg32 *)&CAN_1_RX[CAN_RX_BOOTLADER_MAILBOX].rxid, ((CAN_RX_BOOTLOADER_ID | PARTIAL_ID) << 21u));   
   

The Tx Address updates properly, but the interrupt associated with that mailbox (mailbox 2) still triggers on the default ID the CAN component was compiled with (in this case 0x601) and not the 0x6BE I set the register to. This leads me to think that the ID of an full Rx mailbox isn't used as a mask, or if it is, it's configured at compile or initialization time and not updated later. 

   

Does anyone know how I can do this? Should I be setting the mask register somehow? Setting that register before I initalize the CAN componenet?

0 Likes
1 Reply
Anonymous
Not applicable

Can you please share your project so that I check the CAN settings?

0 Likes