![]() |
RZG Flexible Software Package Documentation
Release v3.0.0
|
|
Driver for the DMAC peripheral on RZ MPUs. This module implements the Transfer Interface.
The Direct Memory Access Controller (DMAC) transfers data from one memory location to another without using the CPU.
Configuration | Options | Default | Description |
---|---|---|---|
Parameter Checking |
| Default (BSP) | If selected code for parameter checking is included in the build. |
Configuration | Options | Default | Description |
---|---|---|---|
Name | Name must be a valid C symbol | g_transfer0 | Module name. |
Unit | MCU Specific Options | Specify the hardware unit. | |
Channel | Must be a valid integer between 0 and 15. | 0 | Specify the hardware channel. |
Mode |
| Normal | Select the transfer mode. |
Source Data Size |
| 2 Bytes | Select the source data size. |
Destination Data Size |
| 2 Bytes | Select the destination data size. |
Destination Address Mode |
| Incremented | Select the address mode for the destination. |
Source Address Mode |
| Incremented | Select the address mode for the source. |
Activation Source | MCU Specific Options | Select the DMAC transfer start event. | |
DMA Activation Request Source Select |
| Requested by a transfer source module | DMA Activation Request Source Select. |
DACK Output mode | MCU Specific Options | Select DACK output mode. | |
External DREQ Input Pin Select | MCU Specific Options | Select DREQ input signal. | |
External DACK Output Pin Select | MCU Specific Options | Select DACK output signal. | |
External TEND Output Pin Select | MCU Specific Options | Select TEND output signal. | |
External DREQ Detection Mode | MCU Specific Options | External DREQ detection mode select.(This cannot be set on devices that do not have an external DREQ terminal) | |
DMAC Mode | Register Mode | Register Mode | Select DMAC Mode. |
Callback | Name must be a valid C symbol | NULL | A user callback that is called at the end of the transfer. |
Context | Manual Entry | NULL | Pointer to the context structure passed through the callback argument. |
Transfer End Interrupt Enable | MCU Specific Options | Enable the transfer end interrupt. | |
Transfer End Interrupt Priority | Value must be an integer between 0 and 255 | 12 | Select the transfer end interrupt priority. |
Transfer Interval | Value must be a non-negative integer | 0 | Transfer interval |
Channel Priority |
| module.driver.transfer_on_dmac_b.channel_priority.fixed | Channel Priority |
Transfer Continuation |
| DMA transfer only once | When Next0 Register Set Transfer completes, Next1 Register Set Transfer occurs |
Setting 1 Destination Address | Manual Entry | NULL | Specify the transfer destination address. |
Setting 1 Source Address | Manual Entry | NULL | Specify the transfer source address. |
Setting 1 Total Number of Transfer Bytes | Value must be a non-negative integer | 1 | Specify the total number of transfer bytes. |
Setting 2 Destination Address | Manual Entry | NULL | Specify the transfer destination address.(Use only when Transfer with Setting 1 and Setting 2 horizontally is selected in Transfer Continuatuion.) |
Setting 2 Source Address | Manual Entry | NULL | Specify the transfer source address.(Use only when Transfer with Setting 1 and Setting 2 horizontally is selected in Transfer Continuatuion.) |
Setting 2 Total Number of Transfer Bytes | Value must be a non-negative integer | 1 | Specify the total number of transfer bytes.(Use only when Transfer with Setting 1 and Setting 2 horizontally is selected in Transfer Continuatuion.) |
The DMAC peripheral module uses ICLK as the clock source. The ICLK frequency is set by using the Clocks tab of the FSP Configuration editor prior to a build, or by using the CGC module at run-time.
This module does not use I/O pins.
The DMAC Module supports two modes of operation.
This driver only supports the transfer by non-secure access. Also, DMA transfer cannot be performed to the slave area for which the security level has been set.
It is not supported DMA transfer to DDR-SDRAM area (0x6000_0000 to 0x7FFF_FFFF) in the current driver version of RZ/G3S . Therefore, do not specify addresses in this area as source or destination addresses.
This is a basic example of minimal use of the DMAC in an application.
Data Structures | |
struct | dmac_b_register_set_setting_t |
struct | dmac_b_instance_ctrl_t |
struct | dmac_b_extended_cfg_t |
struct | dmac_b_extended_info_t |
Macros | |
#define | DMAC_B_MAX_NORMAL_TRANSFER_LENGTH |
#define | DMAC_B_MAX_BLOCK_TRANSFER_LENGTH |
Enumerations | |
enum | dmac_b_transfer_size_t |
enum | dmac_b_ack_mode_t |
enum | dmac_b_external_detection_t |
enum | dmac_b_internal_detection_t |
enum | dmac_b_request_direction_t |
enum | dmac_b_continuous_setting_t |
enum | dmac_b_channel_scheduling_t |
enum | dmac_b_mode_select_t |
struct dmac_b_register_set_setting_t |
struct dmac_b_instance_ctrl_t |
Control block used by driver. DO NOT INITIALIZE - this structure will be initialized in transfer_api_t::open.
struct dmac_b_extended_cfg_t |
DMAC transfer configuration extension. This extension is required.
Data Fields | |
uint8_t | unit |
Unit number. | |
uint8_t | channel |
Channel number. | |
IRQn_Type | dmac_int_irq |
DMAC interrupt number. | |
uint8_t | dmac_int_ipl |
DMAC interrupt priority. | |
dmac_trigger_event_t | activation_source |
dmac_b_ack_mode_t | ack_mode |
DACK output mode. | |
dmac_b_external_input_pin_t | dreq_input_pin |
DREQ input pin name. | |
dmac_b_external_output_pin_t | ack_output_pin |
DACK output pin name. | |
dmac_b_external_output_pin_t | tend_output_pin |
TEND output pin name. | |
dmac_b_external_detection_t | external_detection_mode |
DMAC request detection method for external pin. | |
dmac_b_internal_detection_t | internal_detection_mode |
DMAC request detection method for internal pin. | |
dmac_b_request_direction_t | activation_request_source_select |
DMAC activation request source. | |
dmac_b_mode_select_t | dmac_mode |
DMAC Mode. | |
dmac_b_continuous_setting_t | continuous_setting |
Next register operation settings. | |
uint16_t | transfer_interval |
DMA transfer interval. | |
dmac_b_channel_scheduling_t | channel_scheduling |
DMA channel scheduling. | |
void(* | p_callback )(dmac_b_callback_args_t *cb_data) |
void const * | p_context |
dmac_trigger_event_t dmac_b_extended_cfg_t::activation_source |
Select which event will trigger the transfer.
void(* dmac_b_extended_cfg_t::p_callback) (dmac_b_callback_args_t *cb_data) |
Callback for transfer end interrupt.
void const* dmac_b_extended_cfg_t::p_context |
Placeholder for user data. Passed to the user p_callback in transfer_callback_args_t.
struct dmac_b_extended_info_t |
DMAC transfer information configuration extension. This extension is required.
Data Fields | ||
---|---|---|
dmac_b_transfer_size_t | src_size |
Select number of source bytes to transfer at once. |
dmac_b_transfer_size_t | dest_size |
Select number of destination bytes to transfer at once. |
dmac_b_register_set_setting_t * | p_next1_register_setting |
Next1 Register set settings |
#define DMAC_B_MAX_NORMAL_TRANSFER_LENGTH |
Max configurable number of transfers in TRANSFER_MODE_NORMAL.
#define DMAC_B_MAX_BLOCK_TRANSFER_LENGTH |
Max number of transfers per block in TRANSFER_MODE_BLOCK
Transfer size specifies the size of each individual transfer.
enum dmac_b_ack_mode_t |
Detection method of the external DMA request signal. See RZ/T2M hardware manual Table 14.19 DMA Transfer Request Detection Operation Setting Table.
Detection method of the internal DMA request signal. See RZ/T2M hardware manual Table 14.19 DMA Transfer Request Detection Operation Setting Table.
DMA activation request source select. See RZ/T2M hardware manual Table 14.19 DMA Transfer Request Detection Operation Setting Table.
Enumerator | |
---|---|
DMAC_B_REQUEST_DIRECTION_SOURCE_MODULE | Requested by a transfer source module. |
DMAC_B_REQUEST_DIRECTION_DESTINATION_MODULE | Requested by a transfer destination module. |
enum dmac_b_mode_select_t |
fsp_err_t R_DMAC_B_Open | ( | transfer_ctrl_t *const | p_api_ctrl, |
transfer_cfg_t const *const | p_cfg | ||
) |
Configure a DMAC channel.
FSP_SUCCESS | Successful open. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
FSP_ERR_IP_CHANNEL_NOT_PRESENT | The configured channel is invalid. |
FSP_ERR_IRQ_BSP_DISABLED | The IRQ associated with the activation source is not enabled in the BSP. |
FSP_ERR_ALREADY_OPEN | The control structure is already opened. |
fsp_err_t R_DMAC_B_Reconfigure | ( | transfer_ctrl_t *const | p_api_ctrl, |
transfer_info_t * | p_info | ||
) |
Reconfigure the transfer with new transfer info.
FSP_SUCCESS | Transfer is configured and will start when trigger occurs. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
FSP_ERR_NOT_ENABLED | DMAC is not enabled. The current configuration must not be valid. |
FSP_ERR_NOT_OPEN | Handle is not initialized. Call R_DMAC_Open to initialize the control block. |
fsp_err_t R_DMAC_B_Reset | ( | transfer_ctrl_t *const | p_api_ctrl, |
void const *volatile | p_src, | ||
void *volatile | p_dest, | ||
uint16_t const | num_transfers | ||
) |
Reset transfer source, destination, and number of transfers.
FSP_ERR_UNSUPPORTED | API not supported. |
fsp_err_t R_DMAC_B_SoftwareStart | ( | transfer_ctrl_t *const | p_api_ctrl, |
transfer_start_mode_t | mode | ||
) |
If the mode is TRANSFER_START_MODE_SINGLE initiate a single transfer with software. If the mode is TRANSFER_START_MODE_REPEAT continue triggering transfers until all of the transfers are completed.
FSP_SUCCESS | Transfer started written successfully. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
FSP_ERR_NOT_OPEN | Handle is not initialized. Call R_DMAC_Open to initialize the control block. |
fsp_err_t R_DMAC_B_SoftwareStop | ( | transfer_ctrl_t *const | p_api_ctrl | ) |
Stop software transfers if they were started with TRANSFER_START_MODE_REPEAT.
FSP_SUCCESS | Transfer stopped written successfully. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
FSP_ERR_NOT_OPEN | Handle is not initialized. Call R_DMAC_Open to initialize the control block. |
fsp_err_t R_DMAC_B_Enable | ( | transfer_ctrl_t *const | p_api_ctrl | ) |
Enable transfers for the configured activation source.
FSP_SUCCESS | Counter value written successfully. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
FSP_ERR_NOT_OPEN | Handle is not initialized. Call R_DMAC_Open to initialize the control block. |
fsp_err_t R_DMAC_B_Disable | ( | transfer_ctrl_t *const | p_api_ctrl | ) |
Disable transfers so that they are no longer triggered by the activation source.
FSP_SUCCESS | Counter value written successfully. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
FSP_ERR_NOT_OPEN | Handle is not initialized. Call R_DMAC_Open to initialize the control block. |
fsp_err_t R_DMAC_B_InfoGet | ( | transfer_ctrl_t *const | p_api_ctrl, |
transfer_properties_t *const | p_info | ||
) |
Set driver specific information in provided pointer.
FSP_SUCCESS | Information has been written to p_info. |
FSP_ERR_NOT_OPEN | Handle is not initialized. Call R_DMAC_Open to initialize the control block. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
fsp_err_t R_DMAC_B_Close | ( | transfer_ctrl_t *const | p_api_ctrl | ) |
Disable transfer and clean up internal data. Implements transfer_api_t::close.
FSP_SUCCESS | Successful close. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
FSP_ERR_NOT_OPEN | Handle is not initialized. Call R_DMAC_Open to initialize the control block. |
fsp_err_t R_DMAC_B_Reload | ( | transfer_ctrl_t *const | p_api_ctrl, |
void const *volatile | p_src, | ||
void *volatile | p_dest, | ||
uint32_t const | num_transfers | ||
) |
Make the following transfer settings to continue the transfer.
FSP_SUCCESS | Successful continuous transfer settings. |
FSP_ERR_ASSERTION | An input parameter is invalid. |
FSP_ERR_NOT_OPEN | Handle is not initialized. Call R_DMAC_Open to initialize the control block. |
fsp_err_t R_DMAC_B_CallbackSet | ( | transfer_ctrl_t *const | p_api_ctrl, |
void(*)(dmac_b_callback_args_t *) | p_callback, | ||
void const *const | p_context, | ||
dmac_b_callback_args_t *const | p_callback_memory | ||
) |
Updates the user callback with the option to provide memory for the callback argument structure. Implements transfer_api_t::callbackSet.
FSP_SUCCESS | Callback updated successfully. |
FSP_ERR_ASSERTION | A required pointer is NULL. |
FSP_ERR_NOT_OPEN | The control block has not been opened. |