RZT Flexible Software Package Documentation  Release v2.2.0

 
Analog to Digital Converter (r_adc)

Functions

fsp_err_t R_ADC_Open (adc_ctrl_t *p_ctrl, adc_cfg_t const *const p_cfg)
 
fsp_err_t R_ADC_ScanCfg (adc_ctrl_t *p_ctrl, void const *const p_channel_cfg)
 
fsp_err_t R_ADC_InfoGet (adc_ctrl_t *p_ctrl, adc_info_t *p_adc_info)
 
fsp_err_t R_ADC_ScanStart (adc_ctrl_t *p_ctrl)
 
fsp_err_t R_ADC_ScanGroupStart (adc_ctrl_t *p_ctrl, adc_group_mask_t group_mask)
 
fsp_err_t R_ADC_ScanStop (adc_ctrl_t *p_ctrl)
 
fsp_err_t R_ADC_StatusGet (adc_ctrl_t *p_ctrl, adc_status_t *p_status)
 
fsp_err_t R_ADC_Read (adc_ctrl_t *p_ctrl, adc_channel_t const reg_id, uint16_t *const p_data)
 
fsp_err_t R_ADC_Read32 (adc_ctrl_t *p_ctrl, adc_channel_t const reg_id, uint32_t *const p_data)
 
fsp_err_t R_ADC_SampleStateCountSet (adc_ctrl_t *p_ctrl, adc_sample_state_t *p_sample)
 
fsp_err_t R_ADC_Close (adc_ctrl_t *p_ctrl)
 
fsp_err_t R_ADC_OffsetSet (adc_ctrl_t *const p_ctrl, adc_channel_t const reg_id, int32_t offset)
 
fsp_err_t R_ADC_Calibrate (adc_ctrl_t *const p_ctrl, void const *p_extend)
 
fsp_err_t R_ADC_CallbackSet (adc_ctrl_t *const p_ctrl, void(*p_callback)(adc_callback_args_t *), void const *const p_context, adc_callback_args_t *const p_callback_memory)
 

Detailed Description

Driver for the and ADC12 peripherals on RZ microprocessor. This module implements the ADC Interface.

Overview

Features

The ADC module supports the following features:

Configuration

Build Time Configurations for r_adc

The following build time configurations are defined in fsp_cfg/r_adc_cfg.h:

ConfigurationOptionsDefaultDescription
Parameter Checking
  • Default (BSP)
  • Enabled
  • Disabled
Default (BSP) If selected code for parameter checking is included in the build.
Multiplex Interrupt
  • Enabled
  • Disabled
Disabled Enable multiplex interrupt system-wide.

Configurations for Analog > ADC (r_adc)

This module can be added to the Stacks tab via New Stack > Analog > ADC (r_adc).

ConfigurationOptionsDefaultDescription
General > NameName must be a valid C symbolg_adc0 Module name
General > UnitUnit must be a non-negative integer0 Specifies the ADC Unit to be used.
General > Clear after read
  • Off
  • On
On Specifies if the result register will be automatically cleared after the conversion result is read.
General > Mode
  • Single Scan
  • Continuous Scan
  • Group Scan
Single Scan Specifies the mode that this ADC unit is used in.
General > Double-trigger
  • Disabled
  • Enabled
  • Enabled (extended mode)
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 > Sample and Hold > Sample and Hold Channels (Available only on selected MCUs)
  • Channel 0
  • Channel 1
  • Channel 2
Specifies if this channel is included in the Sample and Hold Mask.
Input > Sample and Hold > Sample Hold States (Applies only to channels 0, 1, 2)Must be a valid non-negative integer with configurable value 4 to 25524 Specifies the updated sample-and-hold count for the channel dedicated sample-and-hold circuit
Input > Window Compare > Window A > EnableMCU Specific OptionsEnable or disable comparison with Window A.
Input > Window Compare > Window A > Channels to compare (channel availability varies by MCU and unit)Refer to the RZT Configuration tool for available options.Select channels to be compared to Window A.
Input > Window Compare > Window A > Channel comparison mode (channel availability varies by MCU and unit)Refer to the RZT Configuration tool for available options.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 ReferenceMust be a positive 16-bit integer.0 Set the lower comparison value.
Input > Window Compare > Window A > Upper ReferenceMust be a positive 16-bit integer.0 Set the upper comparison value.
Input > Window Compare > Window B > EnableMCU Specific OptionsEnable or disable comparison with Window B.
Input > Window Compare > Window B > Channel to compare (channel availability varies by MCU and unit)MCU Specific OptionsSelect a channel to be compared to Window B.
Input > Window Compare > Window B > Comparison mode
  • Less Than or Outside Window
  • Greater Than or Inside Window
