RA Flexible Software Package Documentation  Release v6.0.0

 
Comparator, High-Speed (r_acmphs_b)

Functions

fsp_err_t R_ACMPHS_B_Open (comparator_ctrl_t *const p_ctrl, comparator_cfg_t const *const p_cfg)
 
fsp_err_t R_ACMPHS_B_InfoGet (comparator_ctrl_t *const p_ctrl, comparator_info_t *const p_info)
 
fsp_err_t R_ACMPHS_B_OutputEnable (comparator_ctrl_t *const p_ctrl)
 
fsp_err_t R_ACMPHS_B_StatusGet (comparator_ctrl_t *const p_ctrl, comparator_status_t *const p_status)
 
fsp_err_t R_ACMPHS_B_Close (comparator_ctrl_t *p_ctrl)
 

Detailed Description

Driver for the ACMPHS_B peripheral on RA MCUs. This module implements the Comparator Interface.

Overview

Features

The ACMPHS HAL module supports the following features:

Configuration

Build Time Configurations for r_acmphs_b

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

ConfigurationOptionsDefaultDescription
Parameter Checking
  • Default (BSP)
  • Enabled
  • Disabled
Default (BSP) If selected code for parameter checking is included in the build.

Configurations for Analog > Comparator, High-Speed (r_acmphs_b)

This module can be added to the Stacks tab via New Stack > Analog > Comparator, High-Speed (r_acmphs_b).

ConfigurationOptionsDefaultDescription
NameName must be a valid C symbolg_comparator0 Module name.
ChannelMCU Specific OptionsSelect the hardware channel.
Trigger Edge Selector
  • Rising
  • Falling
  • Both Edge
Both Edge The trigger specifies when a comparator callback event should occur. Unused if the interrupt priority is disabled or the callback is NULL.
Noise Filter
  • No sampling (bypass)
  • Sampling at PCLKB
  • Sampling at PCLKB/8
No sampling (bypass) Select the PCLK divisor for the hardware digital debounce filter. Larger divisors provide a longer debounce and take longer for the output to update.
Output Polarity
  • Not Inverted
  • Inverted
Not Inverted When enabled comparator output is inverted. This affects the output read from R_ACMPHS_B_StatusGet(), the pin output level, and the edge trigger.
Pin Output
  • Disabled
  • Enabled
Disabled Turn this on to enable the CMPOUTn signal for this channel. The CMPOUTn signal for each channel is OR'd together and the result is output to VCOUT. More pin output options are available on select MCUs.
CallbackName must be a valid C symbolNULL Define this function in the application. It is called when the Trigger event occurs.
Comparator Interrupt PriorityMCU Specific OptionsSelect the interrupt priority for the comparator interrupt.
Analog Input Voltage SourceMCU Specific OptionsSelect the Analog input voltage source. Channel mentioned in the options represents channel in ACMPHS_B
Reference Voltage Input SourceMCU Specific OptionsSelect the Analog reference voltage source. Channel mentioned in the options represents channel in ACMPHS_B

Clock Configuration

The ACMPHS peripheral is clocked from PCLKB. You can set the PCLKB frequency using the Clocks tab of the RA Configuration editor or by using the CGC Interface at run-time.

Pin Configuration

Comparator output can be enabled or disabled on each channel individually. The VCOUT pin is a logical OR of all comparator outputs.

Usage Notes

Noise Filter

When the noise filter is enabled for a channel, the comparison is evaluated three times before the output of the comparison in VCOUT or ELC event is affected. The sampling rate is driven by PCLKB. The sampling can be further slowed by adjusting the comparator_filter_t setting. NOTE: The R_ACMPLP_StatusGet reflects the comparison results before the effects of the noise filter.

Output Polarity

If output polarity is configured as "Inverted" then the VCOUT signal will be inverted and the R_ACMPHS_StatusGet() will return an inverted status.

Limitations

Once the analog comparator is configured, the program must wait for the stabilization time to elapse before using the comparator.

Examples

Basic Example

The following is a basic example of minimal use of the ACMPHS_B. The comparator is configured to trigger a callback when the input rises above the internal reference voltage (VREF). A GPIO output acts as the comparator input and is externally connected to the CMPIN input of the ACMPHS_B.

