24.8.5.2.2 Workflow

  1. Start the loop for transfer.
    for(i=0;i<TRANSFER_COUNTER;i++) {
        transfer_is_done = false;
    
        dma_start_transfer_job(&example_resource);
    
        while (!transfer_is_done) {
            /* Wait for transfer done */
        }
    
        example_descriptor.SRCADDR.reg += TRANSFER_SIZE;
        example_descriptor.DSTADDR.reg += TRANSFER_SIZE;
    }
    
  2. Set the transfer done flag as false.
    transfer_is_done = false;
    
  3. Start the transfer job.
    dma_start_transfer_job(&example_resource);
    
  4. Wait for transfer done.
    while (!transfer_is_done) {
        /* Wait for transfer done */
    }
    
  5. Update the source and destination address for next transfer.
    example_descriptor.SRCADDR.reg += TRANSFER_SIZE;
    example_descriptor.DSTADDR.reg += TRANSFER_SIZE;
    
  6. Enter endless loop.
    while(1);