module.driver.adc.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 ReferenceMust be a positive 16-bit integer.0 Set the lower comparison value.
Input > Window Compare > Window B > Upper ReferenceMust be a positive 16-bit integer.0 Set the upper comparison value.
Input > Window Compare > Window Mode
  • Disabled
  • Enabled
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 > Start Trigger > Group ARefer to the RZT Configuration tool for available options.Disabled A/D Conversion Start Trigger Select for Group A.
Input > Start Trigger > Group BRefer to the RZT Configuration tool for available options.Disabled A/D Conversion Start Trigger Select for Group B.
Input > Start Trigger > Group C Enabled
  • Disabled
  • Enabled
Disabled Set to true to enable Group C, false to disable Group C.
Input > Start Trigger > Group CRefer to the RZT Configuration tool for available options.Disabled A/D Conversion Start Trigger Select for Group C.
Input > Channel Scan Mask (channel availability varies by MCU)Refer to the RZT Configuration tool for available options.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 (channel availability varies by MCU)Refer to the RZT Configuration tool for available options.In group mode, this field specifies which channels belong to group B.
Input > Add/Average Count
  • Disabled
  • Add two samples
  • Add three samples
  • Add four samples
  • Add sixteen samples
  • Average two samples
  • Average four samples
Disabled Specifies if addition or averaging needs to be done for any of the channels in this unit.
Input > Addition/Averaging Mask (channel availability varies by MCU and unit)Refer to the RZT Configuration tool for available options.Select channels to include in the Addition/Averaging Mask
Input > Group C Scan Mask (channel availability varies by MCU)Refer to the RZT Configuration tool for available options.In group mode, this field specifies which channels belong to group C.
Interrupts > Normal/Group A TriggerMCU Specific OptionsSpecifies the trigger type to be used for this unit.
Interrupts > Group B TriggerMCU Specific OptionsSpecifies the trigger for Group B scanning in group scanning mode. This event is also used to trigger Group A in extended double-trigger mode.
Interrupts > Group Priority (Valid only in Group Scan Mode)
  • Group A cannot interrupt Group B
  • Group A can interrupt Group B; Group B scan restarts at next trigger
  • Group A can interrupt Group B; Group B scan restarts immediately
  • Group A can interrupt Group B; Group B scan restarts immediately and scans continuously
Group A cannot interrupt Group B 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 > CallbackName must be a valid C symbolNULL 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 PriorityMCU Specific OptionsSelect scan end interrupt priority.
Interrupts > Scan End Group B Interrupt PriorityMCU Specific OptionsSelect group B scan end interrupt priority.
Interrupts > Scan End Group C Interrupt PriorityMCU Specific OptionsSelect group C scan end interrupt priority.
Interrupts > Window Compare A Interrupt PriorityMCU Specific OptionsSelect Window Compare A interrupt priority.
Interrupts > Window Compare B Interrupt PriorityMCU Specific OptionsSelect Window Compare B interrupt priority.
ELC > ADC0 event A > Trigger SourceMCU Specific OptionsELC_SSEL settings.
ELC > ADC0 event B > Trigger SourceMCU Specific OptionsELC_SSEL settings.
ELC > ADC1 event A > Trigger SourceMCU Specific OptionsELC_SSEL settings.
ELC > ADC1 event B > Trigger SourceMCU Specific OptionsELC_SSEL settings.
ELC > ADC2 event A > Trigger SourceMCU Specific OptionsELC_SSEL settings.
ELC > ADC2 event B > Trigger SourceMCU Specific OptionsELC_SSEL settings.
ELC > Output Event Signal
  • Single
  • Contiuous
  • Group A
  • Group B
  • Group A or B or C
  • Group C
Single A/D Event Link Control.

