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
  • I'm following this thread as I too encounter this behavior. I'm NOT using FreeRTOS, SDK 12.1.0, three channels in scan mode at 8 KSPS, with double-buffering. The buffer sizes are a multiple of 6 so there shouldn't be any boundary issues. For me, the issue of channel order switching occurs during normal operation. This means that the system is working and I witness the switch of the channels in real time.

Reply
  • I'm following this thread as I too encounter this behavior. I'm NOT using FreeRTOS, SDK 12.1.0, three channels in scan mode at 8 KSPS, with double-buffering. The buffer sizes are a multiple of 6 so there shouldn't be any boundary issues. For me, the issue of channel order switching occurs during normal operation. This means that the system is working and I witness the switch of the channels in real time.

Children
No Data
Related