CC13xx Driver Library
[udma] Micro Direct Memory Access

Data Structures

struct  tDMAControlTable
 A structure that defines an entry in the channel control table. More...
 

Functions

static void uDMAEnable (uint32_t ui32Base)
 Enables the uDMA controller for use. More...
 
static void uDMADisable (uint32_t ui32Base)
 Disables the uDMA controller for use. More...
 
static uint32_t uDMAErrorStatusGet (uint32_t ui32Base)
 Gets the uDMA error status. More...
 
static void uDMAErrorStatusClear (uint32_t ui32Base)
 Clears the uDMA error interrupt. More...
 
static void uDMAChannelEnable (uint32_t ui32Base, uint32_t ui32ChannelNum)
 Enables a uDMA channel for operation. More...
 
static void uDMAChannelDisable (uint32_t ui32Base, uint32_t ui32ChannelNum)
 Disables a uDMA channel for operation. More...
 
static bool uDMAChannelIsEnabled (uint32_t ui32Base, uint32_t ui32ChannelNum)
 Checks if a uDMA channel is enabled for operation. More...
 
static void uDMAControlBaseSet (uint32_t ui32Base, void *pControlTable)
 Sets the base address for the channel control table. More...
 
static void * uDMAControlBaseGet (uint32_t ui32Base)
 Gets the base address for the channel control table. More...
 
static void * uDMAControlAlternateBaseGet (uint32_t ui32Base)
 Gets the base address for the channel control table alternate structures. More...
 
static void uDMAChannelRequest (uint32_t ui32Base, uint32_t ui32ChannelNum)
 Requests a uDMA channel to start a transfer. More...
 
void uDMAChannelAttributeEnable (uint32_t ui32Base, uint32_t ui32ChannelNum, uint32_t ui32Attr)
 Enables attributes of a uDMA channel. More...
 
void uDMAChannelAttributeDisable (uint32_t ui32Base, uint32_t ui32ChannelNum, uint32_t ui32Attr)
 Disables attributes of an uDMA channel. More...
 
uint32_t uDMAChannelAttributeGet (uint32_t ui32Base, uint32_t ui32ChannelNum)
 Gets the enabled attributes of a uDMA channel. More...
 
void uDMAChannelControlSet (uint32_t ui32Base, uint32_t ui32ChannelStructIndex, uint32_t ui32Control)
 Sets the control parameters for a uDMA channel control structure. More...
 
void uDMAChannelTransferSet (uint32_t ui32Base, uint32_t ui32ChannelStructIndex, uint32_t ui32Mode, void *pvSrcAddr, void *pvDstAddr, uint32_t ui32TransferSize)
 Sets the transfer parameters for a uDMA channel control structure. More...
 
void uDMAChannelScatterGatherSet (uint32_t ui32Base, uint32_t ui32ChannelNum, uint32_t ui32TaskCount, void *pvTaskList, uint32_t ui32IsPeriphSG)
 Configures a uDMA channel for scatter-gather mode. More...
 
uint32_t uDMAChannelSizeGet (uint32_t ui32Base, uint32_t ui32ChannelStructIndex)
 Gets the current transfer size for a uDMA channel control structure. More...
 
uint32_t uDMAChannelModeGet (uint32_t ui32Base, uint32_t ui32ChannelStructIndex)
 Gets the transfer mode for a uDMA channel control structure. More...
 
static void uDMAIntRegister (uint32_t ui32Base, uint32_t ui32IntChannel, void(*pfnHandler)(void))
 Registers an interrupt handler for the uDMA controller. More...
 
static void uDMAIntUnregister (uint32_t ui32Base, uint32_t ui32IntChannel)
 Unregisters an interrupt handler for the uDMA controller. More...
 
static void uDMAIntClear (uint32_t ui32Base, uint32_t ui32ChanMask)
 Clears uDMA interrupt done status. More...
 
static uint32_t uDMAIntStatus (uint32_t ui32Base)
 Get the uDMA interrupt status. More...
 
static void uDMAIntSwEventEnable (uint32_t ui32Base, uint32_t ui32IntChannel)
 Enable interrupt on software event driven uDMA transfers. More...
 