Clock Configuration

Peripheral module clock (Unit 0: PCLKH, Unit 1: PCLKL) and A/D conversion clock PCLKADC can be set with the following division ratios: PCLKH to PCLKADC frequency ratios = 8:1

The ADC clock must be at 25 MHz or 18.75 MHz (ICLK/8) when the ADC is used.

For T2H device

Peripheral module clock (Unit 0: PCLKH, Unit 1: PCLKH, Unit 2: PCLKM) and A/D conversion clock PCLKADC can be set with the following division ratios: PCLKH to PCLKADC frequency ratios = 4:1

The ADC clock must be at 62.5 MHz (PCLKH/4) when the ADC is used.

Pin Configuration

The ANxxx pins are analog input channels that can be used with the ADC.

ADTRG0 and ADTRG1 can be used to start scans with an external trigger for unit 0 and 1 respectively. When external triggers are used, ADC scans begin on the falling edge of the ADTRG pin.

Usage Notes

Sample Hold

Enabling the sample and hold functionality reduces the maximum scan frequency because the sample and hold time is added to each scan. Refer to the hardware manual for details on the sample and hold time.

ADC Operational Modes

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.

Single-scan Mode

In single scan mode, one or more specified channels are scanned once per trigger.

Continuous-scan Mode

In continuous scan mode, a single trigger is required to start the scan. Scans continue until R_ADC_ScanStop() is called.

Group-scan Mode

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. The interrupted group scan is able to resume after the priority group scan is complete also.:

Double-triggering

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).

Window Compare Function

The ADC contains comparators that allow scan data to be compared to user-provided reference values. When a value meets the configured condition an interrupt and/or an ELC event can be produced.

Each unit has two configurable comparison units, Window A and Window B. Window A allows for configuring multiple simultaneous channels to compare while Window B only allows one channel at a time.

The window compare function can be configured both through the FSP Configuration tool and at runtime by providing a pointer to an adc_window_cfg_t struct to adc_channel_cfg_t::p_window_cfg when calling R_ADC_ScanCfg. The available comparison modes are shown below:

Window setting Channel mode 0 Channel mode 1
Disabled Scan < Low Ref Scan > Low Ref
Enabled (Scan < Low Ref) OR (Scan > High Ref) Low Ref < Scan < High Ref
Note
The window setting applies to all channels configured on a unit.

Sample-State Count Setting

The application program can modify the setting of the sample-state count for analog channels by calling the R_ADC_SampleStateCountSet() API function. The application program only needs to modify the sample-state count settings from their default values to increase the sampling time. This can be either because the impedance of the input signal is too high to secure sufficient sampling time under the default setting or if the ADCLK is too slow. To modify the sample-state count for a given channel, set the channel number and the number of states when calling the R_ADC_SampleStateCountSet() API function. Valid sample state counts are 8-255.

If the sample state count needs to be changed for multiple channels, the application program must call the R_ADC_SampleStateCountSet() API function repeatedly, with appropriately modified arguments for each channel.

If the ADCLK frequency changes, the sample states may need to be updated.

Selecting Reference Voltage

The ADC12 can select VREFH0 or VREFH1 as the high-potential reference voltage on selected MCU's.

Usage Notes for ADC12

Range of ADC12 Results

The range of the ADC12 is from 0 (lowest) to 0xFFF (highest) when used in single-ended mode. This driver only supports single ended mode.

Examples

Basic Example

This is a basic example of minimal use of the ADC in an application.

/* A channel configuration is generated by the FSP Configuration editor based on the options selected. If additional
* configurations are desired additional adc_channel_cfg_t elements can be defined and passed to R_ADC_ScanCfg. */
const adc_channel_cfg_t g_adc0_channel_cfg =
{
.scan_mask_group_b = 0,
.priority_group_a = (adc_group_a_t) 0,
.add_mask = 0,
.sample_hold_mask = 0,
.sample_hold_states = 0,
};
void adc_basic_example (void)
{
fsp_err_t err = FSP_SUCCESS;
/* Initializes the module. */
err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
/* Handle any errors. This function should be defined by the user. */
handle_error(err);
/* Enable channels. */
err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
handle_error(err);
/* In software trigger mode, start a scan by calling R_ADC_ScanStart(). In other modes, enable external
* triggers by calling R_ADC_ScanStart(). */
(void) R_ADC_ScanStart(&g_adc0_ctrl);
/* Wait for conversion to complete. */
adc_status_t status;
{
(void) R_ADC_StatusGet(&g_adc0_ctrl, &status);
}
/* Read converted data. */
uint16_t channel1_conversion_result;
err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_1, &channel1_conversion_result);
handle_error(err);
}