/* Connect this control pin to the IVCMP input of the comparator. This can be any GPIO pin
* that is not input only. */
#define ACMPHS_B_EXAMPLE_CONTROL_PIN (BSP_IO_PORT_01_PIN_00)
volatile uint32_t g_comparator_events = 0U;
/* This callback is called when a comparator event occurs. */
void acmphs_b_example_callback (comparator_callback_args_t * p_args)
{
g_comparator_events++;
}
void acmphs_b_example ()
{
fsp_err_t err = FSP_SUCCESS;
/* Disable pin register write protection, if enabled */
/*
* Start with the IVCMP pin low. This example assumes the comparator is configured to trigger
* when the voltage of the analog input to IVCMP rises above voltage of the internal Vref.
*/
(void) R_BSP_PinWrite(ACMPHS_B_EXAMPLE_CONTROL_PIN, BSP_IO_LEVEL_LOW);
/* Initialize the ACMPHS_B module */
err = R_ACMPHS_B_Open(&g_comparator_ctrl, &g_comparator_cfg);
assert(FSP_SUCCESS == err);
/* Wait for the minimum stabilization wait time before enabling output. */
R_ACMPHS_B_InfoGet(&g_comparator_ctrl, &info);
/* Enable the comparator output */
(void) R_ACMPHS_B_OutputEnable(&g_comparator_ctrl);
/* Set the IVCMP pin high. */
(void) R_BSP_PinWrite(ACMPHS_B_EXAMPLE_CONTROL_PIN, BSP_IO_LEVEL_HIGH);
while (0 == g_comparator_events)
{
/* Wait for interrupt. */
}
/* Check status of comparator, Status will be COMPARATOR_STATE_OUTPUT_HIGH */
(void) R_ACMPHS_B_StatusGet(&g_comparator_ctrl, &status);
}

Function Documentation

◆ R_ACMPHS_B_Open()

fsp_err_t R_ACMPHS_B_Open ( comparator_ctrl_t *const  p_ctrl,
comparator_cfg_t const *const  p_cfg 
)

Configures the comparator and starts operation. Callbacks and pin output are not active until outputEnable() is called. comparator_api_t::outputEnable() should be called after the output has stabilized. Implements comparator_api_t::open().

Comparator inputs must be configured in the application code prior to calling this function.

Return values
FSP_SUCCESSOpen successful.
FSP_ERR_ASSERTIONAn input pointer is NULL
FSP_ERR_INVALID_ARGUMENTAn argument is invalid. Filter of 16 (COMPARATOR_FILTER_16), filter of 32 (COMPARATOR_FILTER_32) are not supported in this implementation.
FSP_ERR_ALREADY_OPENThe control block is already open or the hardware lock is taken.
FSP_ERR_IN_USEThe channel is already in use.
FSP_ERR_INVALID_CHANNELSelected channel does not exist.
FSP_ERR_UNSUPPORTEDSelected mode not supported by this API

◆ R_ACMPHS_B_InfoGet()

fsp_err_t R_ACMPHS_B_InfoGet ( comparator_ctrl_t *const  p_ctrl,
comparator_info_t *const  p_info 
)

Provides the minimum stabilization wait time in microseconds. Implements comparator_api_t::infoGet().

Return values
FSP_SUCCESSInformation stored in p_info.
FSP_ERR_ASSERTIONAn input pointer was NULL.
FSP_ERR_NOT_OPENInstance control block is not open.

◆ R_ACMPHS_B_OutputEnable()

fsp_err_t R_ACMPHS_B_OutputEnable ( comparator_ctrl_t *const  p_ctrl)

Enables the comparator output, which can be polled using comparator_api_t::statusGet(). Also enables pin output and interrupts as configured during comparator_api_t::open(). Implements comparator_api_t::outputEnable().

Return values
FSP_SUCCESSComparator output is enabled.
FSP_ERR_ASSERTIONAn input pointer was NULL.
FSP_ERR_NOT_OPENInstance control block is not open.

◆ R_ACMPHS_B_StatusGet()

fsp_err_t R_ACMPHS_B_StatusGet ( comparator_ctrl_t *const  p_ctrl,
comparator_status_t *const  p_status 
)

Provides the operating status of the comparator. Implements comparator_api_t::statusGet().

Return values
FSP_SUCCESSOperating status of the comparator is provided in p_status.
FSP_ERR_ASSERTIONAn input pointer was NULL.
FSP_ERR_NOT_OPENInstance control block is not open.

◆ R_ACMPHS_B_Close()

fsp_err_t R_ACMPHS_B_Close ( comparator_ctrl_t p_ctrl)

Stops the comparator. Implements comparator_api_t::close().

Return values
FSP_SUCCESSInstance control block closed successfully.
FSP_ERR_ASSERTIONAn input pointer was NULL.
FSP_ERR_NOT_OPENInstance control block is not open.