static void uDMAIntSwEventDisable (uint32_t ui32Base, uint32_t ui32IntChannel)
 Disable interrupt on software event driven uDMA transfers. More...
 
static uint32_t uDMAGetStatus (uint32_t ui32Base)
 Return the status of the uDMA module. More...
 
static void uDMAChannelPrioritySet (uint32_t ui32Base, uint32_t ui32ChannelNum)
 Set the priority of a uDMA channel. More...
 
static bool uDMAChannelPriorityGet (uint32_t ui32Base, uint32_t ui32ChannelNum)
 Get the priority of a uDMA channel. More...
 
static void uDMAChannelPriorityClear (uint32_t ui32Base, uint32_t ui32ChannelNum)
 Clear the priority of a uDMA channel. More...
 

Detailed Description

Function Documentation

void uDMAChannelAttributeDisable ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum,
uint32_t  ui32Attr 
)

Disables attributes of an uDMA channel.

This function is used to disable attributes of a uDMA channel.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis the channel to configure.
ui32Attris a combination of attributes for the channel. The parameter is the bitwise OR of any of the following:
  • UDMA_ATTR_USEBURST is used to restrict transfers to use only a burst mode.
  • UDMA_ATTR_ALTSELECT is used to select the alternate control structure for this channel (it is very unlikely that this flag should be used).
  • UDMA_ATTR_HIGH_PRIORITY is used to set this channel to high priority.
  • UDMA_ATTR_REQMASK is used to mask the hardware request signal from the peripheral for this channel.
Returns
None

Definition at line 123 of file udma.c.

void uDMAChannelAttributeEnable ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum,
uint32_t  ui32Attr 
)

Enables attributes of a uDMA channel.

This function is used to enable attributes of a uDMA channel.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis the channel to configure.
ui32Attris a combination of attributes for the channel. The parameter is the bitwise OR of any of the following:
  • UDMA_ATTR_USEBURST is used to restrict transfers to use only a burst mode.
  • UDMA_ATTR_ALTSELECT is used to select the alternate control structure for this channel (it is very unlikely that this flag should be used).
  • UDMA_ATTR_HIGH_PRIORITY is used to set this channel to high priority.
  • UDMA_ATTR_REQMASK is used to mask the hardware request signal from the peripheral for this channel.
Returns
None

Definition at line 72 of file udma.c.

uint32_t uDMAChannelAttributeGet ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum 
)

Gets the enabled attributes of a uDMA channel.

This function returns a combination of flags representing the attributes of the uDMA channel.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis the channel to configure.
Returns
Returns the bitwise OR of the attributes of the uDMA channel, which can be any of the following:
  • UDMA_ATTR_USEBURST is used to restrict transfers to use only a burst mode.
  • UDMA_ATTR_ALTSELECT is used to select the alternate control structure for this channel (it is very unlikely that this flag should be used).
  • UDMA_ATTR_HIGH_PRIORITY is used to set this channel to high priority.
  • UDMA_ATTR_REQMASK is used to mask the hardware request signal from the peripheral for this channel.

Definition at line 174 of file udma.c.

void uDMAChannelControlSet ( uint32_t  ui32Base,
uint32_t  ui32ChannelStructIndex,
uint32_t  ui32Control 
)

Sets the control parameters for a uDMA channel control structure.

This function is used to set control parameters for a uDMA transfer. These are typically parameters that are not changed often.

Note
The address increment cannot be smaller than the data size.
Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelStructIndexis the bitwise OR of the uDMA channel number and:
ui32Controlis the bitwise OR of five values:
Returns
None

Definition at line 228 of file udma.c.

static void uDMAChannelDisable ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum 
)
inlinestatic

Disables a uDMA channel for operation.

This function disables a specific uDMA channel. Once disabled, a channel will not respond to uDMA transfer requests until re-enabled via uDMAChannelEnable().

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis the channel number to disable.
Returns
None.

Definition at line 502 of file udma.h.

static void uDMAChannelEnable ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum 
)
inlinestatic

Enables a uDMA channel for operation.

This function enables a specific uDMA channel for use. This function must be used to enable a channel before it can be used to perform a uDMA transfer.

