MCUXpresso_MIMXRT1021xxxxx/boards/evkmimxrt1020/driver_examples/edma/wrap_transfer
2022-08-23 23:00:33 +08:00
..
armgcc Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
board.c Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
board.h Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
clock_config.c Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
clock_config.h Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
dcd.c Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
dcd.h Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
edma_wrap_transfer_v3_10.xml Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
edma_wrap_transfer.c Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
evkmimxrt1020_sdram_init.jlinkscript Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
pin_mux.c Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
pin_mux.h Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00
readme.txt Initial SDK v2.12.0 2022-08-23 23:00:33 +08:00

Overview
========
The EDMA wrap transfer example is a simple demonstration program that uses the SDK software.
It excuates wrap transfer from source buffer to destination buffer using the SDK EDMA drivers.
The purpose of this example is to show how to use the wrap feature of EDMA and to provide a simple example for
debugging and further development.
The example demostrate the wrap transfer by the feature of EDMA:
1. edma modulo feature
                                       minor loop finished
                +-------------------------------------------------+
                v                                                 |
+-------+     +----------------------+  major loop not finish   +----------------------------------------+  source address range not hit modulo range   +---------------------------+
| start | --> |      major loop      | -----------------------> |               minor loop               | -------------------------------------------> | source address increament |
+-------+     +----------------------+                          +----------------------------------------+                                              +---------------------------+
                |                                                 |
                | major loop finished                             | source address range hit modulo range
                v                                                 v
              +----------------------+                          +----------------------------------------+
              |  example complete    |                          |          source address wrap           |
              +----------------------+                          +----------------------------------------+

2. edma major loop offet feature.

              +----------------------+                          +--------------------------------------------------------------+  trigger again   +------------------+
              |  transfer complete   | -----------------------> | source/destination address wrap(SLAST/DLAST) to origin value | ---------------> | example complete |
              +----------------------+                          +--------------------------------------------------------------+                  +------------------+
                ^
                | major loop finished
                |
+-------+     +----------------------+  major loop not finish   +--------------------------------------------------------------+
| start | --> |      major loop      | -----------------------> |                          minor loop                          |
+-------+     +----------------------+                          +--------------------------------------------------------------+
                ^                      minor loop finished        |
                +-------------------------------------------------+


Please reference user manual for the detail of the feature.

Toolchain supported
===================
- IAR embedded Workbench  9.30.1
- Keil MDK  5.37
- GCC ARM Embedded  10.3.1
- MCUXpresso  11.6.0

Hardware requirements
=====================
- Mini/micro USB cable
- EVK-MIMXRT1020 board
- Personal Computer

Board settings
==============
No special settings are required.

Prepare the Demo
================
1.  Connect a USB cable between the host PC and the OpenSDA USB port on the target board. 
2.  Open a serial terminal with the following settings:
    - 115200 baud rate
    - 8 data bits
    - No parity
    - One stop bit
    - No flow control
3.  Download the program to the target board.
4.  Either press the reset button on your board or launch the debugger in your IDE to begin running the demo.

Running the demo
================
When the example runs successfully, you can see the similar information from the terminal as below.
~~~~~~~~~~~~~~~~~~~~~
edma modulo wrap start

0	0	0	0	0	0	0	0	

EDMA modulo wrap finished.

1	2	3	4	1	2	3	4	

edma major loop wrap start

0	0	0	0	0	0	0	0	

edma major loop wrap finished

1	2	3	4	5	6	7	8	
~~~~~~~~~~~~~~~~~~~~~


Note:
To debug in qspiflash, following steps are needed:
1. Select the flash target and compile.
2. Set the SW8: 1 off 2 off 3 on 4 off, then power on the board and connect USB cable to J23.
3. Start debugging in IDE.
   - Keil: Click "Download (F8)" to program the image to qspiflash first then clicking "Start/Stop Debug Session (Ctrl+F5)" to start debugging.