Direct Memory Access (DMA)
C2000 Microcontroller Workshop - Direct Memory Access Controller 9 - 7
* Size registers are N-1
Data Binning Example Register Setup
BURST_SIZE*
TRANSFER_SIZE*
0x0004
5 words/burst
0x0002
3 bursts/transfer
SRC_ADDR_SHADOW
SRC_BURST_STEP
SRC_TRANSFER_STEP
0x00000B00
0x0001
DST_ADDR_SHADOW
DST_BURST_STEP
DST_TRANSFER_STEP
0x0003
0xFFF5
(-11)
0xFFFC
(-4)
CH4
CH3
CH2
CH1
CH0
0x0B00
0x0B01
0x0B02
ADC Results
L7 SARAM
0xF000
0xF003
0xF006
0xF009
0xF00C
CH0
CH0
CH0
CH1
CH1
CH1
CH2
CH2
CH2
CH3
CH3
CH3
CH4
CH4
CH4
0xF001
0xF004
0xF007
0xF00A
0xF00D
0xF002
0xF005
0xF008
0xF00B
0xF00E
0x0B03
0x0B04
Objective: Bin 3 samples of 5 ADC channels, then interrupt the CPU
SOC0 – SOC4 configured to CH0 – CH4, respectively,
ADC configured to re-trigger (continuous conversion)
ADC Registers:
DMA Registers:
0x0000F000
starting address**
** Typically use a relocatable symbol in your code, not a hard value
Ping-Pong Buffer Example
ADC Result Register
50 word
‘Ping’ buffer
50 word
‘Pong’ buffer
L5 DPSARAM
0x0B00
DMA
Interrupt
DMA
Interrupt
0xC140
Objective: Buffer ADC ch. 0 ping-pong style, 50 samples per buffer
ADCRESULT0
SOC0 configured to ADCINA0
with 1 conversion per trigger