When a uDMA transfer is completed, the channel will be automatically disabled by the uDMA controller. Therefore, this function should be called prior to starting up any new transfer.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis the channel number to enable.
Returns
None

Definition at line 473 of file udma.h.

static bool uDMAChannelIsEnabled ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum 
)
inlinestatic

Checks if a uDMA channel is enabled for operation.

This function checks to see if a specific uDMA channel is enabled. This can be used to check the status of a transfer, since the channel will be automatically disabled at the end of a transfer.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis the channel number to check.
Returns
Returns status of uDMA channel.
  • true : Channel is enabled.
  • false : Disabled.

Definition at line 533 of file udma.h.

uint32_t uDMAChannelModeGet ( uint32_t  ui32Base,
uint32_t  ui32ChannelStructIndex 
)

Gets the transfer mode for a uDMA channel control structure.

This function is used to get the transfer mode for the uDMA channel. It can be used to query the status of a transfer on a channel. When the transfer is complete the mode will be UDMA_MODE_STOP.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelStructIndexis the bitwise OR of the uDMA channel number and:
Returns
Returns the transfer mode of the specified channel and control structure, which will be one of the following values:

Definition at line 514 of file udma.c.

static void uDMAChannelPriorityClear ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum 
)
inlinestatic

Clear the priority of a uDMA channel.

Note
Writing 0 to a bit has no effect on the priority. To set a channel priority to high use uDMAChannelPrioritySet().
Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumThe uDMA channel to clear the priority for.
Returns
None

Definition at line 1253 of file udma.h.

static bool uDMAChannelPriorityGet ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum 
)
inlinestatic

Get the priority of a uDMA channel.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumThe uDMA channel to get the priority for.
Returns
Returns one of:

Definition at line 1224 of file udma.h.

static void uDMAChannelPrioritySet ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum 
)
inlinestatic

Set the priority of a uDMA channel.

Note
Writing 0 to a bit has no effect on the priority. To reset a channel priority to the default value use uDMAChannelPriorityClear().
Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis uDMA channel to set the priority for.
Returns
None

Definition at line 1197 of file udma.h.

static void uDMAChannelRequest ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum 
)
inlinestatic

Requests a uDMA channel to start a transfer.

This function allows software to request a uDMA channel to begin a transfer. This could be used for performing a memory to memory transfer, or if for some reason a transfer needs to be initiated by software instead of the peripheral associated with that channel.

Note
If the channel is a software channel and interrupts are used, then the completion will be signaled on the uDMA dedicated interrupt. If a peripheral channel is used, then the completion will be signaled on the peripheral's interrupt.
Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis the channel number on which to request a uDMA transfer.
Returns
None.

Definition at line 672 of file udma.h.

void uDMAChannelScatterGatherSet ( uint32_t  ui32Base,
uint32_t  ui32ChannelNum,
uint32_t  ui32TaskCount,
void *  pvTaskList,
uint32_t  ui32IsPeriphSG 
)

Configures a uDMA channel for scatter-gather mode.

This function is used to configure a channel for scatter-gather mode. The caller must have already set up a task list, and pass a pointer to the start of the task list as the pvTaskList parameter.

The ui32TaskCount parameter is the count of tasks in the task list, not the size of the task list.

The flag bIsPeriphSG should be used to indicate if the scatter-gather should be configured for a peripheral or memory scatter-gather operation.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelNumis the uDMA channel number.
ui32TaskCountis the number of scatter-gather tasks to execute.
pvTaskListis a pointer to the beginning of the scatter-gather task list.
ui32IsPeriphSGis a flag to indicate it is a peripheral scatter-gather transfer (else it will be memory scatter-gather transfer)
Returns
None
See also
uDMATaskStructEntry()

Definition at line 391 of file udma.c.

uint32_t uDMAChannelSizeGet ( uint32_t  ui32Base,
uint32_t  ui32ChannelStructIndex 
)

Gets the current transfer size for a uDMA channel control structure.