Double-Trigger Example

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_Read using the selected channel enum value as well as ADC_CHANNEL_DUPLEX.

volatile bool scan_complete_flag = false;
void adc_callback (adc_callback_args_t * p_args)
{
scan_complete_flag = true;
}
void adc_double_trigger_example (void)
{
fsp_err_t err = FSP_SUCCESS;
/* Initialize the module. */
err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
/* Handle any errors. This function should be defined by the user. */
handle_error(err);
/* Enable double-trigger channel. */
err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
handle_error(err);
/* Enable scan triggering from ELC events. */
(void) R_ADC_ScanStart(&g_adc0_ctrl);
/* Wait for conversion to complete. Two scans must be triggered before a callback occurs. */
scan_complete_flag = false;
while (!scan_complete_flag)
{
/* Wait for callback to set flag. */
}
/* Read converted data from both scans. */
uint16_t channel1_conversion_result_0;
uint16_t channel1_conversion_result_1;
err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_1, &channel1_conversion_result_0);
handle_error(err);
err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_DUPLEX, &channel1_conversion_result_1);
handle_error(err);
}

Window Compare Example

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.

adc_window_cfg_t g_adc0_window_cfg =
{
/* Enable Window A and Window B; enable Window mode */
(adc_compare_cfg_t) (ADC_COMPARE_CFG_A_ENABLE | ADC_COMPARE_CFG_B_ENABLE | ADC_COMPARE_CFG_WINDOW_ENABLE),
/* Compare scan values from Channels 0 and 1 */
/* Set Channel 1 condition to be inside the window instead of outside */
.compare_mode_mask = ADC_MASK_CHANNEL_1,
/* Set reference voltage levels for Window A */
.compare_ref_low = ADC_SCAN_MAX / 3,
.compare_ref_high = ADC_SCAN_MAX * 2 / 3,
/* Configure Window B to compare Channel 2 (inside window) */
.compare_b_channel = ADC_WINDOW_B_CHANNEL_2,
.compare_b_mode = ADC_WINDOW_B_MODE_GREATER_THAN_OR_INSIDE,
/* Set reference voltage levels for Window B */
.compare_b_ref_low = ADC_SCAN_MAX / 4,
.compare_b_ref_high = ADC_SCAN_MAX * 3 / 4,
};
void adc0_callback (adc_callback_args_t * p_args)
{
{
/* Get channel that met the comparison criteria */
adc_channel_t channel = p_args->channel;
/* Process event here */
}
else if (ADC_EVENT_WINDOW_COMPARE_B == p_args->event)
{
/* Process Window B events here */
}
else
{
/* ... */
}
}
void adc_window_compare_example (void)
{
fsp_err_t err = FSP_SUCCESS;
/* Open the ADC module */
err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
assert(FSP_SUCCESS == err);
/* Set the window compare configuration in the channel config */
g_adc0_channel_runtime_cfg.p_window_cfg = &g_adc0_window_cfg;
/* The window compare function is configured as part of the scan configuration */
err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_runtime_cfg);
assert(FSP_SUCCESS == err);
/* Main program loop - scan the ADC every second */
while (1)
{
/* Start a scan */
err = R_ADC_ScanStart(&g_adc0_ctrl);
assert(FSP_SUCCESS == err);
/* Delay; any compare events will be handled by the callback */
}
}

Data Structures

struct  adc_sample_state_t
 
struct  adc_window_cfg_t
 
struct  adc_extended_cfg_t
 
struct  adc_channel_cfg_t
 
struct  adc_instance_ctrl_t
 

Enumerations

enum  adc_mask_t
 
enum  adc_add_t
 
enum  adc_clear_t
 
enum  adc_sample_state_reg_t
 
enum  adc_compare_cfg_t
 
