RZV Flexible Software Package Documentation
Release v3.0.0
|
|
Driver for the and ADC12 peripherals on RZ MPUs. This module implements the ADC Interface.
The ADC_E module supports the following features:
Configuration | Options | Default | Description |
---|---|---|---|
Parameter Checking |
| Default (BSP) | If selected code for parameter checking is included in the build. |
Configuration | Options | Default | Description |
---|---|---|---|
General > Name | Name must be a valid C symbol | g_adc0 | Module name |
General > Unit | Unit must be a non-negative integer | 0 | Specifies the ADC Unit to be used. |
General > Resolution |
| 12-Bit | Specifies the conversion resolution for this unit. |
General > Clear after read |
| On | Specifies if the result register will be automatically cleared after the conversion result is read. |
General > Mode |
| Single Scan | Specifies the mode that this ADC unit is used in. |
General > Double-trigger |
| Disabled | When enabled, the scan-end interrupt for Group A is only thrown on every second scan. Extended double-trigger mode (single-scan only) triggers on both ELC events, allowing (for example) a scan on two different timer compare match values. In group mode Group B is unaffected. |
Input > Start Trigger > Group A | Refer to the RZV Configuration tool for available options. | software | A/D Conversion Start Trigger Select for Group A. |
Input > Start Trigger > Group B | Refer to the RZV Configuration tool for available options. | Disabled | A/D Conversion Start Trigger Select for Group B. |
Input > Start Trigger > Group C Enabled |
| Disabled | Set to true to enable Group C, false to disable Group C. |
Input > Start Trigger > Group C | Refer to the RZV Configuration tool for available options. | Disabled | A/D Conversion Start Trigger Select for Group C. |
Input > Start Trigger > ELC Event | MCU Specific Options | Select ELC event. | |
Input > Window Compare > Window A > Enable |
| Disabled | Enable or disable comparison with Window A. |
Input > Window Compare > Window A > Channels to compare |
| Select channels to be compared to Window A. | |
Input > Window Compare > Window A > Channel comparison mode (channel availability varies by MCU and unit) |
| Checking a box sets the comparison mode for that channel to Greater Than or Inside Window depending on whether Window Mode is disabled or enabled (respectively). If left unchecked the comparison mode will likewise be Less Than or Outside Window (respectively). | |
Input > Window Compare > Window A > Lower Reference | Must be a positive 16-bit integer. | 0 | Set the lower comparison value. |
Input > Window Compare > Window A > Upper Reference | Must be a positive 16-bit integer. | 0 | Set the upper comparison value. |
Input > Window Compare > Window B > Enable |
| Disabled | Enable or disable comparison with Window B. |
Input > Window Compare > Window B > Channel to compare (channel availability varies by MCU and unit) |
| Channel 0 | Select a channel to be compared to Window B. |
Input > Window Compare > Window B > Comparison mode |
| module.driver.adc_e.compare.window_b.mode | Select the comparison mode for Window B. For each option, the first condition applies when Window Mode is disabled and the second option applies when Window Mode is enabled. |
Input > Window Compare > Window B > Lower Reference | Must be a positive 16-bit integer. | 0 | Set the lower comparison value. |
Input > Window Compare > Window B > Upper Reference | Must be a positive 16-bit integer. | 0 | Set the upper comparison value. |
Input > Window Compare > Window Mode |
| Disabled | When disabled, ADC values will be compared only with the lower reference on each comparator. When enabled, both the lower and upper reference values will be used to create a comparison window. |
Input > Window Compare > Event Output |
| OR | Select how comparison results should be composited for event output. |
Input > Channel Scan Mask |
| In Normal mode of operation, this bitmask field specifies the channels that are enabled in that ADC unit. In group mode, this field specifies which channels belong to group A. | |
Input > Group B Scan Mask |
| In group mode, this field specifies which channels belong to group B. | |
Input > Group C Scan Mask |
| In group mode, this field specifies which channels belong to group C. | |
Input > Addition/Averaging Mask (channel availability varies by MCU and unit) |
| Select channels to include in the Addition/Averaging Mask | |
Input > Add/Average Count |
| Disabled | Specifies if addition or averaging needs to be done for any of the channels in this unit. |
Input > Group Priority (Valid only in Group Scan Mode) |
| Group A ignored and does not interrupt Group B and Group C | Determines whether an ongoing group B scan can be interrupted by a group A trigger, whether it should abort on a group A trigger, or if it should pause to allow group A scan and restart immediately after group A scan is complete. |
Interrupts > Callback | Name must be a valid C symbol | NULL | A user callback function. If this callback function is provided, it is called from the interrupt service routine (ISR) each time the ADC scan completes. |
Interrupts > Scan End Interrupt Enable | MCU Specific Options | Enable or disable Scan End interrupt. | |
Interrupts > Scan End Interrupt Priority | Value must be an integer between 0 and 255 | 12 | Select scan end interrupt priority. |
Interrupts > Scan End Group B Interrupt Enable | MCU Specific Options | Enable or disable Scan End Group B interrupt. | |
Interrupts > Scan End Group B Interrupt Priority | Value must be an integer between 0 and 255 | 12 | Select group B scan end interrupt priority. |
Interrupts > Scan End Group C Interrupt Enable | MCU Specific Options | Enable or disable Scan End Group C interrupt. | |
Interrupts > Scan End Group C Interrupt Priority | Value must be an integer between 0 and 255 | 12 | Select group C scan end interrupt priority. |
Interrupts > Window Compare A Interrupt Enable | MCU Specific Options | Enable or disable Window Compare A interrupt. | |
Interrupts > Window Compare A Interrupt Priority | Value must be an integer between 0 and 255 | 12 | Select group C scan end interrupt priority. |
Interrupts > Window Compare B Interrupt Enable | MCU Specific Options | Enable or disable Window Compare B interrupt. | |
Interrupts > Window Compare B Interrupt Priority | Value must be an integer between 0 and 255 | 12 | Select group C scan end interrupt priority. |
ELC > Output Event Signal |
| Group A | A/D Event Link Control. |
A/D conversion clock ADC_0_ADCLK is 50MHz, 40MHz, 20MHz, 10MHz or 5MHz.
The ANxxx pins are analog input channels that can be used with the ADC.
The driver supports three operation modes: single-scan, continuous-scan, and group-scan modes. In each mode, analog channels are converted in ascending order of channel number, followed by scans of the voltage sensor if they are included in the mask of channels to scan.
In single scan mode, one or more specified channels are scanned once per trigger.
In continuous scan mode, a single trigger is required to start the scan. Scans continue until R_ADC_E_ScanStop() is called.
Group-scan mode allows the application to allocate channels to one of two groups (A and B and C). Conversion begins when the specified ELC start trigger for that group is received.
The priority of group priority operations is group A > group B > group C. In group priority operation, if the scan start of group B is accepted during the scan of group C, the scan of group C is interrupted and the scan of group B is started. If the scan start of group A is accepted during the scan of group C, the scan of group A is started. The scan of Group C is interrupted and the scan of Group A is started. Similarly, if the scan start of Group A is accepted during the scan of Group B, the scan of Group B is interrupted and the scan of Group A is started.
When double-triggering is enabled a single channel is selected to be scanned twice before an interrupt is thrown. The first scan result when using double-triggering is always saved to the selected channel's data register. The second result is saved to the data duplexing register (ADC_CHANNEL_DUPLEX).
Double-triggering uses Group A; only one channel can be selected when enabled. No other scanning is possible on Group A while double-trigger mode is selected.
When extended double-triggering is enabled both ADC input events are routed to Group A. The interrupt is still thrown after every two scans regardless of the triggering event(s). While the first and second scan are saved to the selected ADC data register and the ADC duplexing register as before, scans associated with event A and B are additionally copied into duplexing register A and B, respectively (ADC_CHANNEL_DUPLEX_A and ADC_CHANNEL_DUPLEX_B).
When using an external or internal trigger as the A/D conversion start condition, follow the section "A/D conversion stop procedure" in the user's manual. If it is configured the ADC scan end event to ELC, the example code in "Event Link Example" is useful.
To use the event output of compare function, Set the mode of operation to Single Scan Mode. The compare function can be configured by enabling both Window A and Window B. Select the channel of Window A. Select Window B channel to NOT SELECTED. Set the upper and lower reference values for both Window A and Window B.
This is a basic example of minimal use of the ADC in an application.
This example demonstrates reading data from a double-trigger scan. A flag is used to wait for a callback event. Two scans must occur before the callback is called. These results are read via R_ADC_E_Read using the selected channel enum value as well as ADC_CHANNEL_DUPLEX.
This example shows how to configure the window compare function at runtime as well as how to handle events and obtain comparison results through a callback.
This example shows how it works if you have set ELC to the ADC scan end event. When the ADC scan end event is set in the ELC, it should be cleared the link after stopping the ADC operation. Please refer to the section "A/D conversion stop procedure" in the user's manual.
Data Structures | |
struct | adc_e_extended_cfg_t |
struct | adc_e_window_cfg_t |
struct | adc_e_channel_cfg_t |
struct | adc_e_instance_ctrl_t |
Enumerations | |
enum | adc_e_mask_t |
enum | adc_e_add_t |
enum | adc_e_clear_t |
enum | adc_e_grpa_t |
enum | adc_e_active_trigger_t |
enum | adc_e_double_trigger_t |
enum | adc_e_compare_cfg_t |
enum | adc_e_window_b_channel_t |
enum | adc_e_window_b_mode_t |
enum | adc_e_elc_t |
struct adc_e_extended_cfg_t |
Extended configuration structure for ADC.
Data Fields | ||
---|---|---|
adc_e_add_t | add_average_count | Add or average samples. |
adc_e_clear_t | clearing | Clear after read. |
adc_trigger_t | trigger_group_b | Group B trigger source; valid only for group mode. |
adc_e_double_trigger_t | double_trigger_mode | Double-trigger mode setting. |
adc_e_active_trigger_t | adc_start_trigger_a | A/D Conversion Start Trigger Group A. |
adc_e_active_trigger_t | adc_start_trigger_b | A/D Conversion Start Trigger Group B. |
bool | adc_start_trigger_c_enabled | Set to true to enable Group C, false to disable Group C. |
adc_e_active_trigger_t | adc_start_trigger_c | A/D Conversion Start Trigger Group C. |
adc_e_elc_t | adc_elc_ctrl | A/D Event Link Control. |
IRQn_Type | window_a_irq | IRQ number for Window Compare A interrupts. |
IRQn_Type | window_b_irq | IRQ number for Window Compare B interrupts. |
uint8_t | window_a_ipl | Priority for Window Compare A interrupts. |
uint8_t | window_b_ipl | Priority for Window Compare B interrupts. |
struct adc_e_window_cfg_t |
ADC Window Compare configuration
Data Fields | ||
---|---|---|
uint32_t | compare_mask | Channel mask to compare with Window A. |
uint32_t | compare_mode_mask | Per-channel condition mask for Window A. |
adc_e_compare_cfg_t | compare_cfg | Window Compare configuration. |
uint16_t | compare_ref_low | Window A lower reference value. |
uint16_t | compare_ref_high | Window A upper reference value. |
uint16_t | compare_b_ref_low | Window B lower reference value. |
uint16_t | compare_b_ref_high | Window A upper reference value. |
adc_e_window_b_channel_t | compare_b_channel | Window B channel. |
adc_e_window_b_mode_t | compare_b_mode | Window B condition setting. |
struct adc_e_channel_cfg_t |
ADC channel(s) configuration
Data Fields | ||
---|---|---|
uint32_t | scan_mask | Channels/bits: bit 0 is ch0; bit 15 is ch15. |
uint32_t | scan_mask_group_b | Valid for group modes. |
uint32_t | scan_mask_group_c | Valid for group modes. |
uint32_t | add_mask | Valid if add enabled in Open(). |
adc_e_window_cfg_t * | p_window_cfg | Pointer to Window Compare configuration. |
adc_e_grpa_t | priority_group_a | Valid for group modes. |
struct adc_e_instance_ctrl_t |
ADC instance control block. DO NOT INITIALIZE. Initialized in adc_api_t::open().
enum adc_e_mask_t |
For ADC Scan configuration adc_channel_cfg_t::scan_mask, adc_channel_cfg_t::scan_mask_group_b, adc_channel_cfg_t::add_mask and adc_channel_cfg_t::sample_hold_mask. Use bitwise OR to combine these masks for desired channels and sensors.
enum adc_e_add_t |
ADC data sample addition and averaging options
enum adc_e_clear_t |
enum adc_e_grpa_t |
ADC action for group A interrupts group B scan. This enumeration is used to specify the priority between Group A and B in group mode.
Defines the registers settings for the ADC trigger.
enum adc_e_compare_cfg_t |
ADC comparison settings
ADC Window B channel
ADC Window B comparison mode
enum adc_e_elc_t |
AD event link control definitions.
fsp_err_t R_ADC_E_Open | ( | adc_ctrl_t * | p_ctrl, |
adc_cfg_t const *const | p_cfg | ||
) |
Sets the operational mode, trigger sources, interrupt priority, and configurations for the peripheral as a whole. If interrupt is enabled, the function registers a callback function pointer for notifying the user whenever a scan has completed.
FSP_SUCCESS | Module is ready for use. |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_ALREADY_OPEN | The instance control structure has already been opened. |
FSP_ERR_IRQ_BSP_DISABLED | A callback is provided, but the interrupt is not enabled. |
FSP_ERR_IP_CHANNEL_NOT_PRESENT | The requested unit does not exist on this MCU. |
FSP_ERR_INVALID_HW_CONDITION | The ADC clock must be at least 1 MHz |
fsp_err_t R_ADC_E_ScanCfg | ( | adc_ctrl_t * | p_ctrl, |
void const *const | p_channel_cfg | ||
) |
Configures the ADC scan parameters. Channel specific settings are set in this function. Pass a pointer to adc_e_channel_cfg_t to p_channel_cfg.
FSP_SUCCESS | Channel specific settings applied. |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_NOT_OPEN | Unit is not open. |
fsp_err_t R_ADC_E_InfoGet | ( | adc_ctrl_t * | p_ctrl, |
adc_info_t * | p_adc_info | ||
) |
Returns the address of the lowest number configured channel and the total number of bytes to be read in order to read the results of the configured channels. If no channels are configured, then a length of 0 is returned.
FSP_SUCCESS | Information stored in p_adc_info. |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_NOT_OPEN | Unit is not open. |
fsp_err_t R_ADC_E_ScanStart | ( | adc_ctrl_t * | p_ctrl | ) |
Starts a software scan or enables the hardware trigger for a scan depending on how the triggers were configured in the R_ADC_E_Open call. If the unit was configured for ELC or external hardware triggering, then this function allows the trigger signal to get to the ADC unit. The function is not able to control the generation of the trigger itself. If the unit was configured for software triggering, then this function starts the software triggered scan.
FSP_SUCCESS | Scan started (software trigger) or hardware triggers enabled. |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_NOT_OPEN | ADC_E is not open. |
FSP_ERR_NOT_INITIALIZED | ADC_E is not initialized. |
FSP_ERR_IN_USE | Another scan is still in progress (software trigger). |
fsp_err_t R_ADC_E_ScanGroupStart | ( | adc_ctrl_t * | p_ctrl, |
adc_group_mask_t | group_id | ||
) |
adc_api_t::scanStart is not supported on the ADCH. Use scanStart instead.
FSP_ERR_UNSUPPORTED | Function not supported in this implementation. |
fsp_err_t R_ADC_E_ScanStop | ( | adc_ctrl_t * | p_ctrl | ) |
Stops the software scan or disables the unit from being triggered by the hardware trigger (ELC or external) based on what type of trigger the unit was configured for in the R_ADC_E_Open function. Stopping a hardware triggered scan via this function does not abort an ongoing scan, but prevents the next scan from occurring. Stopping a software triggered scan aborts an ongoing scan.
FSP_SUCCESS | Scan stopped (software trigger) or hardware triggers disabled. |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_NOT_OPEN | Unit is not open. |
FSP_ERR_NOT_INITIALIZED | Unit is not initialized. |
fsp_err_t R_ADC_E_StatusGet | ( | adc_ctrl_t * | p_ctrl, |
adc_status_t * | p_status | ||
) |
Provides the status of any scan process that was started, including scans started by ELC or external triggers.
FSP_SUCCESS | Module status stored in the provided pointer p_status |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_NOT_OPEN | Unit is not open. |
fsp_err_t R_ADC_E_Read | ( | adc_ctrl_t * | p_ctrl, |
adc_channel_t const | reg_id, | ||
uint16_t *const | p_data | ||
) |
Reads conversion results from a single channel or sensor.
FSP_SUCCESS | Data read into provided p_data. |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_NOT_OPEN | Unit is not open. |
FSP_ERR_NOT_INITIALIZED | Unit is not initialized. |
fsp_err_t R_ADC_E_Read32 | ( | adc_ctrl_t * | p_ctrl, |
adc_channel_t const | reg_id, | ||
uint32_t *const | p_data | ||
) |
Reads conversion results from a single channel or sensor register into a 32-bit result.
FSP_SUCCESS | Data read into provided p_data. |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_NOT_OPEN | Unit is not open. |
FSP_ERR_NOT_INITIALIZED | Unit is not initialized. |
fsp_err_t R_ADC_E_Close | ( | adc_ctrl_t * | p_ctrl | ) |
This function ends any scan in progress, disables interrupts, and removes power to the A/D peripheral.
FSP_SUCCESS | Module closed. |
FSP_ERR_ASSERTION | An input argument is invalid. |
FSP_ERR_NOT_OPEN | Unit is not open. |
fsp_err_t R_ADC_E_OffsetSet | ( | adc_ctrl_t *const | p_ctrl, |
adc_channel_t const | reg_id, | ||
int32_t | offset | ||
) |
adc_api_t::offsetSet is not supported on the ADC.
FSP_ERR_UNSUPPORTED | Function not supported in this implementation. |
fsp_err_t R_ADC_E_Calibrate | ( | adc_ctrl_t *const | p_ctrl, |
void const * | p_extend | ||
) |
adc_api_t::calibrate is not supported on the ADC.
FSP_ERR_UNSUPPORTED | Function not supported in this implementation. |
fsp_err_t R_ADC_E_CallbackSet | ( | adc_ctrl_t *const | p_api_ctrl, |
void(*)(adc_callback_args_t *) | p_callback, | ||
void const *const | p_context, | ||
adc_callback_args_t *const | p_callback_memory | ||
) |
Updates the user callback and has option of providing memory for callback structure. Implements adc_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. |