This function is used to get the uDMA transfer size for a channel. The transfer size is the number of items to transfer, where the size of an item might be 8, 16, or 32 bits. If a partial transfer has already occurred, then the number of remaining items will be returned. If the transfer is complete, then 0 will be returned.

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelStructIndexis the bitwise OR of the uDMA channel number and:
Returns
Returns the number of items remaining to transfer.

Definition at line 462 of file udma.c.

void uDMAChannelTransferSet ( uint32_t  ui32Base,
uint32_t  ui32ChannelStructIndex,
uint32_t  ui32Mode,
void *  pvSrcAddr,
void *  pvDstAddr,
uint32_t  ui32TransferSize 
)

Sets the transfer parameters for a uDMA channel control structure.

This function is used to set the parameters for a uDMA transfer. These are typically parameters that are changed often. The function uDMAChannelControlSet() MUST be called at least once for this channel prior to calling this function.

The pvSrcAddr and pvDstAddr parameters are pointers to the first location of the data to be transferred. These addresses should be aligned according to the item size. The compiler will take care of this if the pointers are pointing to storage of the appropriate data type.

The two scatter/gather modes, MEMORY and PERIPHERAL, are actually different depending on whether the primary or alternate control structure is selected. This function will look for the UDMA_PRI_SELECT and UDMA_ALT_SELECT flag along with the channel number and will set the scatter/gather mode as appropriate for the primary or alternate control structure.

The channel must also be enabled using uDMAChannelEnable() after calling this function. The transfer will not begin until the channel has been set up and enabled. Note that the channel is automatically disabled after the transfer is completed, meaning that uDMAChannelEnable() must be called again after setting up the next transfer.

Note
Great care must be taken to not modify a channel control structure that is in use or else the results will be unpredictable, including the possibility of undesired data transfers to or from memory or peripherals. For BASIC and AUTO modes, it is safe to make changes when the channel is disabled, or the uDMAChannelModeGet() returns UDMA_MODE_STOP. For PINGPONG or one of the SCATTER_GATHER modes, it is safe to modify the primary or alternate control structure only when the other is being used. The uDMAChannelModeGet() function will return UDMA_MODE_STOP when a channel control structure is inactive and safe to modify.
Parameters
ui32Baseis the base address of the uDMA port.
ui32ChannelStructIndexis the bitwise OR of the uDMA channel number and:
ui32Modeis the type of uDMA transfer. The parameter should be one of the following values:
  • UDMA_MODE_STOP : Stops the uDMA transfer. The controller sets the mode to this value at the end of a transfer.
  • UDMA_MODE_BASIC : Perform a basic transfer based on request.
  • UDMA_MODE_AUTO to perform a transfer that will always complete once started even if request is removed.
  • UDMA_MODE_PINGPONG : Set up a transfer that switches between the primary and alternate control structures for the channel. This allows use of ping-pong buffering for uDMA transfers.
  • UDMA_MODE_MEM_SCATTER_GATHER : Set up a memory scatter-gather transfer.
  • UDMA_MODE_PER_SCATTER_GATHER : Set up a peripheral scatter-gather transfer.
pvSrcAddris the source address for the transfer.
pvDstAddris the destination address for the transfer.
ui32TransferSizeis the number of data items to transfer (NOT bytes).
Returns
None

Definition at line 265 of file udma.c.

static void* uDMAControlAlternateBaseGet ( uint32_t  ui32Base)
inlinestatic

Gets the base address for the channel control table alternate structures.

This function gets the base address of the second half of the channel control table that holds the alternate control structures for each channel.

Parameters
ui32Baseis the base address of the uDMA port.
Returns
Returns a pointer to the base address of the second half of the channel control table.

Definition at line 636 of file udma.h.

static void* uDMAControlBaseGet ( uint32_t  ui32Base)
inlinestatic

Gets the base address for the channel control table.

This function gets the base address of the channel control table. This table resides in system memory and holds control information for each uDMA channel.

Parameters
ui32Baseis the base address of the uDMA port.
Returns
Returns a pointer to the base address of the channel control table.

Definition at line 608 of file udma.h.

static void uDMAControlBaseSet ( uint32_t  ui32Base,
void *  pControlTable 
)
inlinestatic

Sets the base address for the channel control table.

This function sets the base address of the channel control table. This table resides in system memory and holds control information for each uDMA channel. The table must be aligned on a 1024 byte boundary. The base address must be set before any of the channel functions can be used. Setting the base address of the primary control table will automatically set the address for the alternate control table as the next memory location after the primary control table.

The size of the channel control table depends on the number of uDMA channels, and which transfer modes are used. Refer to the introductory text and the microcontroller datasheet for more information about the channel control table.

Note
This register cannot be read when the controller is in the reset state.
Parameters
ui32Baseis the base address of the uDMA port.
pControlTableis a pointer to the 1024 byte aligned base address of the uDMA channel control table. The address must be an absolute address in system memory space.
Returns
None

Definition at line 578 of file udma.h.

static void uDMADisable ( uint32_t  ui32Base)
inlinestatic

Disables the uDMA controller for use.

This function disables the uDMA controller. Once disabled, the uDMA controller will not operate until re-enabled with uDMAEnable().

Parameters
ui32Baseis the base address of the uDMA port.
Returns
None.

Definition at line 388 of file udma.h.

static void uDMAEnable ( uint32_t  ui32Base)
inlinestatic

Enables the uDMA controller for use.

This function enables the uDMA controller. The uDMA controller must be enabled before it can be configured and used.

Parameters
ui32Baseis the base address of the uDMA port.
Returns
None

Definition at line 362 of file udma.h.

static void uDMAErrorStatusClear ( uint32_t  ui32Base)
inlinestatic

Clears the uDMA error interrupt.

This function clears a pending uDMA error interrupt. It should be called from within the uDMA error interrupt handler to clear the interrupt.

Parameters
ui32Baseis the base address of the uDMA port.
Returns
None

Definition at line 441 of file udma.h.

static uint32_t uDMAErrorStatusGet ( uint32_t  ui32Base)
inlinestatic

Gets the uDMA error status.

This function returns the uDMA error status. It should be called from within the uDMA error interrupt handler to determine if a uDMA error occurred.

Parameters
ui32Baseis the base address of the uDMA port.
Returns
Returns non-zero if a uDMA error is pending.

Definition at line 415 of file udma.h.

static uint32_t uDMAGetStatus ( uint32_t  ui32Base)
inlinestatic

Return the status of the uDMA module.

Note
This status register cannot be read when the controller is in the reset state.
Parameters
ui32Baseis the base address of the uDMA port.
Returns
Current status of the uDMA module.

Definition at line 1170 of file udma.h.

static void uDMAIntClear ( uint32_t  ui32Base,
uint32_t  ui32ChanMask 
)
inlinestatic

Clears uDMA interrupt done status.

Clears bits in the uDMA interrupt status register according to which bits are set in ui32ChanMask. There is one bit for each channel. If a a bit is set in ui32ChanMask, then that corresponding channel's interrupt status will be cleared (if it was set).

Parameters
ui32Baseis the base address of the uDMA port.
ui32ChanMaskis a 32-bit mask with one bit for each uDMA channel.
Returns
None

Definition at line 1054 of file udma.h.

static void uDMAIntRegister ( uint32_t  ui32Base,
uint32_t  ui32IntChannel,
void(*)(void)  pfnHandler 
)
inlinestatic

Registers an interrupt handler for the uDMA controller.

This sets and enables the handler to be called when the uDMA controller generates an interrupt.

Note
The interrupt handler for uDMA is for transfer completion when the software channel is used, and for error interrupts. The interrupts for each peripheral channel are handled through the individual peripheral interrupt handlers.
Parameters
ui32Baseis the base address of the uDMA port.
ui32IntChannelidentifies which uDMA interrupt is to be registered.
  • INT_DMA_DONE_COMB : Register an interrupt handler to process interrupts from the uDMA software channel.
  • INT_DMA_ERR : Register an interrupt handler to process uDMA error interrupts.
pfnHandleris a pointer to the function to be called when the interrupt is activated.
Returns
None
See also
IntRegister() for important information about registering interrupt handlers.

Definition at line 977 of file udma.h.

Here is the call graph for this function:

static uint32_t uDMAIntStatus ( uint32_t  ui32Base)
inlinestatic