enum  adc_window_b_channel_t
 
enum  adc_window_b_mode_t
 
enum  adc_group_a_t
 
enum  adc_active_trigger_t
 
enum  adc_double_trigger_t
 
enum  adc_elc_t
 

Data Structure Documentation

◆ adc_sample_state_t

struct adc_sample_state_t

ADC sample state configuration

Data Fields
adc_sample_state_reg_t reg_id Sample state register ID.
uint8_t num_states Number of sampling states for conversion. Ch16-20/21 use the same value.

◆ adc_window_cfg_t

struct adc_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_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 B upper reference value.
adc_window_b_channel_t compare_b_channel Window B channel.
adc_window_b_mode_t compare_b_mode Window B condition setting.

◆ adc_extended_cfg_t

struct adc_extended_cfg_t

Extended configuration structure for ADC.

Data Fields
adc_add_t add_average_count Add or average samples.
adc_clear_t clearing Clear after read.
adc_trigger_t trigger_group_b Group B trigger source; valid only for group mode.
adc_double_trigger_t double_trigger_mode Double-trigger mode setting.
adc_active_trigger_t adc_start_trigger_a A/D Conversion Start Trigger Group A.
adc_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_active_trigger_t adc_start_trigger_c A/D Conversion Start Trigger Group C.
adc_elc_t adc_elc_ctrl A/D Event Link Control.
IRQn_Type window_a_irq IRQ number for Window Compare A interrupts.
uint8_t window_a_ipl Priority for Window Compare A interrupts.
IRQn_Type window_b_irq IRQ number for Window Compare B interrupts.
uint8_t window_b_ipl Priority for Window Compare B interrupts.

◆ adc_channel_cfg_t

struct adc_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_window_cfg_t * p_window_cfg Pointer to Window Compare configuration.
adc_group_a_t priority_group_a Valid for group modes.
uint8_t sample_hold_mask Channels/bits 0-2.
uint8_t sample_hold_states Number of states to be used for sample and hold. Affects channels 0-2.

◆ adc_instance_ctrl_t

struct adc_instance_ctrl_t

ADC instance control block. DO NOT INITIALIZE. Initialized in adc_api_t::open().

Enumeration Type Documentation

◆ adc_mask_t

enum adc_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.

Enumerator
ADC_MASK_OFF 

No channels selected.

ADC_MASK_CHANNEL_0 

Channel 0 mask.

ADC_MASK_CHANNEL_1 

Channel 1 mask.

ADC_MASK_CHANNEL_2 

Channel 2 mask.

ADC_MASK_CHANNEL_3 

Channel 3 mask.

ADC_MASK_CHANNEL_4 

Channel 4 mask.

ADC_MASK_CHANNEL_5 

Channel 5 mask.

ADC_MASK_CHANNEL_6 

Channel 6 mask.

ADC_MASK_CHANNEL_7 

Channel 7 mask.

ADC_MASK_CHANNEL_8 

Channel 8 mask.

ADC_MASK_CHANNEL_9 

Channel 9 mask.

ADC_MASK_CHANNEL_10 

Channel 10 mask.

ADC_MASK_CHANNEL_11 

Channel 11 mask.

ADC_MASK_CHANNEL_12 

Channel 12 mask.

ADC_MASK_CHANNEL_13 

Channel 13 mask.

ADC_MASK_CHANNEL_14 

Channel 14 mask.

ADC_MASK_CHANNEL_15 

Channel 15 mask.

◆ adc_add_t

enum adc_add_t

ADC data sample addition and averaging options

Enumerator
ADC_ADD_OFF 

Addition turned off for channels/sensors.

ADC_ADD_TWO 

Add two samples.

ADC_ADD_THREE 

Add three samples.

ADC_ADD_FOUR 

Add four samples.

ADC_ADD_SIXTEEN 

Add sixteen samples.

ADC_ADD_AVERAGE_TWO 

Average two samples.

ADC_ADD_AVERAGE_THREE 

Average three samples.

ADC_ADD_AVERAGE_FOUR 

Average four samples.

ADC_ADD_AVERAGE_SIXTEEN 

Average sixteen samples.

◆ adc_clear_t

ADC clear after read definitions

Enumerator
ADC_CLEAR_AFTER_READ_OFF 

