Direct Memory Access#
Introduction#
Direct Memory Access (DMA) is a process of transferring data from one memory location to another without the direct involvement of the processor (CPU). The main benefit of using DMA is more efficient data movement in the embedded system.
Here are some common applications of DMA in microcontroller systems:
Data Transfer: One of the primary uses of DMA is to facilitate data transfer between peripherals and memory.
Memory-to-Memory Transfer: DMA can also be utilized for moving data between different memory locations, providing fast and efficient memory operations without CPU intervention. This is particularly useful for tasks like memory copying, memory clearing, or memory initialization.
Peripheral Initialization: DMA can assist in initializing peripheral registers or buffers by transferring predefined data patterns or configurations directly from memory to the peripheral registers, speeding up the initialization process.
Data Processing: DMA can be employed for offloading data processing tasks from the CPU to dedicated hardware peripherals.
Real-Time Systems: DMA is essential in real-time systems where predictable and deterministic data transfer is crucial. By minimizing CPU involvement in data transfer operations, DMA helps meet strict timing requirements and reduces the likelihood of missed deadlines in time-critical applications.
Power Management: DMA can contribute to power efficiency by reducing CPU wake-up times and allowing the CPU to enter low-power modes more frequently. By handling data transfer tasks autonomously, DMA can help optimize power consumption in battery-operated or energy-constrained systems.
Configuration#
Configuring DMA involves three parameters that can be configured. The DMA instance can be configured through the API sl_si91x_dma_init(). The DMA channel can be configured in the range of 1-32 by passing the instance and channel to the API sl_si91x_dma_allocate_channel(). The transfer size can also be configured in the range of 1-10000.
For more information on configuring available parameters, see the respective peripheral example readme document.
Usage#
The common DMA functions can be used after the DMA structures are specified, passing an instance of sl_dma_init_t. These functions will initiate and configure the DMA as described below, which is the flow for implementation.
sl_si91x_dma_init : This API initializes the DMA peripheral.
sl_si91x_dma_allocate_channel : This API allocates a DMA channel for the transfer.
sl_si91x_dma_register_callbacks : This API registers the DMA callbacks (transfer complete & error).
sl_si91x_dma_transfer : This API starts the DMA transfer.
sl_si91x_dma_deinit : This function de-initializes the DMA peripheral.
Modules#
Enumerations#
Enumeration to represent DMA transfer types.
Enumeration to represent DMA transfer modes.
Enumeration that holds peripheral ACK signals for DMA.
Enumeration that holds DMA transfer sizes.
Enumeration that holds DMA transfer address increment options for source and destination.
Enumeration that holds 8-bit codes used by the callback_type parameter in the sl_si91x_dma_unregister_callbacks function.
Typedefs#
Typedef for user-supplied callback function which is called when a DMA transfer completes.
Typedef for user-supplied callback function which is called when a DMA error occurs.
Functions#
To initialize the DMA peripheral.
To de-initialize the DMA peripheral.
To allocate a DMA channel for the transfer.
To deallocate the DMA channel.
To register the DMA callbacks (transfer complete & error).
To unregister the DMA callbacks (transfer complete & error).
To start the DMA transfer.
To start a simple memory-to-memory DMA transfer.
To stop the DMA transfer.
To get the DMA channel status.
To enable the DMA channel.
To disable the DMA channel.
To enable the DMA peripheral.
Macros#
Status code indicates that the DMA channel already allocated for another transfer.
Status code indicates that no DMA channel is available for allocation.
Status code indicates that the DMA channel is already unallocated.
Status code indicates that channel is not allocated for DMA transfer.
DMA channel count.
DMA doesn't use the alternate descriptor.
DMA use alternate descriptor.
DMA burst request enable.
DMA burst request disable.
Channel has low priority.
Channel has high priority.
Peripheral ACK is disabled.
Peripheral Request is disabled.
Peripheral Request is enabled.
DMA request mask disabled.
Next burst enable.
Next burst disable.
Disable source protect control.
Enable source protect control.
Enumeration Documentation#
sl_dma_transfer_type_t#
sl_dma_transfer_type_t
Enumeration to represent DMA transfer types.
This enumeration defines the different types of DMA transfers that can be performed.
Enumerator | |
---|---|
SL_DMA_MEMORY_TO_MEMORY | Memory to memory transfer. |
SL_DMA_MEMORY_TO_PERIPHERAL | Memory to peripheral transfer. |
SL_DMA_PERIPHERAL_TO_MEMORY | Peripheral to memory transfer. |
106
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_dma_transfer_mode_t#
sl_dma_transfer_mode_t
Enumeration to represent DMA transfer modes.
This enumeration defines the different transfer modes available for DMA operations.
Enumerator | |
---|---|
SL_DMA_BASIC_MODE | Basic DMA mode. |
SL_DMA_PINGPONG_MODE | Ping-pong DMA mode. |
117
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_dma_peripheral_ack_t#
sl_dma_peripheral_ack_t
Enumeration that holds peripheral ACK signals for DMA.
This enumeration defines the ACK codes for various peripherals that can be used with DMA.
Enumerator | |
---|---|
SL_USART0_ACK | ACK code for USART0. |
SL_UART1_ACK | ACK code for UART1. |
SL_UART3_ACK | ACK code for UART3. |
SL_SSI_SLAVE_ACK | ACK code for SSI slave. |
SL_SSI_MASTER_ACK | ACK code for SSI master. |
SL_SSI1_SLAVE_ACK | ACK code for SSI1 slave. |
SL_I2C_ACK | ACK code for I2C. |
127
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_dma_transfer_size_t#
sl_dma_transfer_size_t
Enumeration that holds DMA transfer sizes.
This enumeration defines the different transfer sizes available for DMA operations.
Enumerator | |
---|---|
SL_TRANSFER_SIZE_32 | 32-bit (4 bytes) transfer size. |
SL_TRANSFER_SIZE_16 | 16-bit (2 bytes) transfer size. |
SL_TRANSFER_SIZE_8 | 8-bit (1 byte) transfer size. |
142
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_dma_transfer_inc_t#
sl_dma_transfer_inc_t
Enumeration that holds DMA transfer address increment options for source and destination.
This enumeration defines the different address increment options available for DMA transfers, specifying how the source and destination addresses should be incremented after each transfer.
Enumerator | |
---|---|
SL_TRANSFER_SRC_INC_32 | 4 bytes source address increment. |
SL_TRANSFER_SRC_INC_16 | 2 bytes source address increment. |
SL_TRANSFER_SRC_INC_8 | 1 byte source address increment. |
SL_TRANSFER_SRC_INC_NONE | No source address increment. |
SL_TRANSFER_DST_INC_32 | 4 bytes destination address increment. |
SL_TRANSFER_DST_INC_16 | 2 bytes destination address increment. |
SL_TRANSFER_DST_INC_8 | 1 byte destination address increment. |
SL_TRANSFER_DST_INC_NONE | No destination address increment. |
154
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_dma_callback_code_t#
sl_dma_callback_code_t
Enumeration that holds 8-bit codes used by the callback_type parameter in the sl_si91x_dma_unregister_callbacks function.
This enumeration defines the 8-bit codes for different types of DMA callbacks that can be unregistered.
Enumerator | |
---|---|
SL_DMA_TRANSFER_DONE_CB | 8-bit code for transfer complete callback. |
SL_DMA_ERROR_CB | 8-bit code for error callback. |
171
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
Typedef Documentation#
sl_dma_transfer_complete#
typedef void(* sl_dma_transfer_complete) (uint32_t channel, void *data) )(uint32_t channel, void *data)
Typedef for user-supplied callback function which is called when a DMA transfer completes.
[in] | channel | DMA channel number. |
[in] | data | An extra parameter for the user application. |
This typedef defines the callback function type that is used by the DMA driver to notify the application when a DMA transfer has completed.
87
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_dma_error#
typedef void(* sl_dma_error) (uint32_t channel, void *data) )(uint32_t channel, void *data)
Typedef for user-supplied callback function which is called when a DMA error occurs.
[in] | channel | DMA channel number. |
[in] | data | An extra parameter for the user application. |
This typedef defines the callback function type that is used by the DMA driver to notify the application when a DMA error has occurred.
99
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
Variable Documentation#
sl_dma0_channel_allocation_data_t#
sl_channel_data_t sl_dma0_channel_allocation_data_t[SL_DMA0_CHANNEL_COUNT]
DMA0 channel allocation data.
This external variable holds the allocation data for all channels of DMA0, including priority, allocation status, callback functions, transfer type, and transfer mode. DMA0 channel allocator
235
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_ulp_dma_channel_allocation_data_t#
sl_channel_data_t sl_ulp_dma_channel_allocation_data_t[SL_ULP_DMA_CHANNEL_COUNT]
ULP_DMA channel allocation data.
This external variable holds the allocation data for all channels of ULP_DMA, including priority, allocation status, callback functions, transfer type, and transfer mode. ULP_DMA channel allocator
243
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
Function Documentation#
sl_si91x_dma_init#
sl_status_t sl_si91x_dma_init (sl_dma_init_t * dma_init)
To initialize the DMA peripheral.
[in] | dma_init | Pointer to the DMA initialization structure.
|
This API enables the DMA clock and clears DMA interrupts. Configure dma_init->dma_number to 0 for initializing UDMA0 and 1 for initializing ULP_DMA.
Returns
sl_status_t Initialization status:
SL_STATUS_OK - Initialization success.
SL_STATUS_NOT_INITIALIZED - Initialization failed.
For more information on status codes, see SL STATUS DOCUMENTATION.
269
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_deinit#
sl_status_t sl_si91x_dma_deinit (uint32_t dma_number)
To de-initialize the DMA peripheral.
[in] | dma_number | 0 for UDMA0, 1 for ULP_DMA. |
This API disables the DMA peripheral clock and interrupts. The DMA will be de-initialized only if there is no ongoing transfer.
Pre-condition:
sl_si91x_dma_init must be called prior.
Returns
sl_status_t De-initialization status:
SL_STATUS_OK - De-initialization success.
SL_STATUS_BUSY - Cannot de-initialize the peripheral due to an ongoing transfer.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
For more information on status codes, see SL STATUS DOCUMENTATION.
290
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_allocate_channel#
sl_status_t sl_si91x_dma_allocate_channel (uint32_t dma_number, uint32_t * channel_no, uint32_t priority)
To allocate a DMA channel for the transfer.
[in] | dma_number | 0 for UDMA0, 1 for ULP_DMA. |
[in] | channel_no | Pointer to the channel number variable:
|
[in] | priority | Priority of the channel:
|
This API checks the available DMA channels and allocates one. It sets the priority of the allocated channel and assigns the channel number to the *channel_no variable. If no channel is available, it will return SL_DMA_NO_CHANNEL_AVAILABLE.
Note: Users can also initialize the desired channel number, and this API checks whether the desired channel is available and allocates the channel if available. If users want the driver to allocate an available channel, channel_no should be initialized to 0.
Pre-condition:
sl_si91x_dma_init must be called prior.
Returns
sl_status_t Channel allocation status:
SL_STATUS_OK - Channel allocated.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_INVALID_PARAMETER - Channel number is invalid.
SL_STATUS_DMA_NO_CHANNEL_AVAILABLE - All DMA channels are allocated.
SL_STATUS_DMA_CHANNEL_ALLOCATED - The desired channel is already allocated.
For more information on status codes, see SL STATUS DOCUMENTATION.
323
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_deallocate_channel#
sl_status_t sl_si91x_dma_deallocate_channel (uint32_t dma_number, uint32_t channel_no)
To deallocate the DMA channel.
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
This API deallocates the DMA channel if there is no ongoing transfer on the channel. Deallocating the channel will also unregister the callbacks for transfer complete and error.
Pre-conditions:
sl_si91x_dma_init must be called prior.
sl_si91x_dma_allocate_channel must be called prior.
Returns
sl_status_t Channel deallocation status:
SL_STATUS_OK - Channel deallocated.
SL_STATUS_BUSY - Cannot deallocate channel due to an ongoing transfer.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_INVALID_PARAMETER - Channel number is invalid.
For more information on status codes, see SL STATUS DOCUMENTATION.
351
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_register_callbacks#
sl_status_t sl_si91x_dma_register_callbacks (uint32_t dma_number, uint32_t channel_no, sl_dma_callback_t * callback_t)
To register the DMA callbacks (transfer complete & error).
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
[in] | callback_t | Pointer to the structure containing callback functions. |
This API registers the DMA callbacks for transfer complete and error events. The user must update the sl_dma_callback_t structure and pass its address to this function. A separate callback can be present for transfer complete and error for each channel.
Pre-conditions:
sl_si91x_dma_init must be called prior.
sl_si91x_dma_allocate_channel must be called prior.
Returns
sl_status_t Callback registration status:
SL_STATUS_OK - Callback registered successfully.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_INVALID_PARAMETER - Invalid channel number.
For more information on status codes, see SL STATUS DOCUMENTATION.
380
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_unregister_callbacks#
sl_status_t sl_si91x_dma_unregister_callbacks (uint32_t dma_number, uint32_t channel_no, uint8_t callback_type)
To unregister the DMA callbacks (transfer complete & error).
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
[in] | callback_type | Unregister the DMA callbacks based on the callback type (bit-mapped to callbacks):
|
This API unregisters the DMA callbacks for transfer complete and error events. Users need to update the 8-bit variable callback_type and pass it to the function. Each bit is mapped to a specific callback.
Pre-conditions:
sl_si91x_dma_init must be called prior.
sl_si91x_dma_allocate_channel must be called prior.
sl_si91x_dma_register_callbacks must be called prior.
Returns
sl_status_t Callback unregistration status:
SL_STATUS_OK - Callback unregistered successfully.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_INVALID_PARAMETER - Invalid channel number.
For more information on status codes, see SL STATUS DOCUMENTATION.
413
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_transfer#
sl_status_t sl_si91x_dma_transfer (uint32_t dma_number, uint32_t channel_no, sl_dma_xfer_t * dma_transfer_t)
To start the DMA transfer.
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
[in] | dma_transfer_t | Pointer to the channel transfer data structure containing the channel descriptor and other basic DMA parameters. |
This API configures the DMA channel descriptor and initiates the DMA transfer. The DMA primary descriptor is updated in this function, and based on the transfer mode, the alternate descriptor is updated (only for ping pong mode). Other DMA parameters like peripheral ACK signal (for peripheral memory transfers), DMA priority, etc., are also updated in this function.
Pre-conditions:
sl_si91x_dma_init must be called prior.
sl_si91x_dma_allocate_channel must be called prior.
sl_si91x_dma_register_callbacks must be called prior.
Returns
sl_status_t DMA transfer status:
SL_STATUS_OK - Transfer started successfully.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_SUSPENDED - Transfer initialization failed.
SL_STATUS_INVALID_PARAMETER - Channel number is invalid.
For more information on status codes, see SL STATUS DOCUMENTATION.
446
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_simple_transfer#
sl_status_t sl_si91x_dma_simple_transfer (uint32_t dma_number, uint32_t channel_no, void * src_addr, void * dst_addr, uint32_t data_size)
To start a simple memory-to-memory DMA transfer.
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
[in] | src_addr | Source address. |
[in] | dst_addr | Destination address. |
[in] | data_size | Transfer size in bytes. |
This API configures the DMA channel descriptor and initiates a simple memory-to-memory DMA transfer. Users need to pass the source address and destination address of the transfer along with the transfer length in bytes.
Pre-conditions:
sl_si91x_dma_init must be called prior.
sl_si91x_dma_allocate_channel must be called prior.
sl_si91x_dma_register_callbacks must be called prior.
Returns
sl_status_t DMA transfer status:
SL_STATUS_OK - Transfer success.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_SUSPENDED - Transfer initialization failed.
SL_STATUS_INVALID_PARAMETER - Channel number is invalid.
For more information on status codes, see SL STATUS DOCUMENTATION.
479
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_stop_transfer#
sl_status_t sl_si91x_dma_stop_transfer (uint32_t dma_number, uint32_t channel_no)
To stop the DMA transfer.
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
This API stops any active transfer on the channel by disabling the DMA channel. If there is no active transfer on the channel, this function returns SL_STATUS_IDLE.
Pre-conditions:
sl_si91x_dma_init must be called prior.
sl_si91x_dma_allocate_channel must be called prior.
sl_si91x_dma_simple_transfer or sl_si91x_dma_transfer must be called prior.
Returns
sl_status_t DMA transfer status:
SL_STATUS_OK - Transfer stopped successfully.
SL_STATUS_IDLE - There is no active transfer on the channel.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_INVALID_PARAMETER - Invalid channel number.
For more information on status codes, see SL STATUS DOCUMENTATION.
512
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_channel_status_get#
sl_status_t sl_si91x_dma_channel_status_get (uint32_t dma_number, uint32_t channel_no)
To get the DMA channel status.
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
This API returns the status of the specified DMA channel. The possible statuses are:
SL_STATUS_DMA_CHANNEL_ALREADY_ALLOCATED - DMA channel allocated but no active transfer in progress.
SL_STATUS_BUSY - Channel is allocated and an active transfer is in progress.
SL_STATUS_IDLE - Channel is not allocated.
Pre-conditions:
sl_si91x_dma_init must be called prior.
Returns
sl_status_t Channel status:
SL_STATUS_IDLE - Channel is not allocated.
SL_STATUS_BUSY - Channel is allocated and busy.
SL_STATUS_DMA_CHANNEL_ALREADY_ALLOCATED - Channel is already allocated and idle.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_INVALID_PARAMETER - Channel number is invalid.
For more information on status codes, see SL STATUS DOCUMENTATION.
542
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_channel_enable#
sl_status_t sl_si91x_dma_channel_enable (uint32_t dma_number, uint32_t channel_no)
To enable the DMA channel.
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
Enabling the channel will trigger the DMA transfer if DMA is already enabled. The channel should be allocated and transfer parameters should be configured before enabling the channel.
Pre-conditions:
sl_si91x_dma_init must be called prior.
sl_si91x_dma_allocate_channel must be called prior.
Transfer parameters must be configured.
Returns
sl_status_t Channel enable status:
SL_STATUS_OK - Channel enabled successfully.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_INVALID_PARAMETER - Channel number is invalid.
For more information on status codes, see SL STATUS DOCUMENTATION.
570
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_channel_disable#
sl_status_t sl_si91x_dma_channel_disable (uint32_t dma_number, uint32_t channel_no)
To disable the DMA channel.
[in] | dma_number | DMA number:
|
[in] | channel_no | Channel number:
|
Disabling the DMA channel will abort any ongoing active transfers on the channel. Enabling the channel back will not resume the previous transfer.
Pre-condition:
sl_si91x_dma_init must be called prior.
Returns
sl_status_t Channel disable status:
SL_STATUS_OK - Channel disabled successfully.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
SL_STATUS_INVALID_PARAMETER - Channel number is invalid.
For more information on status codes, see SL STATUS DOCUMENTATION.
596
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
sl_si91x_dma_enable#
sl_status_t sl_si91x_dma_enable (uint32_t dma_number)
To enable the DMA peripheral.
[in] | dma_number | DMA number:
|
Enabling the DMA will trigger the transfer if the channel is already enabled. The channel should be allocated and transfer parameters should be configured before enabling the DMA.
Pre-condition:
sl_si91x_dma_init must be called prior.
Returns
sl_status_t DMA enable status:
SL_STATUS_OK - DMA enabled successfully.
SL_STATUS_NOT_INITIALIZED - DMA peripheral not initialized.
For more information on status codes, see SL STATUS DOCUMENTATION.
618
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
Macro Definition Documentation#
SL_STATUS_DMA_CHANNEL_ALLOCATED#
#define SL_STATUS_DMA_CHANNEL_ALLOCATEDValue:
(sl_status_t)0x45
Status code indicates that the DMA channel already allocated for another transfer.
50
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
SL_STATUS_DMA_NO_CHANNEL_AVAILABLE#
#define SL_STATUS_DMA_NO_CHANNEL_AVAILABLEValue:
(sl_status_t)0x46
Status code indicates that no DMA channel is available for allocation.
52
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
SL_STATUS_DMA_CHANNEL_ALREADY_UNALLOCATED#
#define SL_STATUS_DMA_CHANNEL_ALREADY_UNALLOCATEDValue:
(sl_status_t)0X47
Status code indicates that the DMA channel is already unallocated.
54
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
SL_STATUS_DMA_CHANNEL_UNALLOCATED#
#define SL_STATUS_DMA_CHANNEL_UNALLOCATEDValue:
(sl_status_t)0X48
Status code indicates that channel is not allocated for DMA transfer.
56
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
SL_CHANNEL_COUNT#
#define SL_CHANNEL_COUNTValue:
32
DMA channel count.
58
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
ALTERNATE_DESCRIPTOR_DISABLE#
#define ALTERNATE_DESCRIPTOR_DISABLEValue:
0
DMA doesn't use the alternate descriptor.
60
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
ALTERNATE_DESCRIPTOR_ENABLE#
#define ALTERNATE_DESCRIPTOR_ENABLEValue:
1
DMA use alternate descriptor.
61
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
BURST_REQUEST_ENABLE#
#define BURST_REQUEST_ENABLEValue:
1
DMA burst request enable.
62
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
BURST_REQUEST_DISABLE#
#define BURST_REQUEST_DISABLEValue:
0
DMA burst request disable.
63
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
CHANNEL_PRIO_DISABLE#
#define CHANNEL_PRIO_DISABLEValue:
0
Channel has low priority.
64
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
CHANNEL_PRIO_ENABLE#
#define CHANNEL_PRIO_ENABLEValue:
1
Channel has high priority.
65
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
PERIPHERAL_ACK_DISABLE#
#define PERIPHERAL_ACK_DISABLEValue:
0
Peripheral ACK is disabled.
66
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
PERIPHERAL_REQUEST_DISABLE#
#define PERIPHERAL_REQUEST_DISABLEValue:
0
Peripheral Request is disabled.
67
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
PERIPHERAL_REQUEST_ENABLE#
#define PERIPHERAL_REQUEST_ENABLEValue:
1
Peripheral Request is enabled.
68
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
REQUEST_MASK_DISABLE#
#define REQUEST_MASK_DISABLEValue:
0
DMA request mask disabled.
69
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
NEXT_BURST_ENABLE#
#define NEXT_BURST_ENABLEValue:
1
Next burst enable.
70
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
NEXT_BURST_DISABLE#
#define NEXT_BURST_DISABLEValue:
0
Next burst disable.
71
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
SOURCE_PROTECT_CONTROL_DISABLE#
#define SOURCE_PROTECT_CONTROL_DISABLEValue:
0x000
Disable source protect control.
72
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h
DESTINATION_PROTECT_CONTROL_DISABLE#
#define DESTINATION_PROTECT_CONTROL_DISABLEValue:
0x000
Enable source protect control.
73
of file components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_dma.h