EasyDMA

nRF54LV10A Preliminary Datasheet

After configuring RESULT.PTR and RESULT.MAXCNT, SAADC resources are started by triggering the START task. SAADC uses EasyDMA to store results in a Result buffer in RAM.

The Result buffer is located at the address specified in the RESULT.PTR register. The RESULT.PTR register is double-buffered and can be updated and prepared for the next START task immediately after the STARTED event is generated. The size of the Result buffer (in bytes) is specified in the RESULT.MAXCNT register, and SAADC will generate an END event when the Result buffer is full, see SAADC. Results are stored in little-endian byte order in Data RAM. Every sample will be sign extended to 16 bits before stored in the Result buffer.

SAADC is stopped by triggering the STOP task. The STOP task will terminate an ongoing sampling. SAADC will generate a STOPPED event when it has stopped. If SAADC has already stopped when the STOP task is triggered, the STOPPED event is still generated.

Figure 2. SAADC
ADC

If the RESULT.PTR is not pointing to a RAM region accessible from the peripheral, an EasyDMA transfer may result in a HardFault, memory corruption, or both. See Memory for more information about the memory regions.

The EasyDMA will have finished accessing the RAM when the END or STOPPED event has been generated.

The RESULT.AMOUNT register can be read following an END event or a STOPPED event to see how many bytes have been transferred to the Result buffer in RAM from when the START task was triggered.

In scan mode, SAMPLE tasks can be triggered once the START task is triggered. The END event is generated when the number of samples transferred to memory reaches the value specified by RESULT.MAXCNT. After an END event, the START task needs to be triggered again before new samples can be taken. For more information about the scan mode, see Scan mode.

Note: Ensure the Result buffer can hold at least one result for each enabled channel by setting RESULT.MAXCNT ≥ 2 × (number of enabled channels). Each sample requires two bytes. Insufficient space leads to undefined behavior.