MSPM0C110X Driver Library  2.05.01.00
dl_dma.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 /*!****************************************************************************
33  * @file dl_dma.h
34  * @brief Direct Memory Access (DMA) Driver Library
35  * @defgroup DMA Direct Memory Access (DMA)
36  *
37  * @anchor ti_dl_dl_m0p_dma_Overview
38  * # Overview
39  *
40  * The Direct Memory Access (DMA) Library allows full configuration of
41  * the MSPM0 DMA module.
42  * The DMA controller transfers data from one address to another, without CPU
43  * intervention, across the entire address range.
44  * DMA controllers have multiple channels that can be configured independently
45  *
46  ******************************************************************************
47  */
51 #ifndef ti_dl_dl_m0p_dma__include
52 #define ti_dl_dl_m0p_dma__include
53 
54 #include <stdbool.h>
55 #include <stdint.h>
56 
57 #include <ti/devices/msp/msp.h>
58 #include <ti/driverlib/dl_common.h>
59 
60 #ifdef __cplusplus
61 extern "C" {
62 #endif
63 
64 #if (DMA_SYS_N_DMA_FULL_CHANNEL > 0)
65 
68 #define DEVICE_HAS_DMA_FULL_CHANNEL
69 #endif
70 
71 #ifdef DMA_SYS_MMR_LLONG
72 
75 #define DEVICE_HAS_LLONG_ACCESS
76 
79 #define DEVICE_HAS_AUTO_AND_GATHER
80 #endif
81 
82 /* clang-format off */
83 
90 #define DL_DMA_INTERRUPT_CHANNEL0 (DMA_CPU_INT_IMASK_DMACH0_SET)
91 
95 #define DL_DMA_INTERRUPT_CHANNEL1 (DMA_CPU_INT_IMASK_DMACH1_SET)
96 
100 #define DL_DMA_INTERRUPT_CHANNEL2 (DMA_CPU_INT_IMASK_DMACH2_SET)
101 
105 #define DL_DMA_INTERRUPT_CHANNEL3 (DMA_CPU_INT_IMASK_DMACH3_SET)
106 
110 #define DL_DMA_INTERRUPT_CHANNEL4 (DMA_CPU_INT_IMASK_DMACH4_SET)
111 
115 #define DL_DMA_INTERRUPT_CHANNEL5 (DMA_CPU_INT_IMASK_DMACH5_SET)
116 
120 #define DL_DMA_INTERRUPT_CHANNEL6 (DMA_CPU_INT_IMASK_DMACH6_SET)
121 
125 #define DL_DMA_INTERRUPT_CHANNEL7 (DMA_CPU_INT_IMASK_DMACH7_SET)
126 
130 #define DL_DMA_INTERRUPT_CHANNEL8 (DMA_CPU_INT_IMASK_DMACH8_SET)
131 
135 #define DL_DMA_INTERRUPT_CHANNEL9 (DMA_CPU_INT_IMASK_DMACH9_SET)
136 
140 #define DL_DMA_INTERRUPT_CHANNEL10 (DMA_CPU_INT_IMASK_DMACH10_SET)
141 
145 #define DL_DMA_INTERRUPT_CHANNEL12 (DMA_CPU_INT_IMASK_DMACH12_SET)
146 
150 #define DL_DMA_INTERRUPT_CHANNEL13 (DMA_CPU_INT_IMASK_DMACH13_SET)
151 
155 #define DL_DMA_INTERRUPT_CHANNEL14 (DMA_CPU_INT_IMASK_DMACH14_SET)
156 
160 #define DL_DMA_INTERRUPT_CHANNEL15 (DMA_CPU_INT_IMASK_DMACH15_SET)
161 
162 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL
163 
167 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL0 (DMA_CPU_INT_IMASK_PREIRQCH0_SET)
168 
173 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL1 (DMA_CPU_INT_IMASK_PREIRQCH1_SET)
174 
179 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL2 (DMA_CPU_INT_IMASK_PREIRQCH2_SET)
180 
185 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL3 (DMA_CPU_INT_IMASK_PREIRQCH3_SET)
186 
191 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL4 (DMA_CPU_INT_IMASK_PREIRQCH4_SET)
192 
197 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL5 (DMA_CPU_INT_IMASK_PREIRQCH5_SET)
198 
203 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL6 (DMA_CPU_INT_IMASK_PREIRQCH6_SET)
204 
209 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL7 (DMA_CPU_INT_IMASK_PREIRQCH7_SET)
210 #endif /* DEVICE_HAS_DMA_FULL_CHANNEL */
211 
215 #define DL_DMA_INTERRUPT_ADDR_ERROR (DMA_CPU_INT_IMASK_ADDRERR_SET)
216 
219 #define DL_DMA_INTERRUPT_DATA_ERROR (DMA_CPU_INT_IMASK_DATAERR_SET)
220 
229 #define DL_DMA_EVENT_CHANNEL0 (DMA_GEN_EVENT_IMASK_DMACH0_SET)
230 
234 #define DL_DMA_EVENT_CHANNEL1 (DMA_GEN_EVENT_IMASK_DMACH1_SET)
235 
239 #define DL_DMA_EVENT_CHANNEL2 (DMA_GEN_EVENT_IMASK_DMACH2_SET)
240 
244 #define DL_DMA_EVENT_CHANNEL3 (DMA_GEN_EVENT_IMASK_DMACH3_SET)
245 
249 #define DL_DMA_EVENT_CHANNEL4 (DMA_GEN_EVENT_IMASK_DMACH4_SET)
250 
254 #define DL_DMA_EVENT_CHANNEL5 (DMA_GEN_EVENT_IMASK_DMACH5_SET)
255 
259 #define DL_DMA_EVENT_CHANNEL6 (DMA_GEN_EVENT_IMASK_DMACH6_SET)
260 
264 #define DL_DMA_EVENT_CHANNEL7 (DMA_GEN_EVENT_IMASK_DMACH7_SET)
265 
269 #define DL_DMA_EVENT_CHANNEL8 (DMA_GEN_EVENT_IMASK_DMACH8_SET)
270 
274 #define DL_DMA_EVENT_CHANNEL9 (DMA_GEN_EVENT_IMASK_DMACH9_SET)
275 
279 #define DL_DMA_EVENT_CHANNEL10 (DMA_GEN_EVENT_IMASK_DMACH10_SET)
280 
284 #define DL_DMA_EVENT_CHANNEL12 (DMA_GEN_EVENT_IMASK_DMACH12_SET)
285 
289 #define DL_DMA_EVENT_CHANNEL13 (DMA_GEN_EVENT_IMASK_DMACH13_SET)
290 
294 #define DL_DMA_EVENT_CHANNEL14 (DMA_GEN_EVENT_IMASK_DMACH14_SET)
295 
299 #define DL_DMA_EVENT_CHANNEL15 (DMA_GEN_EVENT_IMASK_DMACH15_SET)
300 
301 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL
302 
306 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL0 (DMA_GEN_EVENT_IMASK_PREIRQCH0_SET)
307 
312 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL1 (DMA_GEN_EVENT_IMASK_PREIRQCH1_SET)
313 
318 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL2 (DMA_GEN_EVENT_IMASK_PREIRQCH2_SET)
319 
324 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL3 (DMA_GEN_EVENT_IMASK_PREIRQCH3_SET)
325 
330 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL4 (DMA_GEN_EVENT_IMASK_PREIRQCH4_SET)
331 
336 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL5 (DMA_GEN_EVENT_IMASK_PREIRQCH5_SET)
337 
342 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL6 (DMA_GEN_EVENT_IMASK_PREIRQCH6_SET)
343 
348 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL7 (DMA_GEN_EVENT_IMASK_PREIRQCH7_SET)
349 #endif /* DEVICE_HAS_DMA_FULL_CHANNEL */
350 
354 #define DL_DMA_EVENT_ADDR_ERROR (DMA_GEN_EVENT_IMASK_ADDRERR_SET)
355 
358 #define DL_DMA_EVENT_DATA_ERROR (DMA_GEN_EVENT_IMASK_DATAERR_SET)
359 
363 typedef enum {
365  DL_DMA_SINGLE_TRANSFER_MODE = DMA_DMACTL_DMATM_SINGLE,
367  DL_DMA_SINGLE_BLOCK_TRANSFER_MODE = DMA_DMACTL_DMATM_BLOCK,
368 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL
369 
371  DL_DMA_FULL_CH_REPEAT_SINGLE_TRANSFER_MODE = DMA_DMACTL_DMATM_RPTSNGL,
374  DL_DMA_FULL_CH_REPEAT_BLOCK_TRANSFER_MODE = DMA_DMACTL_DMATM_RPTBLCK,
375 #endif /* DEVICE_HAS_DMA_FULL_CHANNEL */
377 
379 typedef enum {
381  DL_DMA_NORMAL_MODE = DMA_DMACTL_DMAEM_NORMAL,
382 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL
383 #ifdef DEVICE_HAS_AUTO_AND_GATHER
384 
387  DL_DMA_FULL_CH_GATHER_MODE = DMA_DMACTL_DMAEM_GATHERMODE,
388 #endif /* DEVICE_HAS_AUTO_AND_GATHER */
389 
391  DL_DMA_FULL_CH_FILL_MODE = DMA_DMACTL_DMAEM_FILLMODE,
394  DL_DMA_FULL_CH_TABLE_MODE = DMA_DMACTL_DMAEM_TABLEMODE,
395 #endif /* DEVICE_HAS_DMA_FULL_CHANNEL */
397 
399 typedef enum {
401  DL_DMA_ADDR_UNCHANGED = DMA_DMACTL_DMASRCINCR_UNCHANGED,
403  DL_DMA_ADDR_DECREMENT = DMA_DMACTL_DMASRCINCR_DECREMENT,
405  DL_DMA_ADDR_INCREMENT = DMA_DMACTL_DMASRCINCR_INCREMENT,
408  DL_DMA_ADDR_STRIDE_2 = DMA_DMACTL_DMASRCINCR_STRIDE_2,
411  DL_DMA_ADDR_STRIDE_3 = DMA_DMACTL_DMASRCINCR_STRIDE_3,
414  DL_DMA_ADDR_STRIDE_4 = DMA_DMACTL_DMASRCINCR_STRIDE_4,
417  DL_DMA_ADDR_STRIDE_5 = DMA_DMACTL_DMASRCINCR_STRIDE_5,
420  DL_DMA_ADDR_STRIDE_6 = DMA_DMACTL_DMASRCINCR_STRIDE_6,
423  DL_DMA_ADDR_STRIDE_7 = DMA_DMACTL_DMASRCINCR_STRIDE_7,
426  DL_DMA_ADDR_STRIDE_8 = DMA_DMACTL_DMASRCINCR_STRIDE_8,
429  DL_DMA_ADDR_STRIDE_9 = DMA_DMACTL_DMASRCINCR_STRIDE_9,
431 
433 typedef enum {
435  DL_DMA_EARLY_INTERRUPT_THRESHOLD_DISABLED = DMA_DMACTL_DMAPREIRQ_PREIRQ_DISABLE,
437  DL_DMA_EARLY_INTERRUPT_THRESHOLD_1 = DMA_DMACTL_DMAPREIRQ_PREIRQ_1,
439  DL_DMA_EARLY_INTERRUPT_THRESHOLD_2 = DMA_DMACTL_DMAPREIRQ_PREIRQ_2,
441  DL_DMA_EARLY_INTERRUPT_THRESHOLD_4 = DMA_DMACTL_DMAPREIRQ_PREIRQ_4,
443  DL_DMA_EARLY_INTERRUPT_THRESHOLD_8 = DMA_DMACTL_DMAPREIRQ_PREIRQ_8,
445  DL_DMA_EARLY_INTERRUPT_THRESHOLD_32 = DMA_DMACTL_DMAPREIRQ_PREIRQ_32,
447  DL_DMA_EARLY_INTERRUPT_THRESHOLD_64 = DMA_DMACTL_DMAPREIRQ_PREIRQ_64,
450  DL_DMA_EARLY_INTERRUPT_THRESHOLD_HALF = DMA_DMACTL_DMAPREIRQ_PREIRQ_HALF,
452 
454 typedef enum {
457  DL_DMA_BURST_SIZE_INFINITY = DMA_DMAPRIO_BURSTSZ_INFINITI,
459  DL_DMA_BURST_SIZE_8 = DMA_DMAPRIO_BURSTSZ_BURST_8,
461  DL_DMA_BURST_SIZE_16 = DMA_DMAPRIO_BURSTSZ_BUSRT_16,
463  DL_DMA_BURST_SIZE_32 = DMA_DMAPRIO_BURSTSZ_BURST_32,
465 
467 typedef enum {
469  DL_DMA_TRIGGER_TYPE_INTERNAL = DMA_DMATCTL_DMATINT_INTERNAL,
471  DL_DMA_TRIGGER_TYPE_EXTERNAL = DMA_DMATCTL_DMATINT_EXTERNAL,
473 
475 typedef enum {
477  DL_DMA_WIDTH_BYTE = DMA_DMACTL_DMASRCWDTH_BYTE,
479  DL_DMA_WIDTH_HALF_WORD = DMA_DMACTL_DMASRCWDTH_HALF,
481  DL_DMA_WIDTH_WORD = DMA_DMACTL_DMASRCWDTH_WORD,
483  DL_DMA_WIDTH_LONG = DMA_DMACTL_DMASRCWDTH_LONG,
484  #ifdef DEVICE_HAS_LLONG_ACCESS
485 
486  DL_DMA_WIDTH_LONG_LONG = DMA_DMACTL_DMASRCWDTH_LONGLONG,
487  #endif /* DEVICE_HAS_LLONG_ACCESS*/
488 } DL_DMA_WIDTH;
489 
491 typedef enum {
493  DL_DMA_EVENT_IIDX_NO_INTR = DMA_GEN_EVENT_IIDX_STAT_NO_INTR,
495  DL_DMA_EVENT_IIDX_DMACH0 = DMA_GEN_EVENT_IIDX_STAT_DMACH0,
497  DL_DMA_EVENT_IIDX_DMACH1 = DMA_GEN_EVENT_IIDX_STAT_DMACH1,
499  DL_DMA_EVENT_IIDX_DMACH2 = DMA_GEN_EVENT_IIDX_STAT_DMACH2,
501  DL_DMA_EVENT_IIDX_DMACH3 = DMA_GEN_EVENT_IIDX_STAT_DMACH3,
503  DL_DMA_EVENT_IIDX_DMACH4 = DMA_GEN_EVENT_IIDX_STAT_DMACH4,
505  DL_DMA_EVENT_IIDX_DMACH5 = DMA_GEN_EVENT_IIDX_STAT_DMACH5,
507  DL_DMA_EVENT_IIDX_DMACH6 = DMA_GEN_EVENT_IIDX_STAT_DMACH6,
509  DL_DMA_EVENT_IIDX_DMACH7 = DMA_GEN_EVENT_IIDX_STAT_DMACH7,
511  DL_DMA_EVENT_IIDX_DMACH8 = DMA_GEN_EVENT_IIDX_STAT_DMACH8,
513  DL_DMA_EVENT_IIDX_DMACH9 = DMA_GEN_EVENT_IIDX_STAT_DMACH9,
515  DL_DMA_EVENT_IIDX_DMACH10 = DMA_GEN_EVENT_IIDX_STAT_DMACH10,
517  DL_DMA_EVENT_IIDX_DMACH11 = DMA_GEN_EVENT_IIDX_STAT_DMACH11,
519  DL_DMA_EVENT_IIDX_DMACH12 = DMA_GEN_EVENT_IIDX_STAT_DMACH12,
521  DL_DMA_EVENT_IIDX_DMACH13 = DMA_GEN_EVENT_IIDX_STAT_DMACH13,
523  DL_DMA_EVENT_IIDX_DMACH14 = DMA_GEN_EVENT_IIDX_STAT_DMACH14,
525  DL_DMA_EVENT_IIDX_DMACH15 = DMA_GEN_EVENT_IIDX_STAT_DMACH15,
526 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL
527 
529  DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH0 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH0,
532  DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH1 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH1,
535  DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH2 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH2,
538  DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH3 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH3,
541  DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH4 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH4,
544  DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH5 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH5,
547  DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH6 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH6,
550  DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH7 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH7,
551 #endif /* DEVICE_HAS_DMA_FULL_CHANNEL */
552 
553  DL_DMA_EVENT_IIDX_ADDR_ERROR = DMA_GEN_EVENT_IIDX_STAT_ADDRERR,
554 
556  DL_DMA_EVENT_IIDX_DATA_ERROR = DMA_GEN_EVENT_IIDX_STAT_DATAERR
558 
560 typedef enum {
564 
566 typedef enum {
572 
574 typedef enum {
576  DL_DMA_AUTOEN_DISABLE = DMA_DMACTL_DMAAUTOEN_DISABLE,
577  #ifdef DEVICE_HAS_AUTO_AND_GATHER
578 
579  DL_DMA_AUTOEN_DMASA = DMA_DMACTL_DMAAUTOEN_DMASA,
581  DL_DMA_AUTOEN_DMADA = DMA_DMACTL_DMAAUTOEN_DMADA,
583  DL_DMA_AUTOEN_DMASZ = DMA_DMACTL_DMAAUTOEN_DMASZ,
584  #endif /* DEVICE_HAS_AUTO_AND_GATHER*/
585 } DL_DMA_AUTOEN;
586 
587 /* clang-format on */
588 
592 typedef struct {
597  uint8_t trigger;
598 
603  DL_DMA_TRIGGER_TYPE triggerType;
604 
610  DL_DMA_TRANSFER_MODE transferMode;
611 
613  DL_DMA_EXTENDED_MODE extendedMode;
614 
616  DL_DMA_WIDTH srcWidth;
617 
619  DL_DMA_WIDTH destWidth;
620 
625  DL_DMA_INCREMENT srcIncrement;
626 
631  DL_DMA_INCREMENT destIncrement;
632 } DL_DMA_Config;
633 
644 void DL_DMA_initChannel(
645  DMA_Regs *dma, uint8_t channelNum, const DL_DMA_Config *config);
646 
670 __STATIC_INLINE void DL_DMA_configTransfer(DMA_Regs *dma, uint8_t channelNum,
671  DL_DMA_TRANSFER_MODE transferMode, DL_DMA_EXTENDED_MODE extendedMode,
672  DL_DMA_WIDTH srcWidth, DL_DMA_WIDTH destWidth,
673  DL_DMA_INCREMENT srcIncrement, DL_DMA_INCREMENT destIncrement)
674 {
675  dma->DMACHAN[channelNum].DMACTL =
676  ((uint32_t) transferMode | (uint32_t) extendedMode |
677  (((uint32_t) destIncrement) << 4) | (uint32_t) srcIncrement |
678  ((uint32_t) destWidth << 4) | (uint32_t) srcWidth);
679 }
680 
691 __STATIC_INLINE void DL_DMA_enableRoundRobinPriority(DMA_Regs *dma)
692 {
693  dma->DMAPRIO |= DMA_DMAPRIO_ROUNDROBIN_ENABLE;
694 }
695 
706 __STATIC_INLINE void DL_DMA_disableRoundRobinPriority(DMA_Regs *dma)
707 {
708  dma->DMAPRIO &= ~(DMA_DMAPRIO_ROUNDROBIN_MASK);
709 }
710 
721 __STATIC_INLINE bool DL_DMA_isRoundRobinPriorityEnabled(const DMA_Regs *dma)
722 {
723  return ((dma->DMAPRIO & DMA_DMAPRIO_ROUNDROBIN_MASK) ==
724  DMA_DMAPRIO_ROUNDROBIN_ENABLE);
725 }
726 
743 __STATIC_INLINE void DL_DMA_setBurstSize(
744  DMA_Regs *dma, DL_DMA_BURST_SIZE burstSize)
745 {
747  &dma->DMAPRIO, (uint32_t) burstSize, DMA_DMAPRIO_BURSTSZ_MASK);
748 }
749 
759 __STATIC_INLINE DL_DMA_BURST_SIZE DL_DMA_getBurstSize(const DMA_Regs *dma)
760 {
761  uint32_t burstSize = dma->DMAPRIO & DMA_DMAPRIO_BURSTSZ_MASK;
762 
763  return (DL_DMA_BURST_SIZE)(burstSize);
764 }
765 
772 __STATIC_INLINE void DL_DMA_enableChannel(DMA_Regs *dma, uint8_t channelNum)
773 {
774  dma->DMACHAN[channelNum].DMACTL |= DMA_DMACTL_DMAEN_ENABLE;
775 }
776 
783 __STATIC_INLINE void DL_DMA_disableChannel(DMA_Regs *dma, uint8_t channelNum)
784 {
785  dma->DMACHAN[channelNum].DMACTL &= ~(DMA_DMACTL_DMAEN_MASK);
786 }
787 
799 __STATIC_INLINE bool DL_DMA_isChannelEnabled(
800  const DMA_Regs *dma, uint8_t channelNum)
801 {
802  return ((dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMAEN_MASK) ==
803  DMA_DMACTL_DMAEN_ENABLE);
804 }
805 
820 __STATIC_INLINE void DL_DMA_configMode(DMA_Regs *dma, uint8_t channelNum,
821  DL_DMA_TRANSFER_MODE transferMode, DL_DMA_EXTENDED_MODE extendedMode)
822 {
823  DL_Common_updateReg(&dma->DMACHAN[channelNum].DMACTL,
824  (uint32_t) transferMode | (uint32_t) extendedMode,
825  DMA_DMACTL_DMATM_MASK | DMA_DMACTL_DMAEM_MASK);
826 }
827 
841 __STATIC_INLINE void DL_DMA_setTransferMode(
842  DMA_Regs *dma, uint8_t channelNum, DL_DMA_TRANSFER_MODE transferMode)
843 {
844  DL_Common_updateReg(&dma->DMACHAN[channelNum].DMACTL,
845  (uint32_t) transferMode, DMA_DMACTL_DMATM_MASK);
846 }
847 
858 __STATIC_INLINE DL_DMA_TRANSFER_MODE DL_DMA_getTransferMode(
859  const DMA_Regs *dma, uint8_t channelNum)
860 {
861  uint32_t mode = (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMATM_MASK);
862 
863  return (DL_DMA_TRANSFER_MODE)(mode);
864 }
865 
877 __STATIC_INLINE void DL_DMA_setExtendedMode(
878  DMA_Regs *dma, uint8_t channelNum, DL_DMA_EXTENDED_MODE extendedMode)
879 {
880  DL_Common_updateReg(&dma->DMACHAN[channelNum].DMACTL,
881  (uint32_t) extendedMode, DMA_DMACTL_DMAEM_MASK);
882 }
883 
894 __STATIC_INLINE DL_DMA_EXTENDED_MODE DL_DMA_getExtendedMode(
895  const DMA_Regs *dma, uint8_t channelNum)
896 {
897  uint32_t mode = (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMAEM_MASK);
898 
899  return (DL_DMA_EXTENDED_MODE)(mode);
900 }
901 
908 __STATIC_INLINE void DL_DMA_startTransfer(DMA_Regs *dma, uint8_t channelNum)
909 {
910  dma->DMACHAN[channelNum].DMACTL |= DMA_DMACTL_DMAREQ_REQUEST;
911 }
912 
925 __STATIC_INLINE void DL_DMA_setTrigger(DMA_Regs *dma, uint8_t channelNum,
926  uint8_t trigger, DL_DMA_TRIGGER_TYPE triggerType)
927 {
928  DL_Common_updateReg(&dma->DMATRIG[channelNum].DMATCTL,
929  trigger | (uint32_t) triggerType,
930  DMA_DMATCTL_DMATSEL_MASK | DMA_DMATCTL_DMATINT_MASK);
931 }
932 
944 __STATIC_INLINE uint32_t DL_DMA_getTrigger(
945  const DMA_Regs *dma, uint8_t channelNum)
946 {
947  return (dma->DMATRIG[channelNum].DMATCTL & DMA_DMATCTL_DMATSEL_MASK);
948 }
949 
961 __STATIC_INLINE DL_DMA_TRIGGER_TYPE DL_DMA_getTriggerType(
962  const DMA_Regs *dma, uint8_t channelNum)
963 {
964  uint32_t triggerType =
965  (dma->DMATRIG[channelNum].DMATCTL & DMA_DMATCTL_DMATINT_MASK);
966 
967  return (DL_DMA_TRIGGER_TYPE)(triggerType);
968 }
969 
983 __STATIC_INLINE void DL_DMA_setSrcAddr(
984  DMA_Regs *dma, uint8_t channelNum, uint32_t srcAddr)
985 {
986  dma->DMACHAN[channelNum].DMASA = srcAddr;
987 }
988 
997 __STATIC_INLINE uint32_t DL_DMA_getSrcAddr(
998  const DMA_Regs *dma, uint8_t channelNum)
999 {
1000  return dma->DMACHAN[channelNum].DMASA;
1001 }
1002 
1017 __STATIC_INLINE void DL_DMA_setDestAddr(
1018  DMA_Regs *dma, uint8_t channelNum, uint32_t destAddr)
1019 {
1020  dma->DMACHAN[channelNum].DMADA = destAddr;
1021 }
1022 
1031 __STATIC_INLINE uint32_t DL_DMA_getDestAddr(
1032  const DMA_Regs *dma, uint8_t channelNum)
1033 {
1034  return dma->DMACHAN[channelNum].DMADA;
1035 }
1036 
1054 __STATIC_INLINE void DL_DMA_setTransferSize(
1055  DMA_Regs *dma, uint8_t channelNum, uint16_t size)
1056 {
1057  dma->DMACHAN[channelNum].DMASZ = size;
1058 }
1059 
1070 __STATIC_INLINE uint16_t DL_DMA_getTransferSize(
1071  const DMA_Regs *dma, uint8_t channelNum)
1072 {
1073  return (uint16_t)(dma->DMACHAN[channelNum].DMASZ & DMA_DMASZ_SIZE_MASK);
1074 }
1075 
1096 __STATIC_INLINE void DL_DMA_setSrcIncrement(
1097  DMA_Regs *dma, uint8_t channelNum, DL_DMA_INCREMENT srcIncrement)
1098 {
1099  DL_Common_updateReg(&dma->DMACHAN[channelNum].DMACTL,
1100  (uint32_t) srcIncrement, DMA_DMACTL_DMASRCINCR_MASK);
1101 }
1102 
1113 __STATIC_INLINE DL_DMA_INCREMENT DL_DMA_getSrcIncrement(
1114  const DMA_Regs *dma, uint8_t channelNum)
1115 {
1116  uint32_t incrementAmount =
1117  (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMASRCINCR_MASK);
1118 
1119  return (DL_DMA_INCREMENT)(incrementAmount);
1120 }
1121 
1142 __STATIC_INLINE void DL_DMA_setDestIncrement(
1143  DMA_Regs *dma, uint8_t channelNum, DL_DMA_INCREMENT destIncrement)
1144 {
1145  /* Left shifted by 4 so the defines align with bitfield */
1146  DL_Common_updateReg(&dma->DMACHAN[channelNum].DMACTL,
1147  ((uint32_t) destIncrement) << 4, DMA_DMACTL_DMADSTINCR_MASK);
1148 }
1149 
1160 __STATIC_INLINE DL_DMA_INCREMENT DL_DMA_getDestIncrement(
1161  const DMA_Regs *dma, uint8_t channelNum)
1162 {
1163  /* Right shifted by 4 to align with provided defines */
1164  uint32_t incrementAmount =
1165  (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMADSTINCR_MASK) >> 4;
1166 
1167  return (DL_DMA_INCREMENT)(incrementAmount);
1168 }
1169 
1180 __STATIC_INLINE void DL_DMA_setSrcWidth(
1181  DMA_Regs *dma, uint8_t channelNum, DL_DMA_WIDTH srcWidth)
1182 {
1183  DL_Common_updateReg(&dma->DMACHAN[channelNum].DMACTL, (uint32_t) srcWidth,
1184  DMA_DMACTL_DMASRCWDTH_MASK);
1185 }
1186 
1197 __STATIC_INLINE DL_DMA_WIDTH DL_DMA_getSrcWidth(
1198  const DMA_Regs *dma, uint8_t channelNum)
1199 {
1200  uint32_t width =
1201  (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMASRCWDTH_MASK);
1202 
1203  return (DL_DMA_WIDTH)(width);
1204 }
1205 
1216 __STATIC_INLINE void DL_DMA_setDestWidth(
1217  DMA_Regs *dma, uint8_t channelNum, DL_DMA_WIDTH destWidth)
1218 {
1219  /* Left shifted by 4 to align with provided defines */
1220  DL_Common_updateReg(&dma->DMACHAN[channelNum].DMACTL,
1221  ((uint32_t) destWidth) << 4, DMA_DMACTL_DMADSTWDTH_MASK);
1222 }
1223 
1234 __STATIC_INLINE DL_DMA_WIDTH DL_DMA_getDestWidth(
1235  const DMA_Regs *dma, uint8_t channelNum)
1236 {
1237  /* Right shifted by 4 to align with provided defines */
1238  uint32_t width =
1239  (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMADSTWDTH_MASK) >> 4;
1240 
1241  return (DL_DMA_WIDTH)(width);
1242 }
1243 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL
1244 
1272 __STATIC_INLINE void DL_DMA_Full_Ch_setEarlyInterruptThreshold(DMA_Regs *dma,
1273  uint8_t channelNum, DL_DMA_EARLY_INTERRUPT_THRESHOLD threshold)
1274 {
1275  DL_Common_updateReg(&dma->DMACHAN[channelNum].DMACTL, (uint32_t) threshold,
1276  DMA_DMACTL_DMAPREIRQ_MASK);
1277 }
1278 
1294 __STATIC_INLINE DL_DMA_EARLY_INTERRUPT_THRESHOLD
1295 DL_DMA_Full_Ch_getEarlyInterruptThreshold(
1296  const DMA_Regs *dma, uint8_t channelNum)
1297 {
1298  uint32_t threshold =
1299  dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMAPREIRQ_MASK;
1300 
1301  return (DL_DMA_EARLY_INTERRUPT_THRESHOLD)(threshold);
1302 }
1303 #endif /* DEVICE_HAS_DMA_FULL_CHANNEL */
1304 
1313 __STATIC_INLINE void DL_DMA_enableInterrupt(
1314  DMA_Regs *dma, uint32_t interruptMask)
1315 {
1316  dma->CPU_INT.IMASK |= interruptMask;
1317 }
1318 
1327 __STATIC_INLINE void DL_DMA_disableInterrupt(
1328  DMA_Regs *dma, uint32_t interruptMask)
1329 {
1330  dma->CPU_INT.IMASK &= ~(interruptMask);
1331 }
1332 
1345 __STATIC_INLINE uint32_t DL_DMA_getEnabledInterrupts(
1346  const DMA_Regs *dma, uint32_t interruptMask)
1347 {
1348  return (dma->CPU_INT.IMASK & interruptMask);
1349 }
1350 
1368 __STATIC_INLINE uint32_t DL_DMA_getEnabledInterruptStatus(
1369  const DMA_Regs *dma, uint32_t interruptMask)
1370 {
1371  return (dma->CPU_INT.MIS & interruptMask);
1372 }
1373 
1389 __STATIC_INLINE uint32_t DL_DMA_getRawInterruptStatus(
1390  const DMA_Regs *dma, uint32_t interruptMask)
1391 {
1392  return (dma->CPU_INT.RIS & interruptMask);
1393 }
1394 
1408 __STATIC_INLINE DL_DMA_EVENT_IIDX DL_DMA_getPendingInterrupt(
1409  const DMA_Regs *dma)
1410 {
1411  return (DL_DMA_EVENT_IIDX) dma->CPU_INT.IIDX;
1412 }
1413 
1422 __STATIC_INLINE void DL_DMA_clearInterruptStatus(
1423  DMA_Regs *dma, uint32_t interruptMask)
1424 {
1425  dma->CPU_INT.ICLR = interruptMask;
1426 }
1427 
1437 __STATIC_INLINE void DL_DMA_setPublisherChanID(
1438  DMA_Regs *dma, DL_DMA_PUBLISHER_INDEX index, uint8_t chanID)
1439 {
1440  volatile uint32_t *pReg = &dma->FPUB_1;
1441 
1442  *(pReg + (uint32_t) index) = (chanID & DMA_FPUB_1_CHANID_MAXIMUM);
1443 }
1444 
1455 __STATIC_INLINE uint8_t DL_DMA_getPublisherChanID(
1456  DMA_Regs *dma, DL_DMA_PUBLISHER_INDEX index)
1457 {
1458  volatile uint32_t *pReg = &dma->FPUB_1;
1459 
1460  return ((uint8_t)(*(pReg + (uint32_t) index) & DMA_FPUB_1_CHANID_MASK));
1461 }
1462 
1472 __STATIC_INLINE void DL_DMA_setSubscriberChanID(
1473  DMA_Regs *dma, DL_DMA_SUBSCRIBER_INDEX index, uint8_t chanID)
1474 {
1475  volatile uint32_t *pReg = &dma->FSUB_0;
1476 
1477  *(pReg + (uint32_t) index) = (chanID & DMA_FSUB_0_CHANID_MAXIMUM);
1478 }
1479 
1490 __STATIC_INLINE uint8_t DL_DMA_getSubscriberChanID(
1491  DMA_Regs *dma, DL_DMA_SUBSCRIBER_INDEX index)
1492 {
1493  volatile uint32_t *pReg = &dma->FSUB_0;
1494 
1495  return ((uint8_t)(*(pReg + (uint32_t) index) & DMA_FSUB_0_CHANID_MASK));
1496 }
1497 
1506 __STATIC_INLINE void DL_DMA_enableEvent(DMA_Regs *dma, uint32_t eventMask)
1507 {
1508  dma->GEN_EVENT.IMASK |= (eventMask);
1509 }
1510 
1519 __STATIC_INLINE void DL_DMA_disableEvent(DMA_Regs *dma, uint32_t eventMask)
1520 {
1521  dma->GEN_EVENT.IMASK &= ~(eventMask);
1522 }
1523 
1536 __STATIC_INLINE uint32_t DL_DMA_getEnabledEvents(
1537  const DMA_Regs *dma, uint32_t eventMask)
1538 {
1539  return (dma->GEN_EVENT.IMASK & eventMask);
1540 }
1541 
1559 __STATIC_INLINE uint32_t DL_DMA_getEnabledEventStatus(
1560  const DMA_Regs *dma, uint32_t eventMask)
1561 {
1562  return (dma->GEN_EVENT.MIS & ~(eventMask));
1563 }
1564 
1580 __STATIC_INLINE uint32_t DL_DMA_getRawEventsStatus(
1581  const DMA_Regs *dma, uint32_t eventMask)
1582 {
1583  return (dma->GEN_EVENT.RIS & ~(eventMask));
1584 }
1585 
1594 __STATIC_INLINE void DL_DMA_clearEventsStatus(
1595  DMA_Regs *dma, uint32_t eventMask)
1596 {
1597  dma->GEN_EVENT.ICLR |= (eventMask);
1598 }
1599 
1600 #ifdef DEVICE_HAS_AUTO_AND_GATHER
1601 
1608 __STATIC_INLINE void DL_DMA_enableAutoEnable(
1609  DMA_Regs *dma, DL_DMA_AUTOEN mode, uint8_t channelNum)
1610 {
1611  dma->DMACHAN[channelNum].DMACTL |= mode;
1612 }
1613 
1621 __STATIC_INLINE void DL_DMA_disableAutoEnable(
1622  DMA_Regs *dma, uint8_t channelNum)
1623 {
1624  dma->DMACHAN[channelNum].DMACTL &= ~(DMA_DMACTL_DMAAUTOEN_MASK);
1625 }
1626 
1638 __STATIC_INLINE bool DL_DMA_isAutoEnableEnabled(
1639  const DMA_Regs *dma, uint8_t channelNum)
1640 {
1641  return ((dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMAAUTOEN_MASK) !=
1642  DMA_DMACTL_DMAAUTOEN_DISABLE);
1643 }
1644 #endif /* DEVICE_HAS_AUTO_AND_GATHER*/
1645 
1646 #ifdef __cplusplus
1647 }
1648 #endif
1649 
1650 #endif /* ti_dl_dl_m0p_dma__include */
1651 
__STATIC_INLINE uint32_t DL_DMA_getRawInterruptStatus(const DMA_Regs *dma, uint32_t interruptMask)
Check interrupt flag of any DMA interrupt.
Definition: dl_dma.h:1389
__STATIC_INLINE void DL_Common_updateReg(volatile uint32_t *reg, uint32_t val, uint32_t mask)
Writes value to specified register - retaining bits unaffected by mask.
Definition: dl_common.h:63
__STATIC_INLINE uint32_t DL_DMA_getEnabledEvents(const DMA_Regs *dma, uint32_t eventMask)
Check which dma events triggers are enabled.
Definition: dl_dma.h:1536
Definition: dl_dma.h:459
__STATIC_INLINE void DL_DMA_disableChannel(DMA_Regs *dma, uint8_t channelNum)
Disable a DMA channel for transfers.
Definition: dl_dma.h:783
__STATIC_INLINE uint32_t DL_DMA_getTrigger(const DMA_Regs *dma, uint8_t channelNum)
Get the current trigger for a DMA channel.
Definition: dl_dma.h:944
__STATIC_INLINE void DL_DMA_disableRoundRobinPriority(DMA_Regs *dma)
Disable round-robin priority for the DMA.
Definition: dl_dma.h:706
__STATIC_INLINE void DL_DMA_setBurstSize(DMA_Regs *dma, DL_DMA_BURST_SIZE burstSize)
Set the burst size for block transfers.
Definition: dl_dma.h:743
Definition: dl_dma.h:568
Definition: dl_dma.h:439
DL_DMA_EXTENDED_MODE
Definition: dl_dma.h:379
Definition: dl_dma.h:381
Definition: dl_dma.h:570
__STATIC_INLINE uint8_t DL_DMA_getSubscriberChanID(DMA_Regs *dma, DL_DMA_SUBSCRIBER_INDEX index)
Gets the event subscriber channel id.
Definition: dl_dma.h:1490
Definition: dl_dma.h:497
__STATIC_INLINE void DL_DMA_setDestAddr(DMA_Regs *dma, uint8_t channelNum, uint32_t destAddr)
Set a DMA channel&#39;s destination address.
Definition: dl_dma.h:1017
DL_DMA_WIDTH destWidth
Definition: dl_dma.h:619
DL_DMA_WIDTH srcWidth
Definition: dl_dma.h:616
__STATIC_INLINE DL_DMA_INCREMENT DL_DMA_getSrcIncrement(const DMA_Regs *dma, uint8_t channelNum)
Return a channel&#39;s source address increment amount.
Definition: dl_dma.h:1113
__STATIC_INLINE void DL_DMA_setPublisherChanID(DMA_Regs *dma, DL_DMA_PUBLISHER_INDEX index, uint8_t chanID)
Sets the event publisher channel id.
Definition: dl_dma.h:1437
__STATIC_INLINE void DL_DMA_setSrcIncrement(DMA_Regs *dma, uint8_t channelNum, DL_DMA_INCREMENT srcIncrement)
Set a channel&#39;s source address increment amount.
Definition: dl_dma.h:1096
DL_DMA_INCREMENT
Definition: dl_dma.h:399
__STATIC_INLINE void DL_DMA_enableChannel(DMA_Regs *dma, uint8_t channelNum)
Enable a DMA channel for transfers.
Definition: dl_dma.h:772
DL_DMA_TRIGGER_TYPE triggerType
Definition: dl_dma.h:603
__STATIC_INLINE DL_DMA_WIDTH DL_DMA_getSrcWidth(const DMA_Regs *dma, uint8_t channelNum)
Get the width of the DMA source address for a channel.
Definition: dl_dma.h:1197
Definition: dl_dma.h:483
Definition: dl_dma.h:420
Configuration struct for DL_DMA_initChannel.
Definition: dl_dma.h:592
__STATIC_INLINE void DL_DMA_setDestWidth(DMA_Regs *dma, uint8_t channelNum, DL_DMA_WIDTH destWidth)
Set the width of the DMA destination address for a channel.
Definition: dl_dma.h:1216
DL_DMA_INCREMENT srcIncrement
Definition: dl_dma.h:625
__STATIC_INLINE bool DL_DMA_isRoundRobinPriorityEnabled(const DMA_Regs *dma)
Check if round-robin priority is enabled for the DMA.
Definition: dl_dma.h:721
Definition: dl_dma.h:511
DL_DMA_SUBSCRIBER_INDEX
Definition: dl_dma.h:566
DL_DMA_EXTENDED_MODE extendedMode
Definition: dl_dma.h:613
Definition: dl_dma.h:429
__STATIC_INLINE void DL_DMA_enableRoundRobinPriority(DMA_Regs *dma)
Configure the DMA for round-robin priority.
Definition: dl_dma.h:691
__STATIC_INLINE DL_DMA_INCREMENT DL_DMA_getDestIncrement(const DMA_Regs *dma, uint8_t channelNum)
Return a channel&#39;s destination address increment amount.
Definition: dl_dma.h:1160
Definition: dl_dma.h:525
__STATIC_INLINE void DL_DMA_clearInterruptStatus(DMA_Regs *dma, uint32_t interruptMask)
Clear pending DMA interrupts.
Definition: dl_dma.h:1422
__STATIC_INLINE DL_DMA_TRANSFER_MODE DL_DMA_getTransferMode(const DMA_Regs *dma, uint8_t channelNum)
Get a DMA channel&#39;s transfer mode.
Definition: dl_dma.h:858
Definition: dl_dma.h:562
__STATIC_INLINE void DL_DMA_disableInterrupt(DMA_Regs *dma, uint32_t interruptMask)
Disable DMA interrupts.
Definition: dl_dma.h:1327
Definition: dl_dma.h:521
__STATIC_INLINE uint32_t DL_DMA_getDestAddr(const DMA_Regs *dma, uint8_t channelNum)
Get a DMA channel&#39;s destination address.
Definition: dl_dma.h:1031
__STATIC_INLINE bool DL_DMA_isChannelEnabled(const DMA_Regs *dma, uint8_t channelNum)
Check if a DMA channel is enabled for transfers.
Definition: dl_dma.h:799
Definition: dl_dma.h:403
Definition: dl_dma.h:503
DriverLib Common APIs.
__STATIC_INLINE void DL_DMA_enableEvent(DMA_Regs *dma, uint32_t eventMask)
Enable DMA event.
Definition: dl_dma.h:1506
Definition: dl_dma.h:507
__STATIC_INLINE void DL_DMA_setTrigger(DMA_Regs *dma, uint8_t channelNum, uint8_t trigger, DL_DMA_TRIGGER_TYPE triggerType)
Set a channel&#39;s trigger for a DMA transfer.
Definition: dl_dma.h:925
Definition: dl_dma.h:513
DL_DMA_PUBLISHER_INDEX
Definition: dl_dma.h:560
__STATIC_INLINE uint32_t DL_DMA_getRawEventsStatus(const DMA_Regs *dma, uint32_t eventMask)
Check event flag of any dma event.
Definition: dl_dma.h:1580
__STATIC_INLINE void DL_DMA_setTransferMode(DMA_Regs *dma, uint8_t channelNum, DL_DMA_TRANSFER_MODE transferMode)
Set a DMA channel&#39;s transfer mode.
Definition: dl_dma.h:841
Definition: dl_dma.h:417
DL_DMA_WIDTH
Definition: dl_dma.h:475
DL_DMA_INCREMENT destIncrement
Definition: dl_dma.h:631
__STATIC_INLINE void DL_DMA_clearEventsStatus(DMA_Regs *dma, uint32_t eventMask)
Clear pending dma events.
Definition: dl_dma.h:1594
__STATIC_INLINE void DL_DMA_disableEvent(DMA_Regs *dma, uint32_t eventMask)
Disable DMA event.
Definition: dl_dma.h:1519
Definition: dl_dma.h:493
Definition: dl_dma.h:517
__STATIC_INLINE void DL_DMA_setExtendedMode(DMA_Regs *dma, uint8_t channelNum, DL_DMA_EXTENDED_MODE extendedMode)
Set a DMA channel&#39;s extended mode.
Definition: dl_dma.h:877
__STATIC_INLINE void DL_DMA_setTransferSize(DMA_Regs *dma, uint8_t channelNum, uint16_t size)
Set the size of a block for a DMA transfer.
Definition: dl_dma.h:1054
Definition: dl_dma.h:501
__STATIC_INLINE DL_DMA_BURST_SIZE DL_DMA_getBurstSize(const DMA_Regs *dma)
Get the burst size for block transfers.
Definition: dl_dma.h:759
void DL_DMA_initChannel(DMA_Regs *dma, uint8_t channelNum, const DL_DMA_Config *config)
Initialize a DMA channel.
Definition: dl_dma.h:481
Definition: dl_dma.h:426
__STATIC_INLINE DL_DMA_WIDTH DL_DMA_getDestWidth(const DMA_Regs *dma, uint8_t channelNum)
Get the width of the DMA destination address for a channel.
Definition: dl_dma.h:1234
DL_DMA_TRIGGER_TYPE
Definition: dl_dma.h:467
__STATIC_INLINE void DL_DMA_setSrcWidth(DMA_Regs *dma, uint8_t channelNum, DL_DMA_WIDTH srcWidth)
Set the width of the DMA source address for a channel.
Definition: dl_dma.h:1180
Definition: dl_dma.h:509
Definition: dl_dma.h:576
Definition: dl_dma.h:553
__STATIC_INLINE void DL_DMA_startTransfer(DMA_Regs *dma, uint8_t channelNum)
Start a DMA transfer using software.
Definition: dl_dma.h:908
Definition: dl_dma.h:457
__STATIC_INLINE uint8_t DL_DMA_getPublisherChanID(DMA_Regs *dma, DL_DMA_PUBLISHER_INDEX index)
Gets the event publisher channel id.
Definition: dl_dma.h:1455
__STATIC_INLINE uint32_t DL_DMA_getEnabledInterrupts(const DMA_Regs *dma, uint32_t interruptMask)
Check which DMA interrupts are enabled.
Definition: dl_dma.h:1345
Definition: dl_dma.h:405
Definition: dl_dma.h:445
Definition: dl_dma.h:423
Definition: dl_dma.h:477
Definition: dl_dma.h:408
DL_DMA_TRANSFER_MODE transferMode
Definition: dl_dma.h:610
__STATIC_INLINE DL_DMA_TRIGGER_TYPE DL_DMA_getTriggerType(const DMA_Regs *dma, uint8_t channelNum)
Get the current trigger type for a DMA channel.
Definition: dl_dma.h:961
Definition: dl_dma.h:505
Definition: dl_dma.h:441
Definition: dl_dma.h:367
Definition: dl_dma.h:365
Definition: dl_dma.h:556
__STATIC_INLINE void DL_DMA_configTransfer(DMA_Regs *dma, uint8_t channelNum, DL_DMA_TRANSFER_MODE transferMode, DL_DMA_EXTENDED_MODE extendedMode, DL_DMA_WIDTH srcWidth, DL_DMA_WIDTH destWidth, DL_DMA_INCREMENT srcIncrement, DL_DMA_INCREMENT destIncrement)
Configure a DMA channel for a transfer.
Definition: dl_dma.h:670
Definition: dl_dma.h:463
__STATIC_INLINE void DL_DMA_enableInterrupt(DMA_Regs *dma, uint32_t interruptMask)
Enable DMA interrupts.
Definition: dl_dma.h:1313
DL_DMA_EARLY_INTERRUPT_THRESHOLD
Definition: dl_dma.h:433
Definition: dl_dma.h:414
Definition: dl_dma.h:461
Definition: dl_dma.h:411
Definition: dl_dma.h:471
uint8_t trigger
Definition: dl_dma.h:597
__STATIC_INLINE uint32_t DL_DMA_getEnabledEventStatus(const DMA_Regs *dma, uint32_t eventMask)
Check event flag of enabled dma event.
Definition: dl_dma.h:1559
Definition: dl_dma.h:447
Definition: dl_dma.h:401
__STATIC_INLINE void DL_DMA_configMode(DMA_Regs *dma, uint8_t channelNum, DL_DMA_TRANSFER_MODE transferMode, DL_DMA_EXTENDED_MODE extendedMode)
Configure the mode for a DMA channel.
Definition: dl_dma.h:820
Definition: dl_dma.h:515
__STATIC_INLINE uint32_t DL_DMA_getSrcAddr(const DMA_Regs *dma, uint8_t channelNum)
Get a DMA channel&#39;s source address.
Definition: dl_dma.h:997
Definition: dl_dma.h:523
DL_DMA_BURST_SIZE
Definition: dl_dma.h:454
DL_DMA_AUTOEN
Definition: dl_dma.h:574
__STATIC_INLINE uint16_t DL_DMA_getTransferSize(const DMA_Regs *dma, uint8_t channelNum)
Get a channel&#39;s size of block of data for a DMA transfer.
Definition: dl_dma.h:1070
__STATIC_INLINE void DL_DMA_setSubscriberChanID(DMA_Regs *dma, DL_DMA_SUBSCRIBER_INDEX index, uint8_t chanID)
Sets the event subscriber channel id.
Definition: dl_dma.h:1472
Definition: dl_dma.h:499
Definition: dl_dma.h:437
__STATIC_INLINE void DL_DMA_setSrcAddr(DMA_Regs *dma, uint8_t channelNum, uint32_t srcAddr)
Set a DMA channel&#39;s source address.
Definition: dl_dma.h:983
__STATIC_INLINE uint32_t DL_DMA_getEnabledInterruptStatus(const DMA_Regs *dma, uint32_t interruptMask)
Check interrupt flag of enabled DMA interrupts.
Definition: dl_dma.h:1368
DL_DMA_TRANSFER_MODE
Definition: dl_dma.h:363
Definition: dl_dma.h:469
Definition: dl_dma.h:479
__STATIC_INLINE void DL_DMA_setDestIncrement(DMA_Regs *dma, uint8_t channelNum, DL_DMA_INCREMENT destIncrement)
Set a channel&#39;s destination address increment amount.
Definition: dl_dma.h:1142
Definition: dl_dma.h:443
Definition: dl_dma.h:495
Definition: dl_dma.h:519
__STATIC_INLINE DL_DMA_EVENT_IIDX DL_DMA_getPendingInterrupt(const DMA_Regs *dma)
Get highest priority pending DMA interrupt.
Definition: dl_dma.h:1408
__STATIC_INLINE DL_DMA_EXTENDED_MODE DL_DMA_getExtendedMode(const DMA_Regs *dma, uint8_t channelNum)
Get a DMA channel&#39;s extended mode.
Definition: dl_dma.h:894
DL_DMA_EVENT_IIDX
Definition: dl_dma.h:491
© Copyright 1995-2025, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale