DMA transfers the segment value for each character present in the String
buffer to the CMDATA register upon the DMA peripheral trigger “Automated Character
Mapping Data Ready (ACMDRDY)” occurs.
- For the ACM character mapping
scrolling mode DMAC is configured to trigger a data transfer to the destination
address configured when Automated Character Mapping Data Ready (ACMDRDY) occurs
(peripheral trigger source)
- The trigger actions configured to
generate a request for a beat transfer
- The destination address configured
here is CMDATA register address and the source is DMA transfer buffer
(dma_source_buf [ ])
- DMA source address configured as
increments for each beat transfer and the destination address is static in this
case
- Beat size defines the data transfer
size for the each beat (WORD, HWORD, BYTE). In this case it is configured as WORD
(32bit).
- Step size defines the source and
destination address increment step. In this case the destination address is static
and the source address is configured to increment with the step size of beat size *
1.
- Block transfer count defines the
number of beats to be transferred for the complete scrolling string, and it is equal
to the ACM scrolling string length if the beat size configured as same as the size
of the source buffer member
- Block action defines the action made
by the DMA after block transfer. In this case it is configured as sets transfer
complete interrupt flag after block transfer and channel in normal operation.
- DMA next descriptor defines that the
transaction consist of either a single block transfer or several block transfers.
When a transaction consists of several block transfers it is called linked
descriptors. The Next descriptor configured to 0 if single transaction
required.
- Create the call-back function,
register the DMA call back, and enable the call-back
- DMA is configured to transfer the
same string multiple times to destination address using DMA linked descriptor.
However, we have used this transfer complete flag to exit from this continuous
transfer by the help of implementing a break logic to exit from this ACM scrolling
mode and DMA transaction using a variable dma_break.
Note:
If the application requires the transfer complete, interrupt call back
is required.