EE445M RTOS
Taken at the University of Texas Spring 2015
udma.h
Go to the documentation of this file.
1 //*****************************************************************************
2 //
3 // udma.h - Prototypes and macros for the uDMA controller.
4 //
5 // Copyright (c) 2007-2014 Texas Instruments Incorporated. All rights reserved.
6 // Software License Agreement
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions
10 // are met:
11 //
12 // Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
14 //
15 // Redistributions in binary form must reproduce the above copyright
16 // notice, this list of conditions and the following disclaimer in the
17 // documentation and/or other materials provided with the
18 // distribution.
19 //
20 // Neither the name of Texas Instruments Incorporated nor the names of
21 // its contributors may be used to endorse or promote products derived
22 // from this software without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 //
36 // This is part of revision 2.1.0.12573 of the Tiva Peripheral Driver Library.
37 //
38 //*****************************************************************************
39 
40 #ifndef __DRIVERLIB_UDMA_H__
41 #define __DRIVERLIB_UDMA_H__
42 
43 //*****************************************************************************
44 //
45 // If building with a C++ compiler, make all of the definitions in this header
46 // have a C binding.
47 //
48 //*****************************************************************************
49 #ifdef __cplusplus
50 extern "C"
51 {
52 #endif
53 
54 //*****************************************************************************
55 //
58 //
59 //*****************************************************************************
60 
61 //*****************************************************************************
62 //
63 // A structure that defines an entry in the channel control table. These
64 // fields are used by the uDMA controller and normally it is not necessary for
65 // software to directly read or write fields in the table.
66 //
67 //*****************************************************************************
68 typedef struct
69 {
70  //
71  // The ending source address of the data transfer.
72  //
73  volatile void *pvSrcEndAddr;
74 
75  //
76  // The ending destination address of the data transfer.
77  //
78  volatile void *pvDstEndAddr;
79 
80  //
81  // The channel control mode.
82  //
83  volatile uint32_t ui32Control;
84 
85  //
86  // An unused location.
87  //
88  volatile uint32_t ui32Spare;
89 }
91 
92 //*****************************************************************************
93 //
159 //
160 //*****************************************************************************
161 #define uDMATaskStructEntry(ui32TransferCount, \
162  ui32ItemSize, \
163  ui32SrcIncrement, \
164  pvSrcAddr, \
165  ui32DstIncrement, \
166  pvDstAddr, \
167  ui32ArbSize, \
168  ui32Mode) \
169  { \
170  (((ui32SrcIncrement) == UDMA_SRC_INC_NONE) ? (void *)(pvSrcAddr) : \
171  ((void *)(&((uint8_t *)(pvSrcAddr))[((ui32TransferCount) << \
172  ((ui32SrcIncrement) >> 26)) - 1]))), \
173  (((ui32DstIncrement) == UDMA_DST_INC_NONE) ? (void *)(pvDstAddr) :\
174  ((void *)(&((uint8_t *)(pvDstAddr))[((ui32TransferCount) << \
175  ((ui32DstIncrement) >> 30)) - 1]))), \
176  (ui32SrcIncrement) | (ui32DstIncrement) | (ui32ItemSize) | \
177  (ui32ArbSize) | \
178  (((ui32TransferCount) - 1) << 4) | \
179  ((((ui32Mode) == UDMA_MODE_MEM_SCATTER_GATHER) || \
180  ((ui32Mode) == UDMA_MODE_PER_SCATTER_GATHER)) ? \
181  (ui32Mode) | UDMA_MODE_ALT_SELECT : (ui32Mode)), 0 \
182  }
183 
184 //*****************************************************************************
185 //
186 // Close the Doxygen group.
188 //
189 //*****************************************************************************
190 
191 //*****************************************************************************
192 //
193 // Flags that can be passed to uDMAChannelAttributeEnable(),
194 // uDMAChannelAttributeDisable(), and returned from uDMAChannelAttributeGet().
195 //
196 //*****************************************************************************
197 #define UDMA_ATTR_USEBURST 0x00000001
198 #define UDMA_ATTR_ALTSELECT 0x00000002
199 #define UDMA_ATTR_HIGH_PRIORITY 0x00000004
200 #define UDMA_ATTR_REQMASK 0x00000008
201 #define UDMA_ATTR_ALL 0x0000000F
202 
203 //*****************************************************************************
204 //
205 // DMA control modes that can be passed to uDMAModeSet() and returned
206 // uDMAModeGet().
207 //
208 //*****************************************************************************
209 #define UDMA_MODE_STOP 0x00000000
210 #define UDMA_MODE_BASIC 0x00000001
211 #define UDMA_MODE_AUTO 0x00000002
212 #define UDMA_MODE_PINGPONG 0x00000003
213 #define UDMA_MODE_MEM_SCATTER_GATHER \
214  0x00000004
215 #define UDMA_MODE_PER_SCATTER_GATHER \
216  0x00000006
217 #define UDMA_MODE_ALT_SELECT 0x00000001
218 
219 //*****************************************************************************
220 //
221 // Channel configuration values that can be passed to uDMAControlSet().
222 //
223 //*****************************************************************************
224 #define UDMA_DST_INC_8 0x00000000
225 #define UDMA_DST_INC_16 0x40000000
226 #define UDMA_DST_INC_32 0x80000000
227 #define UDMA_DST_INC_NONE 0xc0000000
228 #define UDMA_SRC_INC_8 0x00000000
229 #define UDMA_SRC_INC_16 0x04000000
230 #define UDMA_SRC_INC_32 0x08000000
231 #define UDMA_SRC_INC_NONE 0x0c000000
232 #define UDMA_SIZE_8 0x00000000
233 #define UDMA_SIZE_16 0x11000000
234 #define UDMA_SIZE_32 0x22000000
235 #define UDMA_DST_PROT_PRIV 0x00200000
236 #define UDMA_SRC_PROT_PRIV 0x00040000
237 #define UDMA_ARB_1 0x00000000
238 #define UDMA_ARB_2 0x00004000
239 #define UDMA_ARB_4 0x00008000
240 #define UDMA_ARB_8 0x0000c000
241 #define UDMA_ARB_16 0x00010000
242 #define UDMA_ARB_32 0x00014000
243 #define UDMA_ARB_64 0x00018000
244 #define UDMA_ARB_128 0x0001c000
245 #define UDMA_ARB_256 0x00020000
246 #define UDMA_ARB_512 0x00024000
247 #define UDMA_ARB_1024 0x00028000
248 #define UDMA_NEXT_USEBURST 0x00000008
249 
250 //*****************************************************************************
251 //
252 // Channel numbers to be passed to API functions that require a channel number
253 // ID.
254 //
255 //*****************************************************************************
256 #define UDMA_CHANNEL_USBEP1RX 0
257 #define UDMA_CHANNEL_USBEP1TX 1
258 #define UDMA_CHANNEL_USBEP2RX 2
259 #define UDMA_CHANNEL_USBEP2TX 3
260 #define UDMA_CHANNEL_USBEP3RX 4
261 #define UDMA_CHANNEL_USBEP3TX 5
262 #define UDMA_CHANNEL_ETH0RX 6
263 #define UDMA_CHANNEL_ETH0TX 7
264 #define UDMA_CHANNEL_UART0RX 8
265 #define UDMA_CHANNEL_UART0TX 9
266 #define UDMA_CHANNEL_SSI0RX 10
267 #define UDMA_CHANNEL_SSI0TX 11
268 #define UDMA_CHANNEL_ADC0 14
269 #define UDMA_CHANNEL_ADC1 15
270 #define UDMA_CHANNEL_ADC2 16
271 #define UDMA_CHANNEL_ADC3 17
272 #define UDMA_CHANNEL_TMR0A 18
273 #define UDMA_CHANNEL_TMR0B 19
274 #define UDMA_CHANNEL_TMR1A 20
275 #define UDMA_CHANNEL_TMR1B 21
276 #define UDMA_CHANNEL_UART1RX 22
277 #define UDMA_CHANNEL_UART1TX 23
278 #define UDMA_CHANNEL_SSI1RX 24
279 #define UDMA_CHANNEL_SSI1TX 25
280 #define UDMA_CHANNEL_I2S0RX 28
281 #define UDMA_CHANNEL_I2S0TX 29
282 #define UDMA_CHANNEL_SW 30
283 
284 //*****************************************************************************
285 //
286 // Flags to be OR'd with the channel ID to indicate if the primary or alternate
287 // control structure should be used.
288 //
289 //*****************************************************************************
290 #define UDMA_PRI_SELECT 0x00000000
291 #define UDMA_ALT_SELECT 0x00000020
292 
293 //*****************************************************************************
294 //
295 // uDMA interrupt sources, to be passed to uDMAIntRegister() and
296 // uDMAIntUnregister().
297 //
298 //*****************************************************************************
299 #define UDMA_INT_SW 62
300 #define UDMA_INT_ERR 63
301 
302 //*****************************************************************************
303 //
304 // Channel numbers to be passed to API functions that require a channel number
305 // ID. These are for secondary peripheral assignments.
306 //
307 //*****************************************************************************
308 #define UDMA_SEC_CHANNEL_UART2RX_0 \
309  0
310 #define UDMA_SEC_CHANNEL_UART2TX_1 \
311  1
312 #define UDMA_SEC_CHANNEL_TMR3A 2
313 #define UDMA_SEC_CHANNEL_TMR3B 3
314 #define UDMA_SEC_CHANNEL_TMR2A_4 \
315  4
316 #define UDMA_SEC_CHANNEL_TMR2B_5 \
317  5
318 #define UDMA_SEC_CHANNEL_TMR2A_6 \
319  6
320 #define UDMA_SEC_CHANNEL_TMR2B_7 \
321  7
322 #define UDMA_SEC_CHANNEL_UART1RX \
323  8
324 #define UDMA_SEC_CHANNEL_UART1TX \
325  9
326 #define UDMA_SEC_CHANNEL_SSI1RX 10
327 #define UDMA_SEC_CHANNEL_SSI1TX 11
328 #define UDMA_SEC_CHANNEL_UART2RX_12 \
329  12
330 #define UDMA_SEC_CHANNEL_UART2TX_13 \
331  13
332 #define UDMA_SEC_CHANNEL_TMR2A_14 \
333  14
334 #define UDMA_SEC_CHANNEL_TMR2B_15 \
335  15
336 #define UDMA_SEC_CHANNEL_TMR1A 18
337 #define UDMA_SEC_CHANNEL_TMR1B 19
338 #define UDMA_SEC_CHANNEL_EPI0RX 20
339 #define UDMA_SEC_CHANNEL_EPI0TX 21
340 #define UDMA_SEC_CHANNEL_ADC10 24
341 #define UDMA_SEC_CHANNEL_ADC11 25
342 #define UDMA_SEC_CHANNEL_ADC12 26
343 #define UDMA_SEC_CHANNEL_ADC13 27
344 #define UDMA_SEC_CHANNEL_SW 30
345 
346 //*****************************************************************************
347 //
348 // Values that can be passed to uDMAChannelAssign() to select peripheral
349 // mapping for each channel. The channels named RESERVED may be assigned
350 // to a peripheral in future parts.
351 //
352 //*****************************************************************************
353 //
354 // Channel 0
355 //
356 #define UDMA_CH0_USB0EP1RX 0x00000000
357 #define UDMA_CH0_UART2RX 0x00010000
358 #define UDMA_CH0_RESERVED2 0x00020000
359 #define UDMA_CH0_TIMER4A 0x00030000
360 #define UDMA_CH0_RESERVED4 0x00040000
361 #define UDMA_CH0_RESERVED5 0x00050000
362 #define UDMA_CH0_I2C0RX 0x00060000
363 #define UDMA_CH0_RESERVED7 0x00070000
364 #define UDMA_CH0_RESERVED8 0x00080000
365 
366 //
367 // Channel 1
368 //
369 #define UDMA_CH1_USB0EP1TX 0x00000001
370 #define UDMA_CH1_UART2TX 0x00010001
371 #define UDMA_CH1_RESERVED2 0x00020001
372 #define UDMA_CH1_TIMER4B 0x00030001
373 #define UDMA_CH1_RESERVED4 0x00040001
374 #define UDMA_CH1_RESERVED5 0x00050001
375 #define UDMA_CH1_I2C0TX 0x00060001
376 #define UDMA_CH1_RESERVED7 0x00070001
377 #define UDMA_CH1_RESERVED8 0x00080001
378 
379 //
380 // Channel 2
381 //
382 #define UDMA_CH2_USB0EP2RX 0x00000002
383 #define UDMA_CH2_TIMER3A 0x00010002
384 #define UDMA_CH2_RESERVED2 0x00020002
385 #define UDMA_CH2_RESERVED3 0x00030002
386 #define UDMA_CH2_RESERVED4 0x00040002
387 #define UDMA_CH2_RESERVED5 0x00050002
388 #define UDMA_CH2_I2C1RX 0x00060002
389 #define UDMA_CH2_RESERVED7 0x00070002
390 #define UDMA_CH2_RESERVED8 0x00080002
391 
392 //
393 // Channel 3
394 //
395 #define UDMA_CH3_USB0EP2TX 0x00000003
396 #define UDMA_CH3_TIMER3B 0x00010003
397 #define UDMA_CH3_RESERVED2 0x00020003
398 #define UDMA_CH3_LPC0_3 0x00030003
399 #define UDMA_CH3_RESERVED4 0x00040003
400 #define UDMA_CH3_RESERVED5 0x00050003
401 #define UDMA_CH3_I2C1TX 0x00060003
402 #define UDMA_CH3_RESERVED7 0x00070003
403 #define UDMA_CH3_RESERVED8 0x00080003
404 
405 //
406 // Channel 4
407 //
408 #define UDMA_CH4_USB0EP3RX 0x00000004
409 #define UDMA_CH4_TIMER2A 0x00010004
410 #define UDMA_CH4_RESERVED2 0x00020004
411 #define UDMA_CH4_GPIOA 0x00030004
412 #define UDMA_CH4_RESERVED4 0x00040004
413 #define UDMA_CH4_SHAMD50CIN 0x00050004
414 #define UDMA_CH4_I2C2RX 0x00060004
415 #define UDMA_CH4_RESERVED7 0x00070004
416 #define UDMA_CH4_RESERVED8 0x00080004
417 
418 //
419 // Channel 5
420 //
421 #define UDMA_CH5_USB0EP3TX 0x00000005
422 #define UDMA_CH5_TIMER2B 0x00010005
423 #define UDMA_CH5_RESERVED2 0x00020005
424 #define UDMA_CH5_GPIOB 0x00030005
425 #define UDMA_CH5_RESERVED4 0x00040005
426 #define UDMA_CH5_SHAMD50DIN 0x00050005
427 #define UDMA_CH5_I2C2TX 0x00060005
428 #define UDMA_CH5_RESERVED7 0x00070005
429 #define UDMA_CH5_RESERVED8 0x00080005
430 
431 //
432 // Channel 6
433 //
434 #define UDMA_CH6_RESERVED0 0x00000006
435 #define UDMA_CH6_ETH0RX 0x00000006
436 #define UDMA_CH6_TIMER2A 0x00010006
437 #define UDMA_CH6_UART5RX 0x00020006
438 #define UDMA_CH6_GPIOC 0x00030006
439 #define UDMA_CH6_I2C0RX 0x00040006
440 #define UDMA_CH6_SHAMD50COUT 0x00050006
441 #define UDMA_CH6_RESERVED6 0x00060006
442 #define UDMA_CH6_RESERVED7 0x00070006
443 #define UDMA_CH6_RESERVED8 0x00080006
444 
445 //
446 // Channel 7
447 //
448 #define UDMA_CH7_RESERVED0 0x00000007
449 #define UDMA_CH7_ETH0TX 0x00000007
450 #define UDMA_CH7_TIMER2B 0x00010007
451 #define UDMA_CH7_UART5TX 0x00020007
452 #define UDMA_CH7_GPIOD 0x00030007
453 #define UDMA_CH7_I2C0TX 0x00040007
454 #define UDMA_CH7_RESERVED5 0x00050007
455 #define UDMA_CH7_RESERVED6 0x00060007
456 #define UDMA_CH7_RESERVED7 0x00070007
457 #define UDMA_CH7_RESERVED8 0x00080007
458 
459 //
460 // Channel 8
461 //
462 #define UDMA_CH8_UART0RX 0x00000008
463 #define UDMA_CH8_UART1RX 0x00010008
464 #define UDMA_CH8_RESERVED2 0x00020008
465 #define UDMA_CH8_TIMER5A 0x00030008
466 #define UDMA_CH8_I2C1RX 0x00040008
467 #define UDMA_CH8_RESERVED5 0x00050008
468 #define UDMA_CH8_RESERVED6 0x00060008
469 #define UDMA_CH8_RESERVED7 0x00070008
470 #define UDMA_CH8_RESERVED8 0x00080008
471 
472 //
473 // Channel 9
474 //
475 #define UDMA_CH9_UART0TX 0x00000009
476 #define UDMA_CH9_UART1TX 0x00010009
477 #define UDMA_CH9_RESERVED2 0x00020009
478 #define UDMA_CH9_TIMER5B 0x00030009
479 #define UDMA_CH9_I2C1TX 0x00040009
480 #define UDMA_CH9_RESERVED5 0x00050009
481 #define UDMA_CH9_RESERVED6 0x00060009
482 #define UDMA_CH9_RESERVED7 0x00070009
483 #define UDMA_CH9_RESERVED8 0x00080009
484 
485 //
486 // Channel 10
487 //
488 #define UDMA_CH10_SSI0RX 0x0000000A
489 #define UDMA_CH10_SSI1RX 0x0001000A
490 #define UDMA_CH10_UART6RX 0x0002000A
491 #define UDMA_CH10_WTIMER0A 0x0003000A
492 #define UDMA_CH10_I2C2RX 0x0004000A
493 #define UDMA_CH10_RESERVED5 0x0005000A
494 #define UDMA_CH10_RESERVED6 0x0006000A
495 #define UDMA_CH10_TIMER6A 0x0007000A
496 #define UDMA_CH10_RESERVED8 0x0008000A
497 
498 //
499 // Channel 11
500 //
501 #define UDMA_CH11_SSI0TX 0x0000000B
502 #define UDMA_CH11_SSI1TX 0x0001000B
503 #define UDMA_CH11_UART6TX 0x0002000B
504 #define UDMA_CH11_WTIMER0B 0x0003000B
505 #define UDMA_CH11_I2C2TX 0x0004000B
506 #define UDMA_CH11_RESERVED5 0x0005000B
507 #define UDMA_CH11_RESERVED6 0x0006000B
508 #define UDMA_CH11_TIMER6B 0x0007000B
509 #define UDMA_CH11_RESERVED8 0x0008000B
510 
511 //
512 // Channel 12
513 //
514 #define UDMA_CH12_RESERVED0 0x0000000C
515 #define UDMA_CH12_UART2RX 0x0001000C
516 #define UDMA_CH12_SSI2RX 0x0002000C
517 #define UDMA_CH12_WTIMER1A 0x0003000C
518 #define UDMA_CH12_GPIOK 0x0004000C
519 #define UDMA_CH12_AES0CIN 0x0005000C
520 #define UDMA_CH12_RESERVED6 0x0006000C
521 #define UDMA_CH12_TIMER7A 0x0007000C
522 #define UDMA_CH12_RESERVED8 0x0008000C
523 
524 //
525 // Channel 13
526 //
527 #define UDMA_CH13_RESERVED0 0x0000000D
528 #define UDMA_CH13_UART2TX 0x0001000D
529 #define UDMA_CH13_SSI2TX 0x0002000D
530 #define UDMA_CH13_WTIMER1B 0x0003000D
531 #define UDMA_CH13_GPIOL 0x0004000D
532 #define UDMA_CH13_AES0COUT 0x0005000D
533 #define UDMA_CH13_RESERVED6 0x0006000D
534 #define UDMA_CH13_TIMER7B 0x0007000D
535 #define UDMA_CH13_RESERVED8 0x0008000D
536 
537 //
538 // Channel 14
539 //
540 #define UDMA_CH14_ADC0_0 0x0000000E
541 #define UDMA_CH14_TIMER2A 0x0001000E
542 #define UDMA_CH14_SSI3RX 0x0002000E
543 #define UDMA_CH14_GPIOE 0x0003000E
544 #define UDMA_CH14_GPIOM 0x0004000E
545 #define UDMA_CH14_AES0DIN 0x0005000E
546 #define UDMA_CH14_RESERVED6 0x0006000E
547 #define UDMA_CH14_RESERVED7 0x0007000E
548 #define UDMA_CH14_RESERVED8 0x0008000E
549 
550 //
551 // Channel 15
552 //
553 #define UDMA_CH15_ADC0_1 0x0000000F
554 #define UDMA_CH15_TIMER2B 0x0001000F
555 #define UDMA_CH15_SSI3TX 0x0002000F
556 #define UDMA_CH15_GPIOF 0x0003000F
557 #define UDMA_CH15_GPION 0x0004000F
558 #define UDMA_CH15_AES0DOUT 0x0005000F
559 #define UDMA_CH15_RESERVED6 0x0006000F
560 #define UDMA_CH15_RESERVED7 0x0007000F
561 #define UDMA_CH15_RESERVED8 0x0008000F
562 
563 //
564 // Channel 16
565 //
566 #define UDMA_CH16_ADC0_2 0x00000010
567 #define UDMA_CH16_RESERVED1 0x00010010
568 #define UDMA_CH16_UART3RX 0x00020010
569 #define UDMA_CH16_WTIMER2A 0x00030010
570 #define UDMA_CH16_GPIOP 0x00040010
571 #define UDMA_CH16_RESERVED5 0x00050010
572 #define UDMA_CH16_RESERVED6 0x00060010
573 #define UDMA_CH16_RESERVED7 0x00070010
574 #define UDMA_CH16_RESERVED8 0x00080010
575 
576 //
577 // Channel 17
578 //
579 #define UDMA_CH17_ADC0_3 0x00000011
580 #define UDMA_CH17_RESERVED1 0x00010011
581 #define UDMA_CH17_UART3TX 0x00020011
582 #define UDMA_CH17_WTIMER2B 0x00030011
583 #define UDMA_CH17_RESERVED4 0x00040011
584 #define UDMA_CH17_RESERVED5 0x00050011
585 #define UDMA_CH17_RESERVED6 0x00060011
586 #define UDMA_CH17_RESERVED7 0x00070011
587 #define UDMA_CH17_RESERVED8 0x00080011
588 
589 //
590 // Channel 18
591 //
592 #define UDMA_CH18_TIMER0A 0x00000012
593 #define UDMA_CH18_TIMER1A 0x00010012
594 #define UDMA_CH18_UART4RX 0x00020012
595 #define UDMA_CH18_GPIOB 0x00030012
596 #define UDMA_CH18_I2C3RX 0x00040012
597 #define UDMA_CH18_RESERVED5 0x00050012
598 #define UDMA_CH18_RESERVED6 0x00060012
599 #define UDMA_CH18_RESERVED7 0x00070012
600 #define UDMA_CH18_RESERVED8 0x00080012
601 
602 //
603 // Channel 19
604 //
605 #define UDMA_CH19_TIMER0B 0x00000013
606 #define UDMA_CH19_TIMER1B 0x00010013
607 #define UDMA_CH19_UART4TX 0x00020013
608 #define UDMA_CH19_GPIOG 0x00030013
609 #define UDMA_CH19_I2C3TX 0x00040013
610 #define UDMA_CH19_RESERVED5 0x00050013
611 #define UDMA_CH19_RESERVED6 0x00060013
612 #define UDMA_CH19_RESERVED7 0x00070013
613 #define UDMA_CH19_RESERVED8 0x00080013
614 
615 //
616 // Channel 20
617 //
618 #define UDMA_CH20_TIMER1A 0x00000014
619 #define UDMA_CH20_RESERVED1 0x00010014
620 #define UDMA_CH20_EPI0RX 0x00010014
621 #define UDMA_CH20_UART7RX 0x00020014
622 #define UDMA_CH20_GPIOH 0x00030014
623 #define UDMA_CH20_I2C4RX 0x00040014
624 #define UDMA_CH20_DES0CIN 0x00050014
625 #define UDMA_CH20_RESERVED6 0x00060014
626 #define UDMA_CH20_RESERVED7 0x00070014
627 #define UDMA_CH20_RESERVED8 0x00080014
628 
629 //
630 // Channel 21
631 //
632 #define UDMA_CH21_TIMER1B 0x00000015
633 #define UDMA_CH21_RESERVED1 0x00010015
634 #define UDMA_CH21_EPI0TX 0x00010015
635 #define UDMA_CH21_UART7TX 0x00020015
636 #define UDMA_CH21_GPIOJ 0x00030015
637 #define UDMA_CH21_I2C4TX 0x00040015
638 #define UDMA_CH21_DES0DIN 0x00050015
639 #define UDMA_CH21_RESERVED6 0x00060015
640 #define UDMA_CH21_RESERVED7 0x00070015
641 #define UDMA_CH21_RESERVED8 0x00080015
642 
643 //
644 // Channel 22
645 //
646 #define UDMA_CH22_UART1RX 0x00000016
647 #define UDMA_CH22_RESERVED1 0x00010016
648 #define UDMA_CH22_RESERVED2 0x00020016
649 #define UDMA_CH22_LPC0_2 0x00030016
650 #define UDMA_CH22_I2C5RX 0x00040016
651 #define UDMA_CH22_DES0DOUT 0x00050016
652 #define UDMA_CH22_RESERVED6 0x00060016
653 #define UDMA_CH22_RESERVED7 0x00070016
654 #define UDMA_CH22_I2C8RX 0x00080016
655 
656 //
657 // Channel 23
658 //
659 #define UDMA_CH23_UART1TX 0x00000017
660 #define UDMA_CH23_RESERVED1 0x00010017
661 #define UDMA_CH23_RESERVED2 0x00020017
662 #define UDMA_CH23_LPC0_1 0x00030017
663 #define UDMA_CH23_I2C5TX 0x00040017
664 #define UDMA_CH23_RESERVED5 0x00050017
665 #define UDMA_CH23_RESERVED6 0x00060017
666 #define UDMA_CH23_RESERVED7 0x00070017
667 #define UDMA_CH23_I2C8TX 0x00080017
668 
669 //
670 // Channel 24
671 //
672 #define UDMA_CH24_SSI1RX 0x00000018
673 #define UDMA_CH24_ADC1_0 0x00010018
674 #define UDMA_CH24_RESERVED2 0x00020018
675 #define UDMA_CH24_WTIMER3A 0x00030018
676 #define UDMA_CH24_GPIOQ 0x00040018
677 #define UDMA_CH24_RESERVED5 0x00050018
678 #define UDMA_CH24_RESERVED6 0x00060018
679 #define UDMA_CH24_RESERVED7 0x00070018
680 #define UDMA_CH24_I2C9RX 0x00080018
681 
682 //
683 // Channel 25
684 //
685 #define UDMA_CH25_SSI1TX 0x00000019
686 #define UDMA_CH25_ADC1_1 0x00010019
687 #define UDMA_CH25_RESERVED2 0x00020019
688 #define UDMA_CH25_WTIMER3B 0x00030019
689 #define UDMA_CH25_RESERVED4 0x00040019
690 #define UDMA_CH25_RESERVED5 0x00050019
691 #define UDMA_CH25_RESERVED6 0x00060019
692 #define UDMA_CH25_RESERVED7 0x00070019
693 #define UDMA_CH25_I2C9TX 0x00080019
694 
695 //
696 // Channel 26
697 //
698 #define UDMA_CH26_RESERVED0 0x0000001A
699 #define UDMA_CH26_ADC1_2 0x0001001A
700 #define UDMA_CH26_RESERVED2 0x0002001A
701 #define UDMA_CH26_WTIMER4A 0x0003001A
702 #define UDMA_CH26_RESERVED4 0x0004001A
703 #define UDMA_CH26_RESERVED5 0x0005001A
704 #define UDMA_CH26_RESERVED6 0x0006001A
705 #define UDMA_CH26_RESERVED7 0x0007001A
706 #define UDMA_CH26_I2C6RX 0x0008001A
707 
708 //
709 // Channel 27
710 //
711 #define UDMA_CH27_RESERVED0 0x0000001B
712 #define UDMA_CH27_ADC1_3 0x0001001B
713 #define UDMA_CH27_RESERVED2 0x0002001B
714 #define UDMA_CH27_WTIMER4B 0x0003001B
715 #define UDMA_CH27_RESERVED4 0x0004001B
716 #define UDMA_CH27_RESERVED5 0x0005001B
717 #define UDMA_CH27_RESERVED6 0x0006001B
718 #define UDMA_CH27_RESERVED7 0x0007001B
719 #define UDMA_CH27_I2C6TX 0x0008001B
720 
721 //
722 // Channel 28
723 //
724 #define UDMA_CH28_RESERVED0 0x0000001C
725 #define UDMA_CH28_RESERVED1 0x0001001C
726 #define UDMA_CH28_RESERVED2 0x0002001C
727 #define UDMA_CH28_WTIMER5A 0x0003001C
728 #define UDMA_CH28_RESERVED4 0x0004001C
729 #define UDMA_CH28_RESERVED5 0x0005001C
730 #define UDMA_CH28_RESERVED6 0x0006001C
731 #define UDMA_CH28_RESERVED7 0x0007001C
732 #define UDMA_CH28_I2C7RX 0x0008001C
733 
734 //
735 // Channel 29
736 //
737 #define UDMA_CH29_RESERVED0 0x0000001D
738 #define UDMA_CH29_RESERVED1 0x0001001D
739 #define UDMA_CH29_RESERVED2 0x0002001D
740 #define UDMA_CH29_WTIMER5B 0x0003001D
741 #define UDMA_CH29_RESERVED4 0x0004001D
742 #define UDMA_CH29_RESERVED5 0x0005001D
743 #define UDMA_CH29_RESERVED6 0x0006001D
744 #define UDMA_CH29_RESERVED7 0x0007001D
745 #define UDMA_CH29_I2C7TX 0x0008001D
746 
747 //
748 // Channel 30
749 //
750 #define UDMA_CH30_SW 0x0000001E
751 #define UDMA_CH30_RESERVED1 0x0001001E
752 #define UDMA_CH30_RESERVED2 0x0002001E
753 #define UDMA_CH30_RESERVED3 0x0003001E
754 #define UDMA_CH30_RESERVED4 0x0004001E
755 #define UDMA_CH30_RESERVED5 0x0005001E
756 #define UDMA_CH30_RESERVED6 0x0006001E
757 #define UDMA_CH30_EPI0RX 0x0007001E
758 #define UDMA_CH30_1WIRE0 0x0008001E
759 
760 //
761 // Channel 31
762 //
763 #define UDMA_CH31_RESERVED0 0x0000001F
764 #define UDMA_CH31_RESERVED1 0x0001001F
765 #define UDMA_CH31_RESERVED2 0x0002001F
766 #define UDMA_CH31_LPC0_0 0x0003001F
767 #define UDMA_CH31_RESERVED4 0x0004001F
768 #define UDMA_CH31_RESERVED5 0x0005001F
769 #define UDMA_CH31_RESERVED6 0x0006001F
770 #define UDMA_CH31_EPI0RX 0x0007001F
771 #define UDMA_CH31_RESERVED8 0x0008001F
772 
773 //*****************************************************************************
774 //
775 // API Function prototypes
776 //
777 //*****************************************************************************
778 extern void uDMAEnable(void);
779 extern void uDMADisable(void);
780 extern uint32_t uDMAErrorStatusGet(void);
781 extern void uDMAErrorStatusClear(void);
782 extern void uDMAChannelEnable(uint32_t ui32ChannelNum);
783 extern void uDMAChannelDisable(uint32_t ui32ChannelNum);
784 extern bool uDMAChannelIsEnabled(uint32_t ui32ChannelNum);
785 extern void uDMAControlBaseSet(void *pControlTable);
786 extern void *uDMAControlBaseGet(void);
787 extern void *uDMAControlAlternateBaseGet(void);
788 extern void uDMAChannelRequest(uint32_t ui32ChannelNum);
789 extern void uDMAChannelAttributeEnable(uint32_t ui32ChannelNum,
790  uint32_t ui32Attr);
791 extern void uDMAChannelAttributeDisable(uint32_t ui32ChannelNum,
792  uint32_t ui32Attr);
793 extern uint32_t uDMAChannelAttributeGet(uint32_t ui32ChannelNum);
794 extern void uDMAChannelControlSet(uint32_t ui32ChannelStructIndex,
795  uint32_t ui32Control);
796 extern void uDMAChannelTransferSet(uint32_t ui32ChannelStructIndex,
797  uint32_t ui32Mode, void *pvSrcAddr,
798  void *pvDstAddr, uint32_t ui32TransferSize);
799 extern void uDMAChannelScatterGatherSet(uint32_t ui32ChannelNum,
800  uint32_t ui32TaskCount,
801  void *pvTaskList,
802  uint32_t ui32IsPeriphSG);
803 extern uint32_t uDMAChannelSizeGet(uint32_t ui32ChannelStructIndex);
804 extern uint32_t uDMAChannelModeGet(uint32_t ui32ChannelStructIndex);
805 extern void uDMAIntRegister(uint32_t ui32IntChannel, void (*pfnHandler)(void));
806 extern void uDMAIntUnregister(uint32_t ui32IntChannel);
807 extern uint32_t uDMAIntStatus(void);
808 extern void uDMAIntClear(uint32_t ui32ChanMask);
809 extern void uDMAChannelAssign(uint32_t ui32Mapping);
810 
811 //*****************************************************************************
812 //
813 // The following functions and definitions are deprecated and will be removed
814 // from the API in the future. Use uDMAChannelAssign() instead to accomplish
815 // the same end.
816 //
817 //*****************************************************************************
818 #ifndef DEPRECATED
819 //*****************************************************************************
820 //
821 // uDMA default/secondary peripheral selections, to be passed to
822 // uDMAChannelSelectSecondary() and uDMAChannelSelectDefault().
823 //
824 //*****************************************************************************
825 #define UDMA_DEF_USBEP1RX_SEC_UART2RX \
826  0x00000001
827 #define UDMA_DEF_USBEP1TX_SEC_UART2TX \
828  0x00000002
829 #define UDMA_DEF_USBEP2RX_SEC_TMR3A \
830  0x00000004
831 #define UDMA_DEF_USBEP2TX_SEC_TMR3B \
832  0x00000008
833 #define UDMA_DEF_USBEP3RX_SEC_TMR2A \
834  0x00000010
835 #define UDMA_DEF_USBEP3TX_SEC_TMR2B \
836  0x00000020
837 #define UDMA_DEF_ETH0RX_SEC_TMR2A \
838  0x00000040
839 #define UDMA_DEF_ETH0TX_SEC_TMR2B \
840  0x00000080
841 #define UDMA_DEF_UART0RX_SEC_UART1RX \
842  0x00000100
843 #define UDMA_DEF_UART0TX_SEC_UART1TX \
844  0x00000200
845 #define UDMA_DEF_SSI0RX_SEC_SSI1RX \
846  0x00000400
847 #define UDMA_DEF_SSI0TX_SEC_SSI1TX \
848  0x00000800
849 #define UDMA_DEF_RESERVED_SEC_UART2RX \
850  0x00001000
851 #define UDMA_DEF_RESERVED_SEC_UART2TX \
852  0x00002000
853 #define UDMA_DEF_ADC00_SEC_TMR2A \
854  0x00004000
855 #define UDMA_DEF_ADC01_SEC_TMR2B \
856  0x00008000
857 #define UDMA_DEF_ADC02_SEC_RESERVED \
858  0x00010000
859 #define UDMA_DEF_ADC03_SEC_RESERVED \
860  0x00020000
861 #define UDMA_DEF_TMR0A_SEC_TMR1A \
862  0x00040000
863 #define UDMA_DEF_TMR0B_SEC_TMR1B \
864  0x00080000
865 #define UDMA_DEF_TMR1A_SEC_EPI0RX \
866  0x00100000
867 #define UDMA_DEF_TMR1B_SEC_EPI0TX \
868  0x00200000
869 #define UDMA_DEF_UART1RX_SEC_RESERVED \
870  0x00400000
871 #define UDMA_DEF_UART1TX_SEC_RESERVED \
872  0x00800000
873 #define UDMA_DEF_SSI1RX_SEC_ADC10 \
874  0x01000000
875 #define UDMA_DEF_SSI1TX_SEC_ADC11 \
876  0x02000000
877 #define UDMA_DEF_RESERVED_SEC_ADC12 \
878  0x04000000
879 #define UDMA_DEF_RESERVED_SEC_ADC13 \
880  0x08000000
881 #define UDMA_DEF_I2S0RX_SEC_RESERVED \
882  0x10000000
883 #define UDMA_DEF_I2S0TX_SEC_RESERVED \
884  0x20000000
885 
886 extern void uDMAChannelSelectDefault(uint32_t ui32DefPeriphs);
887 extern void uDMAChannelSelectSecondary(uint32_t ui32SecPeriphs);
888 
889 #endif
890 //*****************************************************************************
891 //
892 // Mark the end of the C bindings section for C++ compilers.
893 //
894 //*****************************************************************************
895 #ifdef __cplusplus
896 }
897 #endif
898 
899 #endif // __DRIVERLIB_UDMA_H__
uint32_t uDMAChannelModeGet(uint32_t ui32ChannelStructIndex)
Definition: udma.c:1018
volatile void * pvSrcEndAddr
Definition: udma.h:73
void uDMAEnable(void)
Definition: udma.c:67
void uDMAChannelAssign(uint32_t ui32Mapping)
Definition: udma.c:1224
uint32_t uDMAChannelSizeGet(uint32_t ui32ChannelStructIndex)
Definition: udma.c:948
void uDMAIntUnregister(uint32_t ui32IntChannel)
Definition: udma.c:1130
void uDMAChannelTransferSet(uint32_t ui32ChannelStructIndex, uint32_t ui32Mode, void *pvSrcAddr, void *pvDstAddr, uint32_t ui32TransferSize)
Definition: udma.c:710
void uDMAChannelSelectDefault(uint32_t ui32DefPeriphs)
Definition: udma.c:1370
uint32_t uDMAIntStatus(void)
Definition: udma.c:1163
void uDMAChannelAttributeEnable(uint32_t ui32ChannelNum, uint32_t ui32Attr)
Definition: udma.c:356
void uDMAChannelSelectSecondary(uint32_t ui32SecPeriphs)
Definition: udma.c:1313
void uDMAChannelControlSet(uint32_t ui32ChannelStructIndex, uint32_t ui32Control)
Definition: udma.c:603
bool uDMAChannelIsEnabled(uint32_t ui32ChannelNum)
Definition: udma.c:206
volatile uint32_t ui32Spare
Definition: udma.h:88
uint32_t uDMAChannelAttributeGet(uint32_t ui32ChannelNum)
Definition: udma.c:500
void * uDMAControlAlternateBaseGet(void)
Definition: udma.c:290
void uDMAChannelRequest(uint32_t ui32ChannelNum)
Definition: udma.c:320
void uDMAChannelScatterGatherSet(uint32_t ui32ChannelNum, uint32_t ui32TaskCount, void *pvTaskList, uint32_t ui32IsPeriphSG)
Definition: udma.c:861
void uDMAChannelAttributeDisable(uint32_t ui32ChannelNum, uint32_t ui32Attr)
Definition: udma.c:429
volatile uint32_t ui32Control
Definition: udma.h:83
volatile void * pvDstEndAddr
Definition: udma.h:78
void uDMADisable(void)
Definition: udma.c:86
void uDMAChannelDisable(uint32_t ui32ChannelNum)
Definition: udma.c:179
void uDMAIntClear(uint32_t ui32ChanMask)
Definition: udma.c:1191
void * uDMAControlBaseGet(void)
Definition: udma.c:269
void uDMAIntRegister(uint32_t ui32IntChannel, void(*pfnHandler)(void))
Definition: udma.c:1092
uint32_t uDMAErrorStatusGet(void)
Definition: udma.c:106
void uDMAErrorStatusClear(void)
Definition: udma.c:126
void uDMAControlBaseSet(void *pControlTable)
Definition: udma.c:242
void uDMAChannelEnable(uint32_t ui32ChannelNum)
Definition: udma.c:152