For the "BASE0/1" in the doc of infocenter: does it mean the address before "addr_conv", or after?

Hi,

I'm using SDK v14.2.0.

For the workaround of [107] RADIO: Immediate address match for access addresses containing MSBs 0x00

I'm trying to avoid the addresses in the list, then I found there is a function "addr_conv" when Nordic set my 4-byte address (like: 0x11,0x22,0x33,0x44) to registers "BASE0/1", and it converts the address to like: 0x8844CC22.

So my question are:

  • When this workaround saying that "pls avoid BASE0=0x0000XXXX", this "0x0000XXXX" is the one before "addr_conv", or after?
  • My scenario is: BASE0/1 are set by app, so I need provide these addresses to our app to avoid the "NRF_ERROR_INVALID_PARAM" of "nrf_esb_set_base_address_0/1", if these addresses are the ones after "addr_conv", then I have to also provide the function "addr_conv", right?

Thanks!

  • Hello,

    You are pointing to an errata that applied to the first revision of the nRF52832, this was fixed on the second revision of the nRF52832:
    https://infocenter.nordicsemi.com/pdf/in_105_v1.0.pdf

    The change took place in 2017, are you sitting on very old chips since you now want to implement this workaround?

    Best regards,
    Kenneth

  • Hi Kenneth,

    • For the revision: I have to confirm it with our hardware engineer later.
    • We've been using nRF51 since 2016 and then updated to nRF52, possible that we have deployed many revison 1 chips. If we have to maintain these old ones, then I still need to understand whether these addresses is before function "addr_conv" or after?

    Thanks!

  • Hi,

    The easiest is to open for instance the \examples\proprietary_rf\esb_ptx example and look at how they have implemented:

    nrf_esb_set_base_address_0() and nrf_esb_set_base_address_1().

    Best regards,
    Kenneth

  • Hi Kenneth,

    Thanks, actually my question is just from what you suggested to look at: "nrf_esb_set_base_address_0/1" and its callee "addr_conv".

    Let me adjust my question to be:

    • What input parameter "p_addr" should I avoid when calling "nrf_esb_set_base_address_0/1", to avoid the "NRF_ERROR_INVALID_PARAM" error, when I'm using 52832 revision 1 and SDK V14?
    • Are they just the ones in the workaround of erratas, like "BASE0=0x0000XXXX" ? Or I need to calculate the forbidden addresses by myself with these "0x0000XXXX" and a "opposite operation" of "addr_conv"?

    Thanks!

  • In this specific case we have provided a descriptive errata explaining the issue and which addresses to avoid, we have also provided source code for the ESB protocol that show how the code can test if the address is affected by the issue, and if it is affected the api will return NRF_ERROR_INVALID_PARAM. I think this issue is well documented, along with code that can test for this issue.

    Edit: The addr_conv() does not change the address, it's only used internallly in nrf_esb_set_base_address_0/1 to change the byte order of the address to be able to test if the address is affected by the issue.

    Kenneth

Related