EasyDMA array list

nRF5340 Product Specification

EasyDMA is able to operate in Array List mode.

The Array List mode is implemented in channels where the LIST register is available.

The array list does not provide a mechanism to explicitly specify where the next item in the list is located. Instead, it assumes that the list is organized as a linear array where items are located one after the other in RAM.

The EasyDMA Array List can be implemented by using the data structure ArrayList_type as illustrated in the code example below using a READER EasyDMA channel as an example:


  
  #define BUFFER_SIZE  4
  
  typedef struct ArrayList
  {
    uint8_t buffer[BUFFER_SIZE];
  } ArrayList_type;
  
  ArrayList_type ReaderList[3]  __at__ 0x20000000;

  MYPERIPHERAL->READER.MAXCNT = BUFFER_SIZE;
  MYPERIPHERAL->READER.PTR = &ReaderList;
  MYPERIPHERAL->READER.LIST = MYPERIPHERAL_READER_LIST_ArrayList;
  

The data structure only includes a buffer with size equal to the size of READER.MAXCNT register. EasyDMA uses the READER.MAXCNT register to determine when the buffer is full.

Figure 3. EasyDMA array list

EasyDMA array list