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

Offset in SAADC samples with Easy DMA and BLE

I have a nrf52 application that samples four saadc channels at 1kHZ. That is: Map four pins to ADC input and let Easy DMA take care of the sampling so that the data is processed ten times a second (100 * 4 samples). This works pretty well, except...

When I enable the BLE connection, the data is shifted in the buffer. Without BLE enabled, the data layout in the memory is as following {{1,2,3,4}, {1,2,3,4}, ...}. But, when BLE is activated, the memory layout is: {{4,1,2,3}, {4,1,2,3}, ...} I really don't know what causes the difference. I have no way to check if the data is shifted, or did the samples just swap places. I wonder if the softdevice blocks some of the samples that would cause the problem.

The saadc implementation is double buffered, like in "saadc_sample_from_two_pins - scan mode" here

The BLE implementation is based on ble_app_hrs_freertos in SDK 12.1.0. That is also the SDK version I'm using.

Any help would be appreciated.

Parents
  • Hello I have not seen a resolution to this situation? I have a case where I can get this to occur every single time...

    1. Clear Bonding info -> Reset nRF52
    2. Connect using Master Control Panel ADC is running and providing samples in correct order... p_event->data.done.p_buffer[0] = My Signal Voltage p_event->data.done.p_buffer[1] = My battery voltage
    3. Bond to device
    4. Discover Services
    5. Enable Services -> BANG the samples get swapped in the ADC.... p_event->data.done.p_buffer[0] = My battery voltage p_event->data.done.p_buffer[1] = My signal voltage

    We are trying to release this product next week and this is a major killer...I will be sending my project into a support case and it will be configured to work on the nRF52 DK...

Reply
  • Hello I have not seen a resolution to this situation? I have a case where I can get this to occur every single time...

    1. Clear Bonding info -> Reset nRF52
    2. Connect using Master Control Panel ADC is running and providing samples in correct order... p_event->data.done.p_buffer[0] = My Signal Voltage p_event->data.done.p_buffer[1] = My battery voltage
    3. Bond to device
    4. Discover Services
    5. Enable Services -> BANG the samples get swapped in the ADC.... p_event->data.done.p_buffer[0] = My battery voltage p_event->data.done.p_buffer[1] = My signal voltage

    We are trying to release this product next week and this is a major killer...I will be sending my project into a support case and it will be configured to work on the nRF52 DK...

Children
No Data
Related