This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF8001 advertising issue

Hi,

We are currently developing a new product using nRF8001 IC and it is pretty much stable (not 100%) until now.

My algorithm is straight forward: When the MCU is in idle mode I issue a connect command to the nRF8001 so it can start advertising and It responds back with a response command event with success, I put the MCU to sleep (deep sleep) and only wake it up after I receive a low level in the "RDYN" pin.

The critical issue is that sometimes (seldom) the nRF8001 doesn't advertise at all, it is like its radio is turned off and, as you can imagine, my MCU stays sleeping forever.

I've separated two log snippets, one that the nRF8001 is actually advertising (after sending the response command event with success) and another that is not.

log 1 - nRF8001 is advertising after connect command

MCU wakes up
[16:56:26:926] C1 :01, 0B,
[16:56:26:927] E15 :0F, 85, 01, 37, 49, 8C, 6A, 78, 40, 27, 00, 00, 00, D0, 07, 05,
[16:56:26:927] 1 :01, 09, ed
[16:56:26:929] E17 :11, 88, FD, 66, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
[16:56:26:929] Evt Pipe Status
[16:56:26:930] E5 :05, 84, 0B, 00, FB, 02,
[16:56:26:930] E12 :0C, 84, 09, 00, 41, 00, 02, 03, 00, 00, 00, 00, 00,
[16:56:26:931] C11 :0B, 0D, 02, 41, 00, 02, 03, 00, 00, 00, 00, 00,
[16:56:26:931] E3 :03, 84, 0D, 00,
[16:56:27:001] E17 :11, 88, FD, 6E, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
[16:56:27:001] Evt Pipe Status
[16:56:27:001] C1 :01, 13,
[16:56:27:001] E3 :03, 84, 13, 00,
[16:56:31:295] E7 :07, 89, 27, 00, 00, 00, 14, 00,
[16:56:31:295] Evt link connection interval changed
[16:56:31:296] C8 :08, 0D, 0E, 27, 00, 00, 00, 14, 00,
[16:56:31:296] E3 :03, 84, 0D, 00,
[16:56:33:684] E3 :03, 86, 03, 08,
[16:56:33:684] Evt Disconnected/Advertising timed out
[16:56:33:685] C5 :05, 0F, 00, 00, 50, 00,
[16:56:33:685] E3 :03, 84, 0F, 00,
[16:56:33:686] Advertising started. Tap Connect on the Access Controller UART app
[16:56:34:052] SLEEP MODE.
[16:56:34:052] WWDT Disabled

log 2 - nRF8001 is NOT advertising after connect command

[16:56:42:954] C1 :01, 0B,
[16:56:42:955] E15 :0F, 85, 01, 37, 49, 8C, 6A, 78, 40, 27, 00, 00, 00, D0, 07, 05,
[16:56:42:955] 1 :01, 09, ed
[16:56:42:956] E17 :11, 88, FD, 66, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
[16:56:42:957] Evt Pipe Status
[16:56:42:957] E5 :05, 84, 0B, 00, FB, 02,
[16:56:42:958] E12 :0C, 84, 09, 00, 41, 00, 02, 03, 00, 00, 00, 00, 00,
[16:56:42:958] C11 :0B, 0D, 02, 41, 00, 02, 03, 00, 00, 00, 00, 00,
[16:56:42:958] E3 :03, 84, 0D, 00,
[16:56:42:997] E17 :11, 88, FD, 6E, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
[16:56:42:998] Evt Pipe Status
[16:56:42:998] C1 :01, 13,
[16:56:42:998] E3 :03, 84, 13, 00,
[16:56:46:555] E3 :03, 86, 03, 13,
[16:56:46:556] Evt Disconnected/Advertising timed out
[16:56:46:556] C5 :05, 0F, 00, 00, 50, 00,
[16:56:46:556] E3 :03, 84, 0F, 00,
[16:56:46:557] Advertising started. Tap Connect on the Access Controller UART app
[16:56:46:908] SLEEP MODE.
[16:56:46:910] WWDT Disabled

The difference between them are only a few commands/events changed by the ACI and nRF8001 (shown below for reference):
[16:56:31:295] E7 :07, 89, 27, 00, 00, 00, 14, 00,
[16:56:31:295] Evt link connection interval changed
[16:56:31:296] C8 :08, 0D, 0E, 27, 00, 00, 00, 14, 00,
[16:56:31:296] E3 :03, 84, 0D, 00,

Just a Connection interval event and a set local data command after that (with the respective response).

Apart from that the only thing different is the disconnection reason:

0x08 timeout for the first one 
0x13 - Remote User Terminated Connection for the second one

This is critical for us, do you guys have any clue about that or is nRF8001 just not reliable enough?

Best Regards,


Parents
  • The nRF8001 is reliable in what it is specified to do within the operating spec. This appears within what the nRF8001 is specified to do.

    1. Can you post an SPI trace in addition to see if the RDYN line is behaving as expected.

    2. I assume that you are not setting up the GATT table to be encrypted in the nRFgo studio settings file. Can you confirm this ?

    3. Can you provide the IC markings on the nRF8001 ?

    The only known issue is, after a wakeup of the nRF8001, the nRF8001 needs to wait ~300ms (worst case) to send the connect command, otherwise the start of advertising can get delayed. However you do not seem to be having the same issue.

    1. Can you test by adding a similar delay (~300 ms) from the previous command/event before the "ACI Connect" command is sent

    2. Do you have a sniffer or similar infrastructure to verify that the nRF8001 is indeed advertising or not.

Reply
  • The nRF8001 is reliable in what it is specified to do within the operating spec. This appears within what the nRF8001 is specified to do.

    1. Can you post an SPI trace in addition to see if the RDYN line is behaving as expected.

    2. I assume that you are not setting up the GATT table to be encrypted in the nRFgo studio settings file. Can you confirm this ?

    3. Can you provide the IC markings on the nRF8001 ?

    The only known issue is, after a wakeup of the nRF8001, the nRF8001 needs to wait ~300ms (worst case) to send the connect command, otherwise the start of advertising can get delayed. However you do not seem to be having the same issue.

    1. Can you test by adding a similar delay (~300 ms) from the previous command/event before the "ACI Connect" command is sent

    2. Do you have a sniffer or similar infrastructure to verify that the nRF8001 is indeed advertising or not.

Children
No Data
Related