Clear after read off.

ADC_CLEAR_AFTER_READ_ON 

Clear after read on.

◆ adc_sample_state_reg_t

ADC sample state registers

Enumerator
ADC_SAMPLE_STATE_REG_CHANNEL_0 

Sample state register channel 0.

ADC_SAMPLE_STATE_REG_CHANNEL_1 

Sample state register channel 1.

ADC_SAMPLE_STATE_REG_CHANNEL_2 

Sample state register channel 2.

ADC_SAMPLE_STATE_REG_CHANNEL_3 

Sample state register channel 3.

ADC_SAMPLE_STATE_REG_CHANNEL_4 

Sample state register channel 4.

ADC_SAMPLE_STATE_REG_CHANNEL_5 

Sample state register channel 5.

ADC_SAMPLE_STATE_REG_CHANNEL_6 

Sample state register channel 6.

ADC_SAMPLE_STATE_REG_CHANNEL_7 

Sample state register channel 7.

ADC_SAMPLE_STATE_REG_CHANNEL_8 

Sample state register channel 8.

ADC_SAMPLE_STATE_REG_CHANNEL_9 

Sample state register channel 9.

ADC_SAMPLE_STATE_REG_CHANNEL_10 

Sample state register channel 10.

ADC_SAMPLE_STATE_REG_CHANNEL_11 

Sample state register channel 11.

ADC_SAMPLE_STATE_REG_CHANNEL_12 

Sample state register channel 12.

ADC_SAMPLE_STATE_REG_CHANNEL_13 

Sample state register channel 13.

ADC_SAMPLE_STATE_REG_CHANNEL_14 

Sample state register channel 14.

ADC_SAMPLE_STATE_REG_CHANNEL_15 

Sample state register channel 15.

ADC_SAMPLE_STATE_REG_CHANNEL_16_TO_31 

Sample state register channel 16 to 31.

◆ adc_compare_cfg_t

ADC comparison settings

◆ adc_window_b_channel_t

ADC Window B channel

Enumerator
ADC_WINDOW_B_CHANNEL_0 

Window B channel 0.

ADC_WINDOW_B_CHANNEL_1 

Window B channel 1.

ADC_WINDOW_B_CHANNEL_2 

Window B channel 2.

ADC_WINDOW_B_CHANNEL_3 

Window B channel 3.

ADC_WINDOW_B_CHANNEL_4 

Window B channel 4.

ADC_WINDOW_B_CHANNEL_5 

Window B channel 5.

ADC_WINDOW_B_CHANNEL_6 

Window B channel 6.

ADC_WINDOW_B_CHANNEL_7 

Window B channel 7.

ADC_WINDOW_B_CHANNEL_8 

Window B channel 8.

ADC_WINDOW_B_CHANNEL_9 

Window B channel 9.

ADC_WINDOW_B_CHANNEL_10 

Window B channel 10.

ADC_WINDOW_B_CHANNEL_11 

Window B channel 11.

ADC_WINDOW_B_CHANNEL_12 

Window B channel 12.

ADC_WINDOW_B_CHANNEL_13 

Window B channel 13.

ADC_WINDOW_B_CHANNEL_14 

Window B channel 14.

ADC_WINDOW_B_CHANNEL_15 

Window B channel 15.

◆ adc_window_b_mode_t

ADC Window B comparison mode

Enumerator
ADC_WINDOW_B_MODE_LESS_THAN_OR_OUTSIDE 

Window B comparison condition is less than or outside.

◆ adc_group_a_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.

Enumerator
ADC_GROUP_A_PRIORITY_OFF 

Group A ignored and does not interrupt ongoing group B scan.

ADC_GROUP_A_GROUP_B_WAIT_FOR_TRIGGER 

Group A interrupts Group B(single scan) which restarts at next Group B trigger.

ADC_GROUP_A_GROUP_B_RESTART_SCAN 

Group A interrupts Group B(single scan) which restarts immediately after Group A scan is complete.

ADC_GROUP_A_GROUP_B_RESUME_SCAN 

Resume scanning of interrupted channels.

ADC_GROUP_A_GROUP_B_CONTINUOUS_SCAN 

