123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890 |
- //*****************************************************************************
- //
- // udma.h - Prototypes and macros for the uDMA controller.
- //
- // Copyright (c) 2007-2020 Texas Instruments Incorporated. All rights reserved.
- // Software License Agreement
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions
- // are met:
- //
- // Redistributions of source code must retain the above copyright
- // notice, this list of conditions and the following disclaimer.
- //
- // Redistributions in binary form must reproduce the above copyright
- // notice, this list of conditions and the following disclaimer in the
- // documentation and/or other materials provided with the
- // distribution.
- //
- // Neither the name of Texas Instruments Incorporated nor the names of
- // its contributors may be used to endorse or promote products derived
- // from this software without specific prior written permission.
- //
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- //
- // This is part of revision 2.2.0.295 of the Tiva Peripheral Driver Library.
- //
- //*****************************************************************************
- #ifndef __DRIVERLIB_UDMA_H__
- #define __DRIVERLIB_UDMA_H__
- //*****************************************************************************
- //
- // If building with a C++ compiler, make all of the definitions in this header
- // have a C binding.
- //
- //*****************************************************************************
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- //*****************************************************************************
- //
- //! \addtogroup udma_api
- //! @{
- //
- //*****************************************************************************
- //*****************************************************************************
- //
- // A structure that defines an entry in the channel control table. These
- // fields are used by the uDMA controller and normally it is not necessary for
- // software to directly read or write fields in the table.
- //
- //*****************************************************************************
- typedef struct
- {
- //
- // The ending source address of the data transfer.
- //
- volatile void *pvSrcEndAddr;
- //
- // The ending destination address of the data transfer.
- //
- volatile void *pvDstEndAddr;
- //
- // The channel control mode.
- //
- volatile uint32_t ui32Control;
- //
- // An unused location.
- //
- volatile uint32_t ui32Spare;
- }
- tDMAControlTable;
- //*****************************************************************************
- //
- //! A helper macro for building scatter-gather task table entries.
- //!
- //! \param ui32TransferCount is the count of items to transfer for this task.
- //! \param ui32ItemSize is the bit size of the items to transfer for this task.
- //! \param ui32SrcIncrement is the bit size increment for source data.
- //! \param pvSrcAddr is the starting address of the data to transfer.
- //! \param ui32DstIncrement is the bit size increment for destination data.
- //! \param pvDstAddr is the starting address of the destination data.
- //! \param ui32ArbSize is the arbitration size to use for the transfer task.
- //! \param ui32Mode is the transfer mode for this task.
- //!
- //! This macro is intended to be used to help populate a table of uDMA tasks
- //! for a scatter-gather transfer. This macro will calculate the values for
- //! the fields of a task structure entry based on the input parameters.
- //!
- //! There are specific requirements for the values of each parameter. No
- //! checking is done so it is up to the caller to ensure that correct values
- //! are used for the parameters.
- //!
- //! The \e ui32TransferCount parameter is the number of items that will be
- //! transferred by this task. It must be in the range 1-1024.
- //!
- //! The \e ui32ItemSize parameter is the bit size of the transfer data. It
- //! must be one of \b UDMA_SIZE_8, \b UDMA_SIZE_16, or \b UDMA_SIZE_32.
- //!
- //! The \e ui32SrcIncrement parameter is the increment size for the source
- //! data. It must be one of \b UDMA_SRC_INC_8, \b UDMA_SRC_INC_16,
- //! \b UDMA_SRC_INC_32, or \b UDMA_SRC_INC_NONE.
- //!
- //! The \e pvSrcAddr parameter is a void pointer to the beginning of the source
- //! data.
- //!
- //! The \e ui32DstIncrement parameter is the increment size for the destination
- //! data. It must be one of \b UDMA_DST_INC_8, \b UDMA_DST_INC_16,
- //! \b UDMA_DST_INC_32, or \b UDMA_DST_INC_NONE.
- //!
- //! The \e pvDstAddr parameter is a void pointer to the beginning of the
- //! location where the data will be transferred.
- //!
- //! The \e ui32ArbSize parameter is the arbitration size for the transfer, and
- //! must be one of \b UDMA_ARB_1, \b UDMA_ARB_2, \b UDMA_ARB_4, and so on
- //! up to \b UDMA_ARB_1024. This is used to select the arbitration size in
- //! powers of 2, from 1 to 1024.
- //!
- //! The \e ui32Mode parameter is the mode to use for this transfer task. It
- //! must be one of \b UDMA_MODE_BASIC, \b UDMA_MODE_AUTO,
- //! \b UDMA_MODE_MEM_SCATTER_GATHER, or \b UDMA_MODE_PER_SCATTER_GATHER. Note
- //! that normally all tasks will be one of the scatter-gather modes while the
- //! last task is a task list will be AUTO or BASIC.
- //!
- //! This macro is intended to be used to initialize individual entries of
- //! a structure of tDMAControlTable type, like this:
- //!
- //! \verbatim
- //! tDMAControlTable MyTaskList[] =
- //! {
- //! uDMATaskStructEntry(Task1Count, UDMA_SIZE_8,
- //! UDMA_SRC_INC_8, MySourceBuf,
- //! UDMA_DST_INC_8, MyDestBuf,
- //! UDMA_ARB_8, UDMA_MODE_MEM_SCATTER_GATHER),
- //! uDMATaskStructEntry(Task2Count, ...),
- //! }
- //! \endverbatim
- //!
- //! \return Nothing; this is not a function.
- //
- //*****************************************************************************
- #define uDMATaskStructEntry(ui32TransferCount, \
- ui32ItemSize, \
- ui32SrcIncrement, \
- pvSrcAddr, \
- ui32DstIncrement, \
- pvDstAddr, \
- ui32ArbSize, \
- ui32Mode) \
- { \
- (((ui32SrcIncrement) == UDMA_SRC_INC_NONE) ? (void *)(pvSrcAddr) : \
- ((void *)(&((uint8_t *)(pvSrcAddr))[((ui32TransferCount) << \
- ((ui32SrcIncrement) >> 26)) - 1]))), \
- (((ui32DstIncrement) == UDMA_DST_INC_NONE) ? (void *)(pvDstAddr) :\
- ((void *)(&((uint8_t *)(pvDstAddr))[((ui32TransferCount) << \
- ((ui32DstIncrement) >> 30)) - 1]))), \
- (ui32SrcIncrement) | (ui32DstIncrement) | (ui32ItemSize) | \
- (ui32ArbSize) | \
- (((ui32TransferCount) - 1) << 4) | \
- ((((ui32Mode) == UDMA_MODE_MEM_SCATTER_GATHER) || \
- ((ui32Mode) == UDMA_MODE_PER_SCATTER_GATHER)) ? \
- (ui32Mode) | UDMA_MODE_ALT_SELECT : (ui32Mode)), 0 \
- }
- //*****************************************************************************
- //
- // Close the Doxygen group.
- //! @}
- //
- //*****************************************************************************
- //*****************************************************************************
- //
- // Flags that can be passed to uDMAChannelAttributeEnable(),
- // uDMAChannelAttributeDisable(), and returned from uDMAChannelAttributeGet().
- //
- //*****************************************************************************
- #define UDMA_ATTR_USEBURST 0x00000001
- #define UDMA_ATTR_ALTSELECT 0x00000002
- #define UDMA_ATTR_HIGH_PRIORITY 0x00000004
- #define UDMA_ATTR_REQMASK 0x00000008
- #define UDMA_ATTR_ALL 0x0000000F
- //*****************************************************************************
- //
- // DMA control modes that can be passed to uDMAModeSet() and returned
- // uDMAModeGet().
- //
- //*****************************************************************************
- #define UDMA_MODE_STOP 0x00000000
- #define UDMA_MODE_BASIC 0x00000001
- #define UDMA_MODE_AUTO 0x00000002
- #define UDMA_MODE_PINGPONG 0x00000003
- #define UDMA_MODE_MEM_SCATTER_GATHER \
- 0x00000004
- #define UDMA_MODE_PER_SCATTER_GATHER \
- 0x00000006
- #define UDMA_MODE_ALT_SELECT 0x00000001
- //*****************************************************************************
- //
- // Channel configuration values that can be passed to uDMAControlSet().
- //
- //*****************************************************************************
- #define UDMA_DST_INC_8 0x00000000
- #define UDMA_DST_INC_16 0x40000000
- #define UDMA_DST_INC_32 0x80000000
- #define UDMA_DST_INC_NONE 0xc0000000
- #define UDMA_SRC_INC_8 0x00000000
- #define UDMA_SRC_INC_16 0x04000000
- #define UDMA_SRC_INC_32 0x08000000
- #define UDMA_SRC_INC_NONE 0x0c000000
- #define UDMA_SIZE_8 0x00000000
- #define UDMA_SIZE_16 0x11000000
- #define UDMA_SIZE_32 0x22000000
- #define UDMA_DST_PROT_PRIV 0x00200000
- #define UDMA_SRC_PROT_PRIV 0x00040000
- #define UDMA_ARB_1 0x00000000
- #define UDMA_ARB_2 0x00004000
- #define UDMA_ARB_4 0x00008000
- #define UDMA_ARB_8 0x0000c000
- #define UDMA_ARB_16 0x00010000
- #define UDMA_ARB_32 0x00014000
- #define UDMA_ARB_64 0x00018000
- #define UDMA_ARB_128 0x0001c000
- #define UDMA_ARB_256 0x00020000
- #define UDMA_ARB_512 0x00024000
- #define UDMA_ARB_1024 0x00028000
- #define UDMA_NEXT_USEBURST 0x00000008
- //*****************************************************************************
- //
- // Channel numbers to be passed to API functions that require a channel number
- // ID.
- //
- //*****************************************************************************
- #define UDMA_CHANNEL_USBEP1RX 0
- #define UDMA_CHANNEL_USBEP1TX 1
- #define UDMA_CHANNEL_USBEP2RX 2
- #define UDMA_CHANNEL_USBEP2TX 3
- #define UDMA_CHANNEL_USBEP3RX 4
- #define UDMA_CHANNEL_USBEP3TX 5
- #define UDMA_CHANNEL_ETH0RX 6
- #define UDMA_CHANNEL_ETH0TX 7
- #define UDMA_CHANNEL_UART0RX 8
- #define UDMA_CHANNEL_UART0TX 9
- #define UDMA_CHANNEL_SSI0RX 10
- #define UDMA_CHANNEL_SSI0TX 11
- #define UDMA_CHANNEL_ADC0 14
- #define UDMA_CHANNEL_ADC1 15
- #define UDMA_CHANNEL_ADC2 16
- #define UDMA_CHANNEL_ADC3 17
- #define UDMA_CHANNEL_TMR0A 18
- #define UDMA_CHANNEL_TMR0B 19
- #define UDMA_CHANNEL_TMR1A 20
- #define UDMA_CHANNEL_TMR1B 21
- #define UDMA_CHANNEL_UART1RX 22
- #define UDMA_CHANNEL_UART1TX 23
- #define UDMA_CHANNEL_SSI1RX 24
- #define UDMA_CHANNEL_SSI1TX 25
- #define UDMA_CHANNEL_I2S0RX 28
- #define UDMA_CHANNEL_I2S0TX 29
- #define UDMA_CHANNEL_SW 30
- //*****************************************************************************
- //
- // Flags to be OR'd with the channel ID to indicate if the primary or alternate
- // control structure should be used.
- //
- //*****************************************************************************
- #define UDMA_PRI_SELECT 0x00000000
- #define UDMA_ALT_SELECT 0x00000020
- //*****************************************************************************
- //
- // Channel numbers to be passed to API functions that require a channel number
- // ID. These are for secondary peripheral assignments.
- //
- //*****************************************************************************
- #define UDMA_SEC_CHANNEL_UART2RX_0 \
- 0
- #define UDMA_SEC_CHANNEL_UART2TX_1 \
- 1
- #define UDMA_SEC_CHANNEL_TMR3A 2
- #define UDMA_SEC_CHANNEL_TMR3B 3
- #define UDMA_SEC_CHANNEL_TMR2A_4 \
- 4
- #define UDMA_SEC_CHANNEL_TMR2B_5 \
- 5
- #define UDMA_SEC_CHANNEL_TMR2A_6 \
- 6
- #define UDMA_SEC_CHANNEL_TMR2B_7 \
- 7
- #define UDMA_SEC_CHANNEL_UART1RX \
- 8
- #define UDMA_SEC_CHANNEL_UART1TX \
- 9
- #define UDMA_SEC_CHANNEL_SSI1RX 10
- #define UDMA_SEC_CHANNEL_SSI1TX 11
- #define UDMA_SEC_CHANNEL_UART2RX_12 \
- 12
- #define UDMA_SEC_CHANNEL_UART2TX_13 \
- 13
- #define UDMA_SEC_CHANNEL_TMR2A_14 \
- 14
- #define UDMA_SEC_CHANNEL_TMR2B_15 \
- 15
- #define UDMA_SEC_CHANNEL_TMR1A 18
- #define UDMA_SEC_CHANNEL_TMR1B 19
- #define UDMA_SEC_CHANNEL_EPI0RX 20
- #define UDMA_SEC_CHANNEL_EPI0TX 21
- #define UDMA_SEC_CHANNEL_ADC10 24
- #define UDMA_SEC_CHANNEL_ADC11 25
- #define UDMA_SEC_CHANNEL_ADC12 26
- #define UDMA_SEC_CHANNEL_ADC13 27
- #define UDMA_SEC_CHANNEL_SW 30
- //*****************************************************************************
- //
- // Values that can be passed to uDMAChannelAssign() to select peripheral
- // mapping for each channel. The channels named RESERVED may be assigned
- // to a peripheral in future parts.
- //
- //*****************************************************************************
- //
- // Channel 0
- //
- #define UDMA_CH0_USB0EP1RX 0x00000000
- #define UDMA_CH0_UART2RX 0x00010000
- #define UDMA_CH0_RESERVED2 0x00020000
- #define UDMA_CH0_TIMER4A 0x00030000
- #define UDMA_CH0_RESERVED4 0x00040000
- #define UDMA_CH0_RESERVED5 0x00050000
- #define UDMA_CH0_I2C0RX 0x00060000
- #define UDMA_CH0_RESERVED7 0x00070000
- #define UDMA_CH0_RESERVED8 0x00080000
- //
- // Channel 1
- //
- #define UDMA_CH1_USB0EP1TX 0x00000001
- #define UDMA_CH1_UART2TX 0x00010001
- #define UDMA_CH1_RESERVED2 0x00020001
- #define UDMA_CH1_TIMER4B 0x00030001
- #define UDMA_CH1_RESERVED4 0x00040001
- #define UDMA_CH1_RESERVED5 0x00050001
- #define UDMA_CH1_I2C0TX 0x00060001
- #define UDMA_CH1_RESERVED7 0x00070001
- #define UDMA_CH1_RESERVED8 0x00080001
- //
- // Channel 2
- //
- #define UDMA_CH2_USB0EP2RX 0x00000002
- #define UDMA_CH2_TIMER3A 0x00010002
- #define UDMA_CH2_RESERVED2 0x00020002
- #define UDMA_CH2_RESERVED3 0x00030002
- #define UDMA_CH2_RESERVED4 0x00040002
- #define UDMA_CH2_RESERVED5 0x00050002
- #define UDMA_CH2_I2C1RX 0x00060002
- #define UDMA_CH2_RESERVED7 0x00070002
- #define UDMA_CH2_RESERVED8 0x00080002
- //
- // Channel 3
- //
- #define UDMA_CH3_USB0EP2TX 0x00000003
- #define UDMA_CH3_TIMER3B 0x00010003
- #define UDMA_CH3_RESERVED2 0x00020003
- #define UDMA_CH3_LPC0_3 0x00030003
- #define UDMA_CH3_RESERVED4 0x00040003
- #define UDMA_CH3_RESERVED5 0x00050003
- #define UDMA_CH3_I2C1TX 0x00060003
- #define UDMA_CH3_RESERVED7 0x00070003
- #define UDMA_CH3_RESERVED8 0x00080003
- //
- // Channel 4
- //
- #define UDMA_CH4_USB0EP3RX 0x00000004
- #define UDMA_CH4_TIMER2A 0x00010004
- #define UDMA_CH4_RESERVED2 0x00020004
- #define UDMA_CH4_GPIOA 0x00030004
- #define UDMA_CH4_RESERVED4 0x00040004
- #define UDMA_CH4_SHAMD50CIN 0x00050004
- #define UDMA_CH4_I2C2RX 0x00060004
- #define UDMA_CH4_RESERVED7 0x00070004
- #define UDMA_CH4_RESERVED8 0x00080004
- //
- // Channel 5
- //
- #define UDMA_CH5_USB0EP3TX 0x00000005
- #define UDMA_CH5_TIMER2B 0x00010005
- #define UDMA_CH5_RESERVED2 0x00020005
- #define UDMA_CH5_GPIOB 0x00030005
- #define UDMA_CH5_RESERVED4 0x00040005
- #define UDMA_CH5_SHAMD50DIN 0x00050005
- #define UDMA_CH5_I2C2TX 0x00060005
- #define UDMA_CH5_RESERVED7 0x00070005
- #define UDMA_CH5_RESERVED8 0x00080005
- //
- // Channel 6
- //
- #define UDMA_CH6_RESERVED0 0x00000006
- #define UDMA_CH6_ETH0RX 0x00000006
- #define UDMA_CH6_TIMER2A 0x00010006
- #define UDMA_CH6_UART5RX 0x00020006
- #define UDMA_CH6_GPIOC 0x00030006
- #define UDMA_CH6_I2C0RX 0x00040006
- #define UDMA_CH6_SHAMD50COUT 0x00050006
- #define UDMA_CH6_RESERVED6 0x00060006
- #define UDMA_CH6_RESERVED7 0x00070006
- #define UDMA_CH6_RESERVED8 0x00080006
- //
- // Channel 7
- //
- #define UDMA_CH7_RESERVED0 0x00000007
- #define UDMA_CH7_ETH0TX 0x00000007
- #define UDMA_CH7_TIMER2B 0x00010007
- #define UDMA_CH7_UART5TX 0x00020007
- #define UDMA_CH7_GPIOD 0x00030007
- #define UDMA_CH7_I2C0TX 0x00040007
- #define UDMA_CH7_RESERVED5 0x00050007
- #define UDMA_CH7_RESERVED6 0x00060007
- #define UDMA_CH7_RESERVED7 0x00070007
- #define UDMA_CH7_RESERVED8 0x00080007
- //
- // Channel 8
- //
- #define UDMA_CH8_UART0RX 0x00000008
- #define UDMA_CH8_UART1RX 0x00010008
- #define UDMA_CH8_RESERVED2 0x00020008
- #define UDMA_CH8_TIMER5A 0x00030008
- #define UDMA_CH8_I2C1RX 0x00040008
- #define UDMA_CH8_RESERVED5 0x00050008
- #define UDMA_CH8_RESERVED6 0x00060008
- #define UDMA_CH8_RESERVED7 0x00070008
- #define UDMA_CH8_RESERVED8 0x00080008
- //
- // Channel 9
- //
- #define UDMA_CH9_UART0TX 0x00000009
- #define UDMA_CH9_UART1TX 0x00010009
- #define UDMA_CH9_RESERVED2 0x00020009
- #define UDMA_CH9_TIMER5B 0x00030009
- #define UDMA_CH9_I2C1TX 0x00040009
- #define UDMA_CH9_RESERVED5 0x00050009
- #define UDMA_CH9_RESERVED6 0x00060009
- #define UDMA_CH9_RESERVED7 0x00070009
- #define UDMA_CH9_RESERVED8 0x00080009
- //
- // Channel 10
- //
- #define UDMA_CH10_SSI0RX 0x0000000A
- #define UDMA_CH10_SSI1RX 0x0001000A
- #define UDMA_CH10_UART6RX 0x0002000A
- #define UDMA_CH10_WTIMER0A 0x0003000A
- #define UDMA_CH10_I2C2RX 0x0004000A
- #define UDMA_CH10_RESERVED5 0x0005000A
- #define UDMA_CH10_RESERVED6 0x0006000A
- #define UDMA_CH10_TIMER6A 0x0007000A
- #define UDMA_CH10_RESERVED8 0x0008000A
- //
- // Channel 11
- //
- #define UDMA_CH11_SSI0TX 0x0000000B
- #define UDMA_CH11_SSI1TX 0x0001000B
- #define UDMA_CH11_UART6TX 0x0002000B
- #define UDMA_CH11_WTIMER0B 0x0003000B
- #define UDMA_CH11_I2C2TX 0x0004000B
- #define UDMA_CH11_RESERVED5 0x0005000B
- #define UDMA_CH11_RESERVED6 0x0006000B
- #define UDMA_CH11_TIMER6B 0x0007000B
- #define UDMA_CH11_RESERVED8 0x0008000B
- //
- // Channel 12
- //
- #define UDMA_CH12_RESERVED0 0x0000000C
- #define UDMA_CH12_UART2RX 0x0001000C
- #define UDMA_CH12_SSI2RX 0x0002000C
- #define UDMA_CH12_WTIMER1A 0x0003000C
- #define UDMA_CH12_GPIOK 0x0004000C
- #define UDMA_CH12_AES0CIN 0x0005000C
- #define UDMA_CH12_RESERVED6 0x0006000C
- #define UDMA_CH12_TIMER7A 0x0007000C
- #define UDMA_CH12_RESERVED8 0x0008000C
- //
- // Channel 13
- //
- #define UDMA_CH13_RESERVED0 0x0000000D
- #define UDMA_CH13_UART2TX 0x0001000D
- #define UDMA_CH13_SSI2TX 0x0002000D
- #define UDMA_CH13_WTIMER1B 0x0003000D
- #define UDMA_CH13_GPIOL 0x0004000D
- #define UDMA_CH13_AES0COUT 0x0005000D
- #define UDMA_CH13_RESERVED6 0x0006000D
- #define UDMA_CH13_TIMER7B 0x0007000D
- #define UDMA_CH13_RESERVED8 0x0008000D
- //
- // Channel 14
- //
- #define UDMA_CH14_ADC0_0 0x0000000E
- #define UDMA_CH14_TIMER2A 0x0001000E
- #define UDMA_CH14_SSI3RX 0x0002000E
- #define UDMA_CH14_GPIOE 0x0003000E
- #define UDMA_CH14_GPIOM 0x0004000E
- #define UDMA_CH14_AES0DIN 0x0005000E
- #define UDMA_CH14_RESERVED6 0x0006000E
- #define UDMA_CH14_RESERVED7 0x0007000E
- #define UDMA_CH14_RESERVED8 0x0008000E
- //
- // Channel 15
- //
- #define UDMA_CH15_ADC0_1 0x0000000F
- #define UDMA_CH15_TIMER2B 0x0001000F
- #define UDMA_CH15_SSI3TX 0x0002000F
- #define UDMA_CH15_GPIOF 0x0003000F
- #define UDMA_CH15_GPION 0x0004000F
- #define UDMA_CH15_AES0DOUT 0x0005000F
- #define UDMA_CH15_RESERVED6 0x0006000F
- #define UDMA_CH15_RESERVED7 0x0007000F
- #define UDMA_CH15_RESERVED8 0x0008000F
- //
- // Channel 16
- //
- #define UDMA_CH16_ADC0_2 0x00000010
- #define UDMA_CH16_RESERVED1 0x00010010
- #define UDMA_CH16_UART3RX 0x00020010
- #define UDMA_CH16_WTIMER2A 0x00030010
- #define UDMA_CH16_GPIOP 0x00040010
- #define UDMA_CH16_RESERVED5 0x00050010
- #define UDMA_CH16_RESERVED6 0x00060010
- #define UDMA_CH16_RESERVED7 0x00070010
- #define UDMA_CH16_RESERVED8 0x00080010
- //
- // Channel 17
- //
- #define UDMA_CH17_ADC0_3 0x00000011
- #define UDMA_CH17_RESERVED1 0x00010011
- #define UDMA_CH17_UART3TX 0x00020011
- #define UDMA_CH17_WTIMER2B 0x00030011
- #define UDMA_CH17_RESERVED4 0x00040011
- #define UDMA_CH17_RESERVED5 0x00050011
- #define UDMA_CH17_RESERVED6 0x00060011
- #define UDMA_CH17_RESERVED7 0x00070011
- #define UDMA_CH17_RESERVED8 0x00080011
- //
- // Channel 18
- //
- #define UDMA_CH18_TIMER0A 0x00000012
- #define UDMA_CH18_TIMER1A 0x00010012
- #define UDMA_CH18_UART4RX 0x00020012
- #define UDMA_CH18_GPIOB 0x00030012
- #define UDMA_CH18_I2C3RX 0x00040012
- #define UDMA_CH18_RESERVED5 0x00050012
- #define UDMA_CH18_RESERVED6 0x00060012
- #define UDMA_CH18_RESERVED7 0x00070012
- #define UDMA_CH18_RESERVED8 0x00080012
- //
- // Channel 19
- //
- #define UDMA_CH19_TIMER0B 0x00000013
- #define UDMA_CH19_TIMER1B 0x00010013
- #define UDMA_CH19_UART4TX 0x00020013
- #define UDMA_CH19_GPIOG 0x00030013
- #define UDMA_CH19_I2C3TX 0x00040013
- #define UDMA_CH19_RESERVED5 0x00050013
- #define UDMA_CH19_RESERVED6 0x00060013
- #define UDMA_CH19_RESERVED7 0x00070013
- #define UDMA_CH19_RESERVED8 0x00080013
- //
- // Channel 20
- //
- #define UDMA_CH20_TIMER1A 0x00000014
- #define UDMA_CH20_RESERVED1 0x00010014
- #define UDMA_CH20_EPI0RX 0x00010014
- #define UDMA_CH20_UART7RX 0x00020014
- #define UDMA_CH20_GPIOH 0x00030014
- #define UDMA_CH20_I2C4RX 0x00040014
- #define UDMA_CH20_DES0CIN 0x00050014
- #define UDMA_CH20_RESERVED6 0x00060014
- #define UDMA_CH20_RESERVED7 0x00070014
- #define UDMA_CH20_RESERVED8 0x00080014
- //
- // Channel 21
- //
- #define UDMA_CH21_TIMER1B 0x00000015
- #define UDMA_CH21_RESERVED1 0x00010015
- #define UDMA_CH21_EPI0TX 0x00010015
- #define UDMA_CH21_UART7TX 0x00020015
- #define UDMA_CH21_GPIOJ 0x00030015
- #define UDMA_CH21_I2C4TX 0x00040015
- #define UDMA_CH21_DES0DIN 0x00050015
- #define UDMA_CH21_RESERVED6 0x00060015
- #define UDMA_CH21_RESERVED7 0x00070015
- #define UDMA_CH21_RESERVED8 0x00080015
- //
- // Channel 22
- //
- #define UDMA_CH22_UART1RX 0x00000016
- #define UDMA_CH22_RESERVED1 0x00010016
- #define UDMA_CH22_RESERVED2 0x00020016
- #define UDMA_CH22_LPC0_2 0x00030016
- #define UDMA_CH22_I2C5RX 0x00040016
- #define UDMA_CH22_DES0DOUT 0x00050016
- #define UDMA_CH22_RESERVED6 0x00060016
- #define UDMA_CH22_RESERVED7 0x00070016
- #define UDMA_CH22_I2C8RX 0x00080016
- //
- // Channel 23
- //
- #define UDMA_CH23_UART1TX 0x00000017
- #define UDMA_CH23_RESERVED1 0x00010017
- #define UDMA_CH23_RESERVED2 0x00020017
- #define UDMA_CH23_LPC0_1 0x00030017
- #define UDMA_CH23_I2C5TX 0x00040017
- #define UDMA_CH23_RESERVED5 0x00050017
- #define UDMA_CH23_RESERVED6 0x00060017
- #define UDMA_CH23_RESERVED7 0x00070017
- #define UDMA_CH23_I2C8TX 0x00080017
- //
- // Channel 24
- //
- #define UDMA_CH24_SSI1RX 0x00000018
- #define UDMA_CH24_ADC1_0 0x00010018
- #define UDMA_CH24_RESERVED2 0x00020018
- #define UDMA_CH24_WTIMER3A 0x00030018
- #define UDMA_CH24_GPIOQ 0x00040018
- #define UDMA_CH24_RESERVED5 0x00050018
- #define UDMA_CH24_RESERVED6 0x00060018
- #define UDMA_CH24_RESERVED7 0x00070018
- #define UDMA_CH24_I2C9RX 0x00080018
- //
- // Channel 25
- //
- #define UDMA_CH25_SSI1TX 0x00000019
- #define UDMA_CH25_ADC1_1 0x00010019
- #define UDMA_CH25_RESERVED2 0x00020019
- #define UDMA_CH25_WTIMER3B 0x00030019
- #define UDMA_CH25_RESERVED4 0x00040019
- #define UDMA_CH25_RESERVED5 0x00050019
- #define UDMA_CH25_RESERVED6 0x00060019
- #define UDMA_CH25_RESERVED7 0x00070019
- #define UDMA_CH25_I2C9TX 0x00080019
- //
- // Channel 26
- //
- #define UDMA_CH26_RESERVED0 0x0000001A
- #define UDMA_CH26_ADC1_2 0x0001001A
- #define UDMA_CH26_RESERVED2 0x0002001A
- #define UDMA_CH26_WTIMER4A 0x0003001A
- #define UDMA_CH26_RESERVED4 0x0004001A
- #define UDMA_CH26_RESERVED5 0x0005001A
- #define UDMA_CH26_RESERVED6 0x0006001A
- #define UDMA_CH26_RESERVED7 0x0007001A
- #define UDMA_CH26_I2C6RX 0x0008001A
- //
- // Channel 27
- //
- #define UDMA_CH27_RESERVED0 0x0000001B
- #define UDMA_CH27_ADC1_3 0x0001001B
- #define UDMA_CH27_RESERVED2 0x0002001B
- #define UDMA_CH27_WTIMER4B 0x0003001B
- #define UDMA_CH27_RESERVED4 0x0004001B
- #define UDMA_CH27_RESERVED5 0x0005001B
- #define UDMA_CH27_RESERVED6 0x0006001B
- #define UDMA_CH27_RESERVED7 0x0007001B
- #define UDMA_CH27_I2C6TX 0x0008001B
- //
- // Channel 28
- //
- #define UDMA_CH28_RESERVED0 0x0000001C
- #define UDMA_CH28_RESERVED1 0x0001001C
- #define UDMA_CH28_RESERVED2 0x0002001C
- #define UDMA_CH28_WTIMER5A 0x0003001C
- #define UDMA_CH28_RESERVED4 0x0004001C
- #define UDMA_CH28_RESERVED5 0x0005001C
- #define UDMA_CH28_RESERVED6 0x0006001C
- #define UDMA_CH28_RESERVED7 0x0007001C
- #define UDMA_CH28_I2C7RX 0x0008001C
- //
- // Channel 29
- //
- #define UDMA_CH29_RESERVED0 0x0000001D
- #define UDMA_CH29_RESERVED1 0x0001001D
- #define UDMA_CH29_RESERVED2 0x0002001D
- #define UDMA_CH29_WTIMER5B 0x0003001D
- #define UDMA_CH29_RESERVED4 0x0004001D
- #define UDMA_CH29_RESERVED5 0x0005001D
- #define UDMA_CH29_RESERVED6 0x0006001D
- #define UDMA_CH29_RESERVED7 0x0007001D
- #define UDMA_CH29_I2C7TX 0x0008001D
- //
- // Channel 30
- //
- #define UDMA_CH30_SW 0x0000001E
- #define UDMA_CH30_RESERVED1 0x0001001E
- #define UDMA_CH30_RESERVED2 0x0002001E
- #define UDMA_CH30_RESERVED3 0x0003001E
- #define UDMA_CH30_RESERVED4 0x0004001E
- #define UDMA_CH30_RESERVED5 0x0005001E
- #define UDMA_CH30_RESERVED6 0x0006001E
- #define UDMA_CH30_EPI0RX 0x0007001E
- #define UDMA_CH30_1WIRE0 0x0008001E
- //
- // Channel 31
- //
- #define UDMA_CH31_RESERVED0 0x0000001F
- #define UDMA_CH31_RESERVED1 0x0001001F
- #define UDMA_CH31_RESERVED2 0x0002001F
- #define UDMA_CH31_LPC0_0 0x0003001F
- #define UDMA_CH31_RESERVED4 0x0004001F
- #define UDMA_CH31_RESERVED5 0x0005001F
- #define UDMA_CH31_RESERVED6 0x0006001F
- #define UDMA_CH31_EPI0RX 0x0007001F
- #define UDMA_CH31_RESERVED8 0x0008001F
- //*****************************************************************************
- //
- // API Function prototypes
- //
- //*****************************************************************************
- extern void uDMAEnable(void);
- extern void uDMADisable(void);
- extern uint32_t uDMAErrorStatusGet(void);
- extern void uDMAErrorStatusClear(void);
- extern void uDMAChannelEnable(uint32_t ui32ChannelNum);
- extern void uDMAChannelDisable(uint32_t ui32ChannelNum);
- extern bool uDMAChannelIsEnabled(uint32_t ui32ChannelNum);
- extern void uDMAControlBaseSet(void *pControlTable);
- extern void *uDMAControlBaseGet(void);
- extern void *uDMAControlAlternateBaseGet(void);
- extern void uDMAChannelRequest(uint32_t ui32ChannelNum);
- extern void uDMAChannelAttributeEnable(uint32_t ui32ChannelNum,
- uint32_t ui32Attr);
- extern void uDMAChannelAttributeDisable(uint32_t ui32ChannelNum,
- uint32_t ui32Attr);
- extern uint32_t uDMAChannelAttributeGet(uint32_t ui32ChannelNum);
- extern void uDMAChannelControlSet(uint32_t ui32ChannelStructIndex,
- uint32_t ui32Control);
- extern void uDMAChannelTransferSet(uint32_t ui32ChannelStructIndex,
- uint32_t ui32Mode, void *pvSrcAddr,
- void *pvDstAddr, uint32_t ui32TransferSize);
- extern void uDMAChannelScatterGatherSet(uint32_t ui32ChannelNum,
- uint32_t ui32TaskCount,
- void *pvTaskList,
- uint32_t ui32IsPeriphSG);
- extern uint32_t uDMAChannelSizeGet(uint32_t ui32ChannelStructIndex);
- extern uint32_t uDMAChannelModeGet(uint32_t ui32ChannelStructIndex);
- extern void uDMAIntRegister(uint32_t ui32IntChannel, void (*pfnHandler)(void));
- extern void uDMAIntUnregister(uint32_t ui32IntChannel);
- extern uint32_t uDMAIntStatus(void);
- extern void uDMAIntClear(uint32_t ui32ChanMask);
- extern void uDMAChannelAssign(uint32_t ui32Mapping);
- //*****************************************************************************
- //
- // The following functions and definitions are deprecated and will be removed
- // from the API in the future. Use uDMAChannelAssign() instead to accomplish
- // the same end.
- //
- //*****************************************************************************
- #ifndef DEPRECATED
- //*****************************************************************************
- //
- // uDMA default/secondary peripheral selections, to be passed to
- // uDMAChannelSelectSecondary() and uDMAChannelSelectDefault().
- //
- //*****************************************************************************
- #define UDMA_DEF_USBEP1RX_SEC_UART2RX \
- 0x00000001
- #define UDMA_DEF_USBEP1TX_SEC_UART2TX \
- 0x00000002
- #define UDMA_DEF_USBEP2RX_SEC_TMR3A \
- 0x00000004
- #define UDMA_DEF_USBEP2TX_SEC_TMR3B \
- 0x00000008
- #define UDMA_DEF_USBEP3RX_SEC_TMR2A \
- 0x00000010
- #define UDMA_DEF_USBEP3TX_SEC_TMR2B \
- 0x00000020
- #define UDMA_DEF_ETH0RX_SEC_TMR2A \
- 0x00000040
- #define UDMA_DEF_ETH0TX_SEC_TMR2B \
- 0x00000080
- #define UDMA_DEF_UART0RX_SEC_UART1RX \
- 0x00000100
- #define UDMA_DEF_UART0TX_SEC_UART1TX \
- 0x00000200
- #define UDMA_DEF_SSI0RX_SEC_SSI1RX \
- 0x00000400
- #define UDMA_DEF_SSI0TX_SEC_SSI1TX \
- 0x00000800
- #define UDMA_DEF_RESERVED_SEC_UART2RX \
- 0x00001000
- #define UDMA_DEF_RESERVED_SEC_UART2TX \
- 0x00002000
- #define UDMA_DEF_ADC00_SEC_TMR2A \
- 0x00004000
- #define UDMA_DEF_ADC01_SEC_TMR2B \
- 0x00008000
- #define UDMA_DEF_ADC02_SEC_RESERVED \
- 0x00010000
- #define UDMA_DEF_ADC03_SEC_RESERVED \
- 0x00020000
- #define UDMA_DEF_TMR0A_SEC_TMR1A \
- 0x00040000
- #define UDMA_DEF_TMR0B_SEC_TMR1B \
- 0x00080000
- #define UDMA_DEF_TMR1A_SEC_EPI0RX \
- 0x00100000
- #define UDMA_DEF_TMR1B_SEC_EPI0TX \
- 0x00200000
- #define UDMA_DEF_UART1RX_SEC_RESERVED \
- 0x00400000
- #define UDMA_DEF_UART1TX_SEC_RESERVED \
- 0x00800000
- #define UDMA_DEF_SSI1RX_SEC_ADC10 \
- 0x01000000
- #define UDMA_DEF_SSI1TX_SEC_ADC11 \
- 0x02000000
- #define UDMA_DEF_RESERVED_SEC_ADC12 \
- 0x04000000
- #define UDMA_DEF_RESERVED_SEC_ADC13 \
- 0x08000000
- #define UDMA_DEF_I2S0RX_SEC_RESERVED \
- 0x10000000
- #define UDMA_DEF_I2S0TX_SEC_RESERVED \
- 0x20000000
- extern void uDMAChannelSelectDefault(uint32_t ui32DefPeriphs);
- extern void uDMAChannelSelectSecondary(uint32_t ui32SecPeriphs);
- #endif
- //*****************************************************************************
- //
- // Mark the end of the C bindings section for C++ compilers.
- //
- //*****************************************************************************
- #ifdef __cplusplus
- }
- #endif
- #endif // __DRIVERLIB_UDMA_H__
|