Get the uDMA interrupt status.

This function returns the interrupt status for the specified UDMA. This function does not differentiate between software or hardware activated interrupts.

Parameters
ui32Baseis the base address of the uDMA port.
Returns
None

Definition at line 1081 of file udma.h.

static void uDMAIntSwEventDisable ( uint32_t  ui32Base,
uint32_t  ui32IntChannel 
)
inlinestatic

Disable interrupt on software event driven uDMA transfers.

This register disables the blocking of the uDMA status signals propagation to the hardware peripheral connected to the uDMA on the ui32IntChannel.

Parameters
ui32Baseis the base address of the uDMA port.
ui32IntChannelidentifies which uDMA interrupt to disable software interrupts for.
Returns
None
See also
uDMAIntSwEventEnable()

Definition at line 1144 of file udma.h.

static void uDMAIntSwEventEnable ( uint32_t  ui32Base,
uint32_t  ui32IntChannel 
)
inlinestatic

Enable interrupt on software event driven uDMA transfers.

Note
The main purpose of this function is to prevent propagation of uDMA status signals to a peripheral, if a peripheral and a software event is sharing the uDMA channel. If it is desired to initiate a transfer by writing to a register inside the uDMA (this means a software driven channel), then the uDMA status signals propagation need to be blocked to the hardware peripherals.
Parameters
ui32Baseis the base address of the uDMA port.
ui32IntChannelidentifies which uDMA interrupt to enable software interrupts for.
Returns
None

Definition at line 1113 of file udma.h.

static void uDMAIntUnregister ( uint32_t  ui32Base,
uint32_t  ui32IntChannel 
)
inlinestatic

Unregisters an interrupt handler for the uDMA controller.

This function will disable and clear the handler to be called for the specified uDMA interrupt.

Parameters
ui32Baseis the base address of the uDMA port.
ui32IntChannelidentifies which uDMA interrupt to unregister.
  • INT_DMA_DONE_COMB : Register an interrupt handler to process interrupts from the uDMA software channel.
  • INT_DMA_ERR : Register an interrupt handler to process uDMA error interrupts.
Returns
None
See also
IntRegister() for important information about registering interrupt handlers.

Definition at line 1019 of file udma.h.

Here is the call graph for this function:

Macro Definition Documentation

#define UDMA_ALT_SELECT   0x00000020

Definition at line 319 of file udma.h.

Referenced by uDMAChannelScatterGatherSet(), and uDMAChannelTransferSet().

#define UDMA_ARB_1   0x00000000

Definition at line 268 of file udma.h.

#define UDMA_ARB_1024   0x00028000

Definition at line 278 of file udma.h.

#define UDMA_ARB_128   0x0001c000

Definition at line 275 of file udma.h.

#define UDMA_ARB_16   0x00010000

Definition at line 272 of file udma.h.

#define UDMA_ARB_2   0x00004000

Definition at line 269 of file udma.h.

#define UDMA_ARB_256   0x00020000

Definition at line 276 of file udma.h.

#define UDMA_ARB_32   0x00014000

Definition at line 273 of file udma.h.

#define UDMA_ARB_4   0x00008000

Definition at line 270 of file udma.h.

Referenced by uDMAChannelScatterGatherSet().

#define UDMA_ARB_512   0x00024000

Definition at line 277 of file udma.h.

#define UDMA_ARB_64   0x00018000

Definition at line 274 of file udma.h.

#define UDMA_ARB_8   0x0000c000

Definition at line 271 of file udma.h.

#define UDMA_ARB_M   0x0003C000

Definition at line 279 of file udma.h.

Referenced by uDMAChannelControlSet().

#define UDMA_ARB_S   14

Definition at line 280 of file udma.h.

#define UDMA_ATTR_ALL   0x0000000F

Definition at line 227 of file udma.h.

#define UDMA_ATTR_ALTSELECT   0x00000002
#define UDMA_ATTR_HIGH_PRIORITY   0x00000004
#define UDMA_ATTR_REQMASK   0x00000008
#define UDMA_ATTR_USEBURST   0x00000001
#define UDMA_CHAN_AON_PROG2   13

Definition at line 303 of file udma.h.

#define UDMA_CHAN_AON_RTC   15

Definition at line 305 of file udma.h.

#define UDMA_CHAN_AUX_ADC   7

Definition at line 297 of file udma.h.

#define UDMA_CHAN_AUX_SW   8

Definition at line 298 of file udma.h.

#define UDMA_CHAN_DMA_PROG   14

Definition at line 304 of file udma.h.

#define UDMA_CHAN_SSI0_RX   3

Definition at line 295 of file udma.h.

#define UDMA_CHAN_SSI0_TX   4

Definition at line 296 of file udma.h.

#define UDMA_CHAN_SSI1_RX   16

Definition at line 306 of file udma.h.

#define UDMA_CHAN_SSI1_TX   17

Definition at line 307 of file udma.h.

#define UDMA_CHAN_SW_EVT0   0

Definition at line 292 of file udma.h.

#define UDMA_CHAN_SW_EVT1   18

Definition at line 308 of file udma.h.

#define UDMA_CHAN_SW_EVT2   19

Definition at line 309 of file udma.h.

#define UDMA_CHAN_SW_EVT3   20

Definition at line 310 of file udma.h.

#define UDMA_CHAN_TIMER0_A   9

Definition at line 299 of file udma.h.

#define UDMA_CHAN_TIMER0_B   10

Definition at line 300 of file udma.h.

#define UDMA_CHAN_TIMER1_A   11

Definition at line 301 of file udma.h.

#define UDMA_CHAN_TIMER1_B   12

Definition at line 302 of file udma.h.

#define UDMA_CHAN_UART0_RX   1

Definition at line 293 of file udma.h.

#define UDMA_CHAN_UART0_TX   2

Definition at line 294 of file udma.h.

#define UDMA_DST_INC_16   0x40000000

Definition at line 252 of file udma.h.

#define UDMA_DST_INC_32   0x80000000

Definition at line 253 of file udma.h.

Referenced by uDMAChannelScatterGatherSet().

#define UDMA_DST_INC_8   0x00000000

Definition at line 251 of file udma.h.

#define UDMA_DST_INC_M   0xC0000000

Definition at line 255 of file udma.h.

Referenced by uDMAChannelControlSet(), and uDMAChannelTransferSet().

#define UDMA_DST_INC_NONE   0xC0000000

Definition at line 254 of file udma.h.

Referenced by uDMAChannelTransferSet().

#define UDMA_DST_INC_S   30

Definition at line 256 of file udma.h.

Referenced by uDMAChannelTransferSet().

#define UDMA_MODE_ALT_SELECT   0x00000001

Definition at line 244 of file udma.h.

Referenced by uDMAChannelModeGet(), and uDMAChannelTransferSet().

#define UDMA_MODE_AUTO   0x00000002

Definition at line 237 of file udma.h.

#define UDMA_MODE_BASIC   0x00000001

Definition at line 236 of file udma.h.

#define UDMA_MODE_M   0x00000007

Definition at line 243 of file udma.h.

Referenced by uDMAChannelModeGet(), uDMAChannelSizeGet(), and uDMAChannelTransferSet().

#define UDMA_MODE_MEM_SCATTER_GATHER   0x00000004

Definition at line 239 of file udma.h.

Referenced by uDMAChannelModeGet(), uDMAChannelScatterGatherSet(), and uDMAChannelTransferSet().

#define UDMA_MODE_PER_SCATTER_GATHER   0x00000006

Definition at line 241 of file udma.h.

Referenced by uDMAChannelModeGet(), uDMAChannelScatterGatherSet(), and uDMAChannelTransferSet().

#define UDMA_MODE_PINGPONG   0x00000003

Definition at line 238 of file udma.h.

#define UDMA_MODE_STOP   0x00000000

Definition at line 235 of file udma.h.

#define UDMA_NEXT_USEBURST   0x00000008

Definition at line 281 of file udma.h.

Referenced by uDMAChannelControlSet().

#define UDMA_PRI_SELECT   0x00000000

Definition at line 318 of file udma.h.

#define UDMA_PRIORITY_HIGH   0x00000001