Group A interrupts Group B(continuous scan) which continues scanning without a new Group B trigger.

◆ adc_active_trigger_t

Defines the registers settings for the ADC trigger.

Enumerator
ADC_ACTIVE_TRIGGER_EXTERNAL 

Input pin for the trigger.

ADC_ACTIVE_TRIGGER_TRGA1N 

Compare match with or input capture to MTU1.TGRA.

ADC_ACTIVE_TRIGGER_TRGA2N 

Compare match with or input capture to MTU2.TGRA.

ADC_ACTIVE_TRIGGER_TRGA3N 

Compare match with or input capture to MTU3.TGRA.

ADC_ACTIVE_TRIGGER_TRGA0N 

Compare match with or input capture to MTU0.TGRA.

ADC_ACTIVE_TRIGGER_TRGA4N 

Compare match with or input capture to MTU4.TGRA, or an underflow of MTU4.TCNT (in the trough) in complementary PWM mode.

ADC_ACTIVE_TRIGGER_TRGA6N 

Compare match with MTU6.TGRA.

ADC_ACTIVE_TRIGGER_TRGA7N 

Compare match with MTU7.TGRA.

ADC_ACTIVE_TRIGGER_TRG0N 

Compare match with MTU0.TGRE.

ADC_ACTIVE_TRIGGER_TRG4AN 

Compare match between MTU4.TADCORA and MTU4.TCNT.

ADC_ACTIVE_TRIGGER_TRG4BN 

Compare match between MTU4.TADCORB and MTU4.TCNT.

ADC_ACTIVE_TRIGGER_TRG4AN_BN 

Compare match between MTU4.TADCORA and MTU4.TCNT, or between MTU4.TADCORB and MTU4.TCNT.

ADC_ACTIVE_TRIGGER_TRG4ABN 

Compare match between MTU4.TADCORA and MTU4.TCNT, and between MTU4.TADCORB and MTU4.TCNT (when interrupt skipping function 2 is in use)

ADC_ACTIVE_TRIGGER_TRG7AN 

Compare match between MTU7.TADCORA and MTU7.TCNT.

ADC_ACTIVE_TRIGGER_TRG7BN 

Compare match between MTU7.TADCORB and MTU7.TCNT.

ADC_ACTIVE_TRIGGER_TRG7AN_BN 

Compare match between MTU7.TADCORA and MTU7.TCNT, or between MTU7.TADCORB and MTU7.TCNT.

ADC_ACTIVE_TRIGGER_TRG7ABN 

(when interrupt skipping function 2 is in use)

Compare match between MTU7.TADCORA and MTU7.TCNT, and between MTU7.TADCORB and MTU7.TCNT

ADC_ACTIVE_TRIGGER_ELC_TRIGGER 

A/D Startup source A from ELC.

ADC_ACTIVE_TRIGGER_ELC_TRIGGER_GROUP_B 

A/D Startup source B from ELC.

ADC_ACTIVE_TRIGGER_DISABLED 

A/D Start trigger disabled.

◆ adc_double_trigger_t

ADC double-trigger mode definitions

Enumerator
ADC_DOUBLE_TRIGGER_DISABLED 

Double-triggering disabled.

ADC_DOUBLE_TRIGGER_ENABLED 

Double-triggering enabled.

ADC_DOUBLE_TRIGGER_ENABLED_EXTENDED 

Double-triggering enabled on both ADC ELC events.

◆ adc_elc_t

enum adc_elc_t

AD event link control definitions.

Enumerator
ADC_ELC_SINGLE_SCAN 

At the end of a single scan GCELC = 0b, ELCC[1:0] = 00b.

ADC_ELC_CONTINUOUS_SCAN 

At the end of a contiuous scan GCELC = 0b, ELCC[1:0] = 00b.

ADC_ELC_GROUP_A_SCAN 

At the end of a group_a scan GCELC = 0b, ELCC[1:0] = 00b.

ADC_ELC_GROUP_B_SCAN 

At the end of a group_b scan GCELC = 0b, ELCC[1:0] = 01b.

ADC_ELC_GROUP_A_B_C_SCAN 

At the end of a group_abc scan GCELC = 0b, ELCC[1:0] = 1xb.

ADC_ELC_GROUP_C_SCAN 

