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

ANTcontinuous scan mode will impact BLE advertising

I encountered an issue, please kindly refer to the attachment for the detail.

"''
The problem is:
a> Run demo on PCA10056 (BLE adv & ANT continuous scan).
b> ANT Dongle B broadcasts messages.
c> ANT Dongle A scans and sends acknowledged msg to B.
d> BLE advertising interval changes from 187ms to 1933ms automatically. (monitored by 'nrf Connect' App)
e> To recover the BLE advertising, the only way is resetting ANT stack by calling sd_ant_stack_reset().
f> ANT background scan mode wouldn't cause this problem.

The probability of this problem is 100%.
"''

So I guess maybe there is something wrong in the ANT & BLE co-existed Softdevice, such as S340 and S332.
Can someone help me? Thank you in advance.

 ANTcontinuous scan mode will impact BLE advertising.rar

Parents
  • Thanks, Kenneth.

    Follow the link you provided, I get a clue related to sd_ant_coex_config_set().

    Since I added the following simple code to my project, BLE advertising has been working well with ANT continuous scanning :

    err_code = sd_ant_coex_config_get(ANT_SCAN_CHANNEL_NUMBER, &ant_coex_config, NULL);
    APP_ERROR_CHECK(err_code);
    ant_coex_config.pucBuffer[0] = 0; //disable all configuration
    err_code = sd_ant_coex_config_set(ANT_SCAN_CHANNEL_NUMBER, &ant_coex_config, NULL);
    APP_ERROR_CHECK(err_code);

    But exactly, I cannot understand those parameters clearly related to ANT_BUFFER_PTR in sd_ant_coex_config_set():

    /** @brief This function sets ANT radio coexistence behaviour. Supported only if ANT is sharing radio HW concurrently with another wireless protocol.
    * Configuration structure is as follows:
    * Byte0 = Configuration enable bitfield
    * bit0 - enable/disable tx/rx channel keep alive config (Byte4/5 & Byte6/7)
    * bit1 - enable/disable tx/rx channel fixed interval priority config (Byte1)
    * bit2 - enable/disable transfer keep alive config (Byte2)
    * bit3 - enable/disable search channel fixed interval priority config (Byte3)
    * else - reserved
    * Byte1 = tx/rx channel fixed interval priority configuration
    * Byte2 = transfer keep alive configuration
    * Byte3 = search channel fixed interval priority configuration
    * Byte4(LSB)/Byte5(MSB) = tx channel keep alive configuration
    * Byte6(LSB)/Byte7(MSB) = rx channel keep alive configuration
    * Byte8 = ANT counts/16 spent in high priority mode during search scan.
    * Byte9 = ANT counts/16 spent in low priority mode during search scan.
    *
    * Advanced configuration structure is as follows:
    * Byte0 = Configuration enable bitfield
    * bit0 - enable/disable priority override config (Byte1)
    * bit1-7 - reserved
    * Byte1 = ANT priority override. 0 = low, 1 = normal(default), 2 = high, 3 = critical
    * Byte2 = Reserved
    * Byte3 = Reserved
    * Byte4 = Reserved
    * Byte5 = Reserved
    * Byte6 = Reserved
    * Byte7 = Reserved
    */

    So I'll appreciate very much if you can give more guide.

    Thanks & Best Regards.

Reply
  • Thanks, Kenneth.

    Follow the link you provided, I get a clue related to sd_ant_coex_config_set().

    Since I added the following simple code to my project, BLE advertising has been working well with ANT continuous scanning :

    err_code = sd_ant_coex_config_get(ANT_SCAN_CHANNEL_NUMBER, &ant_coex_config, NULL);
    APP_ERROR_CHECK(err_code);
    ant_coex_config.pucBuffer[0] = 0; //disable all configuration
    err_code = sd_ant_coex_config_set(ANT_SCAN_CHANNEL_NUMBER, &ant_coex_config, NULL);
    APP_ERROR_CHECK(err_code);

    But exactly, I cannot understand those parameters clearly related to ANT_BUFFER_PTR in sd_ant_coex_config_set():

    /** @brief This function sets ANT radio coexistence behaviour. Supported only if ANT is sharing radio HW concurrently with another wireless protocol.
    * Configuration structure is as follows:
    * Byte0 = Configuration enable bitfield
    * bit0 - enable/disable tx/rx channel keep alive config (Byte4/5 & Byte6/7)
    * bit1 - enable/disable tx/rx channel fixed interval priority config (Byte1)
    * bit2 - enable/disable transfer keep alive config (Byte2)
    * bit3 - enable/disable search channel fixed interval priority config (Byte3)
    * else - reserved
    * Byte1 = tx/rx channel fixed interval priority configuration
    * Byte2 = transfer keep alive configuration
    * Byte3 = search channel fixed interval priority configuration
    * Byte4(LSB)/Byte5(MSB) = tx channel keep alive configuration
    * Byte6(LSB)/Byte7(MSB) = rx channel keep alive configuration
    * Byte8 = ANT counts/16 spent in high priority mode during search scan.
    * Byte9 = ANT counts/16 spent in low priority mode during search scan.
    *
    * Advanced configuration structure is as follows:
    * Byte0 = Configuration enable bitfield
    * bit0 - enable/disable priority override config (Byte1)
    * bit1-7 - reserved
    * Byte1 = ANT priority override. 0 = low, 1 = normal(default), 2 = high, 3 = critical
    * Byte2 = Reserved
    * Byte3 = Reserved
    * Byte4 = Reserved
    * Byte5 = Reserved
    * Byte6 = Reserved
    * Byte7 = Reserved
    */

    So I'll appreciate very much if you can give more guide.

    Thanks & Best Regards.

Children
Related