Definition at line 215 of file udma.h.

Referenced by uDMAChannelPriorityGet().

#define UDMA_PRIORITY_LOW   0x00000000

Definition at line 214 of file udma.h.

Referenced by uDMAChannelPriorityGet().

#define UDMA_SIZE_16   0x11000000

Definition at line 264 of file udma.h.

#define UDMA_SIZE_32   0x22000000

Definition at line 265 of file udma.h.

Referenced by uDMAChannelScatterGatherSet().

#define UDMA_SIZE_8   0x00000000

Definition at line 263 of file udma.h.

#define UDMA_SIZE_M   0x33000000

Definition at line 266 of file udma.h.

Referenced by uDMAChannelControlSet().

#define UDMA_SIZE_S   24

Definition at line 267 of file udma.h.

#define UDMA_SRC_INC_16   0x04000000

Definition at line 258 of file udma.h.

#define UDMA_SRC_INC_32   0x08000000

Definition at line 259 of file udma.h.

Referenced by uDMAChannelScatterGatherSet().

#define UDMA_SRC_INC_8   0x00000000

Definition at line 257 of file udma.h.

#define UDMA_SRC_INC_M   0x0C000000

Definition at line 261 of file udma.h.

Referenced by uDMAChannelControlSet(), and uDMAChannelTransferSet().

#define UDMA_SRC_INC_NONE   0x0c000000

Definition at line 260 of file udma.h.

Referenced by uDMAChannelTransferSet().

#define UDMA_SRC_INC_S   26

Definition at line 262 of file udma.h.

Referenced by uDMAChannelTransferSet().

#define UDMA_XFER_SIZE_M   0x00003FF0

Definition at line 283 of file udma.h.

Referenced by uDMAChannelSizeGet(), and uDMAChannelTransferSet().

#define UDMA_XFER_SIZE_MAX   1024

Definition at line 282 of file udma.h.

Referenced by uDMAChannelScatterGatherSet(), and uDMAChannelTransferSet().

#define UDMA_XFER_SIZE_S   4

Definition at line 284 of file udma.h.

Referenced by uDMAChannelScatterGatherSet(), uDMAChannelSizeGet(), and uDMAChannelTransferSet().

#define uDMATaskStructEntry (   ui32TransferCount,
  ui32ItemSize,
  ui32SrcIncrement,
  pvSrcAddr,
  ui32DstIncrement,
  pvDstAddr,
  ui32ArbSize,
  ui32Mode 
)
Value:
{ \
(((ui32SrcIncrement) == UDMA_SRC_INC_NONE) ? (pvSrcAddr) : \
((void *)(&((uint8_t *)(pvSrcAddr))[((ui32TransferCount) << \
((ui32SrcIncrement) >> 26)) - 1]))), \
(((ui32DstIncrement) == UDMA_DST_INC_NONE) ? (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 \
}
#define UDMA_MODE_MEM_SCATTER_GATHER
Definition: udma.h:239
#define UDMA_MODE_ALT_SELECT
Definition: udma.h:244
#define UDMA_SRC_INC_NONE
Definition: udma.h:260
#define UDMA_MODE_PER_SCATTER_GATHER
Definition: udma.h:241
#define UDMA_DST_INC_NONE
Definition: udma.h:254

A helper macro for building scatter-gather task table entries.

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.

This macro is intended to be used to initialize individual entries of a structure of tDMAControlTable type, like this:

  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, ... ),
  }
Parameters
ui32TransferCountis the count of items to transfer for this task. It must be in the range 1-1024.
ui32ItemSizeis the bit size of the items to transfer for this task. It must be one of:
ui32SrcIncrementis the bit size increment for source data. It must be one of:
pvSrcAddris the starting address of the data to transfer.
ui32DstIncrementis the bit size increment for destination data. It must be one of:
pvDstAddris the starting address of the destination data.
ui32ArbSizeis the arbitration size to use for the transfer task. This is used to select the arbitration size in powers of 2, from 1 to 1024. It must be one of:
ui32Modeis the transfer mode for this task. 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. It must be one of:
Returns
None (this is not a function)

Definition at line 180 of file udma.h.