![]() |
nrfx 4.5.0
|
Successive Approximation Analog-to-Digital Converter (SAADC) peripheral driver. More...
Topics | |
| SAADC peripheral driver configuration | |
Data Structures | |
| struct | nrfx_saadc_channel_t |
| SAADC channel configuration structure. More... | |
| struct | nrfx_saadc_adv_config_t |
| SAADC driver advanced mode configuration structure. More... | |
| struct | nrfx_saadc_done_evt_t |
| SAADC driver done event data. More... | |
| struct | nrfx_saadc_limit_evt_t |
| SAADC driver limit event data. More... | |
| struct | nrfx_saadc_evt_t |
| SAADC driver event structure. More... | |
Macros | |
| #define | NRFX_SAADC_DEFAULT_ACQTIME NRF_SAADC_ACQTIME_10US |
| Auxiliary symbol specifying default value for the SAADC acquisition time. | |
| #define | NRFX_SAADC_DEFAULT_CONV_TIME 7 |
| Auxiliary symbol specifying default value for the SAADC conversion time. | |
| #define | NRFX_SAADC_INTERNAL_TIMER_INTERVAL_MAX_US 128U |
| Maximum value of the internal timer interval in microseconds. | |
| #define | NRFX_SAADC_REF_INTERNAL_VALUE NRFX_ANALOG_REF_INTERNAL_VAL |
| Symbol specifying internal reference voltage. | |
| #define | NRFX_SAADC_DEFAULT_CHANNEL_SE(_pin_p, _index) |
| SAADC channel default configuration for the single-ended mode. | |
| #define | NRFX_SAADC_DEFAULT_CHANNEL_DIFFERENTIAL(_pin_p, _pin_n, _index) |
| SAADC channel default configuration for the differential mode. | |
| #define | NRFX_SAADC_SAMPLES_TO_BYTES(_samples) |
| Macro for getting number of bytes needed to store specified number of SAADC samples. | |
| #define | NRFX_SAADC_SAMPLE_GET(_samples, _index) |
| Macro for getting specified SAADC sample from the filled buffer. | |
| #define | NRFX_SAADC_DEFAULT_ADV_CONFIG |
| SAADC driver advanced mode default configuration. | |
Typedefs | |
| typedef void(* | nrfx_saadc_event_handler_t) (nrfx_saadc_evt_t const *p_event) |
| SAADC driver event handler. | |
Enumerations | |
| enum | nrfx_saadc_evt_type_t { NRFX_SAADC_EVT_DONE , NRFX_SAADC_EVT_LIMIT , NRFX_SAADC_EVT_CALIBRATEDONE , NRFX_SAADC_EVT_BUF_REQ , NRFX_SAADC_EVT_READY , NRFX_SAADC_EVT_FINISHED } |
| SAADC driver event types. More... | |
Functions | |
| int | nrfx_saadc_init (uint8_t interrupt_priority) |
| Function for initializing the SAADC driver. | |
| void | nrfx_saadc_uninit (void) |
| Function for uninitializing the SAADC driver. | |
| bool | nrfx_saadc_init_check (void) |
| Function for checking if the SAADC driver is initialized. | |
| uint16_t | nrfx_saadc_interval_to_cc (uint16_t interval_us) |
| Function for getting the internal timer CC value from the interval in microseconds. | |
| int | nrfx_saadc_channels_config (nrfx_saadc_channel_t const *p_channels, uint32_t channel_count) |
| Function for configuring multiple SAADC channels. | |
| int | nrfx_saadc_channel_config (nrfx_saadc_channel_t const *p_channel) |
| Function for configuring single SAADC channel. | |
| uint32_t | nrfx_saadc_channels_configured_get (void) |
| Function for getting the currently configured SAADC channels. | |
| int | nrfx_saadc_channels_deconfig (uint32_t channel_mask) |
| Function for deconfiguring the specified SAADC channels. | |
| int | nrfx_saadc_simple_mode_set (uint32_t channel_mask, nrf_saadc_resolution_t resolution, nrf_saadc_oversample_t oversampling, nrfx_saadc_event_handler_t event_handler) |
| Function for setting the SAADC driver in the simple mode. | |
| int | nrfx_saadc_advanced_mode_set (uint32_t channel_mask, nrf_saadc_resolution_t resolution, nrfx_saadc_adv_config_t const *p_config, nrfx_saadc_event_handler_t event_handler) |
| Function for setting the SAADC driver in the advanced mode. | |
| int | nrfx_saadc_buffer_set (nrf_saadc_value_t *p_buffer, uint16_t size) |
| Function for supplying the buffer to be used in the next part of the conversion. | |
| int | nrfx_saadc_mode_trigger (void) |
| Function for triggering the conversion in the configured mode. | |
| void | nrfx_saadc_abort (void) |
| Function for aborting the ongoing and buffered conversions. | |
| int | nrfx_saadc_limits_set (uint8_t channel, int16_t limit_low, int16_t limit_high) |
| Function for setting the SAADC channel limits. | |
| int | nrfx_saadc_offset_calibrate (nrfx_saadc_event_handler_t calib_event_handler) |
| Function for starting the SAADC offset calibration. | |
Successive Approximation Analog-to-Digital Converter (SAADC) peripheral driver.
| #define NRFX_SAADC_DEFAULT_ADV_CONFIG |
SAADC driver advanced mode default configuration.
This configuration sets up advanced mode of the SAADC driver with the following options:
| [in] | _pin_p | Positive input analog pin. |
| [in] | _pin_n | Negative input analog pin. |
| [in] | _index | Channel index. |
| #define NRFX_SAADC_DEFAULT_CHANNEL_DIFFERENTIAL | ( | _pin_p, | |
| _pin_n, | |||
| _index ) |
SAADC channel default configuration for the differential mode.
This configuration sets up differential SAADC channel with the following options:
| [in] | _pin_p | Positive input analog pin. |
| [in] | _pin_n | Negative input analog pin. |
| [in] | _index | Channel index. |
| #define NRFX_SAADC_DEFAULT_CHANNEL_SE | ( | _pin_p, | |
| _index ) |
SAADC channel default configuration for the single-ended mode.
This configuration sets up single-ended SAADC channel with the following options:
| [in] | _pin_p | Positive input analog pin. |
| [in] | _index | Channel index. |
| #define NRFX_SAADC_SAMPLE_GET | ( | _samples, | |
| _index ) |
Macro for getting specified SAADC sample from the filled buffer.
| [in] | _samples | Pointer to the buffer filled with SAADC samples. |
| [in] | _index | Sample index. |
| #define NRFX_SAADC_SAMPLES_TO_BYTES | ( | _samples | ) |
Macro for getting number of bytes needed to store specified number of SAADC samples.
| [in] | _samples | Number of samples. |
| typedef void(* nrfx_saadc_event_handler_t) (nrfx_saadc_evt_t const *p_event) |
SAADC driver event handler.
When operating in the advanced mode:
| [in] | p_event | Pointer to an SAADC driver event. The event structure is allocated on the stack, so it is valid only within the context of the event handler. |
SAADC driver event types.
| void nrfx_saadc_abort | ( | void | ) |
Function for aborting the ongoing and buffered conversions.
| int nrfx_saadc_advanced_mode_set | ( | uint32_t | channel_mask, |
| nrf_saadc_resolution_t | resolution, | ||
| nrfx_saadc_adv_config_t const * | p_config, | ||
| nrfx_saadc_event_handler_t | event_handler ) |
Function for setting the SAADC driver in the advanced mode.
The advanced mode allows performing double-buffered conversions of arbitrary length. The conversions can be done in a blocking or non-blocking manner. When performing conversions in the non-blocking manner and nrfx_saadc_adv_config_t::internal_timer_cc is set to 0, sampling needs to be done by triggering NRF_SAADC_TASK_SAMPLE externally (for example by using the TIMER and/or the PPI/DPPI). When performing conversions in the non-blocking manner and nrfx_saadc_adv_config_t::start_on_end is false, the NRF_SAADC_TASK_START needs to be triggered on NRF_SAADC_EVENT_END externally (for example by using the PPI/DPPI). If nrfx_saadc_adv_config_t::start_on_end is true, the NRF_SAADC_TASK_START is triggered by the driver in the interrupt context or by the hardware using dedicated shorts, if available. Sampling is initiated by calling nrfx_saadc_mode_trigger(). In case of performing conversions in the blocking manner, nrfx_saadc_mode_trigger() may need to be called several times as each call sample each requested channel once.
| [in] | channel_mask | Bitmask of channels to be used in the advanced mode. |
| [in] | resolution | Resolution configuration. |
| [in] | p_config | Pointer to the structure with the advanced mode configuration. |
| [in] | event_handler | Event handler provided by the user. In case of providing NULL, the conversion will be performed in the blocking manner. |
| 0 | Initialization was successful. |
| -EBUSY | There is a conversion or calibration ongoing. |
| -EINVAL | Attempt to activate channel that is not configured. |
| -ENOTSUP | Attempt to activate either of the following:
|
| int nrfx_saadc_buffer_set | ( | nrf_saadc_value_t * | p_buffer, |
| uint16_t | size ) |
Function for supplying the buffer to be used in the next part of the conversion.
| [in] | p_buffer | Pointer to the buffer to be filled with conversion results. |
| [in] | size | Number of samples in the buffer. |
| 0 | Buffer was supplied successfully. |
| -EACCES | The provided buffer is not in the Data RAM region. |
| -E2BIG | The provided buffer is not aligned to the number of activated channels or is too long for the EasyDMA to handle. |
| -EINPROGRESS | The driver is in the idle mode. |
| -EALREADY | Both buffers for double-buffered conversions are already set. |
| int nrfx_saadc_channel_config | ( | nrfx_saadc_channel_t const * | p_channel | ) |
Function for configuring single SAADC channel.
| [in] | p_channel | Pointer to the channel configuration structure. |
| 0 | Configuration was successful. |
| -EBUSY | There is a conversion or calibration ongoing. |
| -EINVAL | Attempt to configure an invalid analog pin. |
| int nrfx_saadc_channels_config | ( | nrfx_saadc_channel_t const * | p_channels, |
| uint32_t | channel_count ) |
Function for configuring multiple SAADC channels.
| [in] | p_channels | Pointer to the array of channel configuration structures. |
| [in] | channel_count | Number of channels to be configured. |
| 0 | Configuration was successful. |
| -EBUSY | There is a conversion or calibration ongoing. |
| -EINVAL | Attempt to configure the same channel more than once or attempt to configure an invalid analog pin. |
| uint32_t nrfx_saadc_channels_configured_get | ( | void | ) |
Function for getting the currently configured SAADC channels.
| int nrfx_saadc_channels_deconfig | ( | uint32_t | channel_mask | ) |
Function for deconfiguring the specified SAADC channels.
| [in] | channel_mask | Bitmask of channels to be deconfigured. |
| 0 | Deconfiguration was successful. |
| -EBUSY | There is a conversion or calibration ongoing. |
| int nrfx_saadc_init | ( | uint8_t | interrupt_priority | ) |
Function for initializing the SAADC driver.
| [in] | interrupt_priority | Interrupt priority. |
| 0 | Initialization was successful. |
| -EALREADY | The driver is already initialized. |
| bool nrfx_saadc_init_check | ( | void | ) |
Function for checking if the SAADC driver is initialized.
| true | Driver is already initialized. |
| false | Driver is not initialized. |
| uint16_t nrfx_saadc_interval_to_cc | ( | uint16_t | interval_us | ) |
Function for getting the internal timer CC value from the interval in microseconds.
| [in] | interval_us | The interval in microseconds to be converted. |
| int nrfx_saadc_limits_set | ( | uint8_t | channel, |
| int16_t | limit_low, | ||
| int16_t | limit_high ) |
Function for setting the SAADC channel limits.
When limits are enabled and the conversion result exceeds the defined bounds, the handler function is called with the corresponding event as parameter.
| [in] | channel | Channel index. |
| [in] | limit_low | Limit low value to generate interrupt. Use INT16_MIN to disable interrupt generation. |
| [in] | limit_high | Limit high value to generate interrupt. Use INT16_MAX to disable interrupt generation. |
| 0 | Requested channel limits were set. |
| -EINVAL | Attempt to activate the limits on disabled channel. |
| -EPERM | Attempt to activate the limits for blocking conversions. |
| -EINPROGRESS | Attempt to activate the limits without configured mode. |
| int nrfx_saadc_mode_trigger | ( | void | ) |
Function for triggering the conversion in the configured mode.
| 0 | Operation finished successfully in the blocking manner or started successfully in the non-blocking manner. |
| -EBUSY | The driver is performing the conversion in the advanced blocking mode. Call the function again to continue the conversion. |
| -ENOMEM | There is no buffer provided. Supply the buffer using nrfx_saadc_buffer_set() and try again. |
| -EINPROGRESS | There is an ongoing conversion or calibration being performed in the non-blocking manner or the driver is in the idle mode. |
| int nrfx_saadc_offset_calibrate | ( | nrfx_saadc_event_handler_t | calib_event_handler | ) |
Function for starting the SAADC offset calibration.
| [in] | calib_event_handler | Calibration event handler provided by the user. In case of providing NULL, the calibration will be performed in the blocking manner. |
| 0 | Calibration finished successfully in the blocking manner or started successfully in the non-blocking manner. |
| -EBUSY | There is a conversion or calibration ongoing. |
| int nrfx_saadc_simple_mode_set | ( | uint32_t | channel_mask, |
| nrf_saadc_resolution_t | resolution, | ||
| nrf_saadc_oversample_t | oversampling, | ||
| nrfx_saadc_event_handler_t | event_handler ) |
Function for setting the SAADC driver in the simple mode.
The simple mode allows obtaining a single sample from each requested channel. The conversion can be done in a blocking or non-blocking manner. Sampling is initiated by calling nrfx_saadc_mode_trigger() once.
| [in] | channel_mask | Bitmask of channels to be used in the simple mode. |
| [in] | resolution | Resolution configuration. |
| [in] | oversampling | Oversampling configuration. |
| [in] | event_handler | Event handler provided by the user. In case of providing NULL, the conversion will be performed in the blocking manner. |
| 0 | Initialization was successful. |
| -EBUSY | There is a conversion or calibration ongoing. |
| -EINVAL | Attempt to activate channel that is not configured. |
| void nrfx_saadc_uninit | ( | void | ) |
Function for uninitializing the SAADC driver.
This function stops all ongoing conversions and disables all channels.