The value written into the shadow register will be loaded into the active register at
the start of a transfer. On a wrap condition, the active register will be incremented
by the signed value in the appropriate SRC/DST_WRAP_STEP register prior to
being loaded into the active SRC/DST_ADDR register.
For each channel, the transfer process can be controlled with the following size values:
Source and
Destination
Burst Size
(BURST_SIZE):
This specifies the number of words to be transferred in a burst.
This value is loaded into the BURST_COUNT register at the beginning of each burst.
The BURST_COUNT decrements each word that is transferred and when it reaches a
zero value, the burst is complete, indicating that the next channel can be serviced. The
behavior of the current channel is defined by the ONE_SHOT bit in the MODE register. The
maximum size of the burst is dictated by the type of peripheral. For the ADC, the burst
size could be all 16 registers (if all 16 registers are used). For a McBSP peripheral, the
burst size is limited to 1 since there is no FIFO and the receive or transmit data register
must be loaded or copied every word transferred. For RAM the burst size can be up to the
maximum allowed by the BURST_SIZE register, which is 32.
Source and
Destination
Transfer Size
(TRANSFER_SIZE):
This specifies the number of bursts to be transferred before per CPU interrupt (if
enabled).
Whether this interrupt is generated at the beginning or the end of the transfer
is defined in the CHINTMODE bit in the MODE register. Whether the channel
remains enabled or not after the transfer is completed is defined by the
CONTINUOUS bit in the MODE register. The TRANSFER_SIZE register is loaded
into the TRANSFER_COUNT register at the beginning of each transfer. The
TRANSFER_COUNT register keeps track of how many bursts of data the channel
has transferred and when it reaches zero, the DMA transfer is complete.
Source/Destination
Wrap Size (SRC/
DST_WRAP_SIZE)
This specifies the number of bursts to be transferred before the current address pointer
wraps around to the beginning.
This feature is used to implement a circular addressing type function. This value is
loaded into the appropriate SRC/DST_WRAP_COUNT register at the beginning of
each transfer. The SRC/DST_WRAP_COUNT registers keep track of how many bursts
of data the channel has transferred and when they reaches zero, the wrap procedure
is performed on the appropriate source or destination address pointer. A separate size
and count register is allocated for source and destination pointers. To
disable
the wrap
function, assign the value of these registers to be larger than the TRANSFER_SIZE.
Note
The value written to the SIZE registers is one less than the intended size. So, to transfer three 16-bit
words, the value 2 should be placed in the SIZE register.
Regardless of the state of the DATASIZE bit, the value specified in the SIZE registers are for 16-bit
addresses. So, to transfer three 32-bit words, the value 5 should be placed in the SIZE register.
For each source/destination pointer, the address changes can be controlled with the following step values:
Source/Destination
Burst Step (SRC/
DST_BURST_STEP)
Within each burst transfer, the address source and destination step sizes are
specified by these registers.
This value is a signed 2's compliment number so that the address pointer can
be incremented or decremented as required. If no increment is desired, such as
Direct Memory Access (DMA) Module
736
TMS320x2806x Microcontrollers
SPRUH18I – JANUARY 2011 – REVISED JUNE 2022
Copyright © 2022 Texas Instruments Incorporated
Содержание TMS320 2806 Series
Страница 2: ......