At the end of a group_c scan GCELC = 1b, ELCC[1:0] = 00b.

Function Documentation

◆ R_ADC_Open()

fsp_err_t R_ADC_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.

Return values
FSP_SUCCESSModule is ready for use.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_ALREADY_OPENThe instance control structure has already been opened.
FSP_ERR_IRQ_BSP_DISABLEDA callback is provided, but the interrupt is not enabled.
FSP_ERR_IP_CHANNEL_NOT_PRESENTThe requested unit does not exist on this MCU.
FSP_ERR_INVALID_HW_CONDITIONThe ADC clock must be at least 1 MHz

◆ R_ADC_ScanCfg()

fsp_err_t R_ADC_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_channel_cfg_t to p_channel_cfg.

Note
This starts group B scans if adc_channel_cfg_t::priority_group_a is set to ADC_GROUP_A_GROUP_B_CONTINUOUS_SCAN.
Return values
FSP_SUCCESSChannel specific settings applied.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.

◆ R_ADC_InfoGet()

fsp_err_t R_ADC_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 and return the ELC Event name. If no channels are configured, then a length of 0 is returned.

Note
In group mode, information is returned for group A only. Calculating information for group B is not currently supported.
Return values
FSP_SUCCESSInformation stored in p_adc_info.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.

◆ R_ADC_ScanStart()

fsp_err_t R_ADC_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_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.

Precondition
Call R_ADC_ScanCfg after R_ADC_Open before starting a scan.
Return values
FSP_SUCCESSScan started (software trigger) or hardware triggers enabled.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.
FSP_ERR_IN_USEAnother scan is still in progress (software trigger).

◆ R_ADC_ScanGroupStart()

fsp_err_t R_ADC_ScanGroupStart ( adc_ctrl_t p_ctrl,
adc_group_mask_t  group_mask 
)

adc_api_t::scanGroupStart is not supported on the ADC. Use scanStart instead.

Return values
FSP_ERR_UNSUPPORTEDFunction not supported in this implementation.

◆ R_ADC_ScanStop()

fsp_err_t R_ADC_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_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.

Return values
FSP_SUCCESSScan stopped (software trigger) or hardware triggers disabled.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.

◆ R_ADC_StatusGet()

fsp_err_t R_ADC_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.

Return values
FSP_SUCCESSModule status stored in the provided pointer p_status
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.

◆ R_ADC_Read()

fsp_err_t R_ADC_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.

Return values
FSP_SUCCESSData read into provided p_data.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.

◆ R_ADC_Read32()

fsp_err_t R_ADC_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.

Return values
FSP_SUCCESSData read into provided p_data.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.

◆ R_ADC_SampleStateCountSet()

fsp_err_t R_ADC_SampleStateCountSet ( adc_ctrl_t p_ctrl,
adc_sample_state_t p_sample 
)

Sets the sample state count for individual channels. This only needs to be set for special use cases. Normally, use the default values out of reset.

Note
The sample states for the temperature and voltage sensor are set in R_ADC_ScanCfg.
Return values
FSP_SUCCESSSample state count updated.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.

◆ R_ADC_Close()

fsp_err_t R_ADC_Close ( adc_ctrl_t p_ctrl)

This function ends any scan in progress, disables interrupts, and removes power to the A/D peripheral.

Return values
FSP_SUCCESSModule closed.
FSP_ERR_ASSERTIONAn input argument is invalid.
FSP_ERR_NOT_OPENUnit is not open.

◆ R_ADC_OffsetSet()

fsp_err_t R_ADC_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.

Return values
FSP_ERR_UNSUPPORTEDFunction not supported in this implementation.

◆ R_ADC_Calibrate()

fsp_err_t R_ADC_Calibrate ( adc_ctrl_t *const  p_ctrl,
void const *  p_extend 
)

adc_api_t::R_ADC_Calibrate is not supported on the ADC.

Return values
FSP_ERR_UNSUPPORTEDFunction not supported in this implementation.

◆ R_ADC_CallbackSet()

fsp_err_t R_ADC_CallbackSet ( adc_ctrl_t *const  p_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

Return values
FSP_SUCCESSCallback updated successfully.
FSP_ERR_ASSERTIONA required pointer is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.