SAADC driver¶
-
group
nrfx_saadc
Successive Approximation Analog-to-Digital Converter (SAADC) peripheral driver.
Defines
-
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:
resistor ladder disabled
gain: 1/6
reference voltage: internal 0.6 V
sample acquisition time: 10 us
burst disabled
- Parameters
_pin_p – [in] Positive input analog pin.
_index – [in] Channel index.
-
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:
resistor ladder disabled
gain: 1/6
reference voltage: internal 0.6 V
sample acquisition time: 10 us
burst disabled
- Parameters
_pin_p – [in] Positive input analog pin.
_pin_n – [in] Negative input analog pin.
_index – [in] Channel index.
-
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:
oversampling disabled
burst disabled
internal sampling timer disabled
triggering of the START task on the END event disabled
- Parameters
_pin_p – [in] Positive input analog pin.
_pin_n – [in] Negative input analog pin.
_index – [in] Channel index.
Typedefs
-
typedef void (*
nrfx_saadc_event_handler_t
)(nrfx_saadc_evt_t const *p_event)¶ SAADC driver event handler.
When operating in the advanced mode:
when the sampling is performed by the external timer, the external timer can be safely started on NRFX_SAADC_EVT_READY and stopped on NRFX_SAADC_EVT_FINISHED.
call the nrfx_saadc_buffer_set() on NRFX_SAADC_EVT_BUF_REQ to achieve the continuous conversion.
- Parameters
p_event – [in] 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.
Enums
-
enum
nrfx_saadc_evt_type_t
¶ SAADC driver event types.
Values:
-
enumerator
NRFX_SAADC_EVT_DONE
¶ Event generated when the buffer is filled with samples.
-
enumerator
NRFX_SAADC_EVT_LIMIT
¶ Event generated when one of the limits is reached.
-
enumerator
NRFX_SAADC_EVT_CALIBRATEDONE
¶ Event generated when the calibration is complete.
-
enumerator
NRFX_SAADC_EVT_BUF_REQ
¶ Event generated when the next buffer for continuous conversion is requested.
-
enumerator
NRFX_SAADC_EVT_READY
¶ Event generated when the first buffer is acquired by the peripheral and sampling can be started.
-
enumerator
NRFX_SAADC_EVT_FINISHED
¶ Event generated when all supplied buffers are filled with results.
-
enumerator
Functions
-
nrfx_err_t
nrfx_saadc_init
(uint8_t interrupt_priority)¶ Function for initializing the SAADC driver.
- Parameters
interrupt_priority – [in] Interrupt priority.
- Returns NRFX_SUCCESS
Initialization was successful.
- Returns NRFX_ERROR_INVALID_STATE
The driver is already initialized.
-
void
nrfx_saadc_uninit
(void)¶ Function for uninitializing the SAADC driver.
This function stops all ongoing conversions and disables all channels.
-
nrfx_err_t
nrfx_saadc_channels_config
(nrfx_saadc_channel_t const *p_channels, uint32_t channel_count)¶ Function for configuring multiple SAADC channels.
Note
The values of the nrf_saadc_channel_config_t::burst fields in channel configurations are ignored. They will be overridden with the value suitable for the selected driver operation mode.
Note
The desired mode (simple or advanced) must be set after the channels are configured.
Warning
This function overrides previous configuration done on any channel by nrfx_saadc_channels_config or nrfx_saadc_channel_config.
- Parameters
p_channels – [in] Pointer to the array of channel configuration structures.
channel_count – [in] Number of channels to be configured.
- Returns NRFX_SUCCESS
Configuration was successful.
- Returns NRFX_ERROR_BUSY
There is a conversion or calibration ongoing.
- Returns NRFX_ERROR_INVALID_PARAM
Attempt to configure the same channel more than once.
-
nrfx_err_t
nrfx_saadc_channel_config
(nrfx_saadc_channel_t const *p_channel)¶ Function for configuring single SAADC channel.
Note
The values of the nrf_saadc_channel_config_t::burst fields in channel configurations are ignored. They will be overridden with the value suitable for the selected driver operation mode.
Warning
This function overrides previous configuration done on specified channel by nrfx_saadc_channels_config or nrfx_saadc_channel_config.
- Parameters
p_channel – [in] Pointer to the channel configuration structure.
- Returns NRFX_SUCCESS
Configuration was successful.
- Returns NRFX_ERROR_BUSY
There is a conversion or calibration ongoing.
-
nrfx_err_t
nrfx_saadc_channels_deconfig
(uint32_t channel_mask)¶ Function for deconfiguring the specified SAADC channels.
- Parameters
channel_mask – [in] Bitmask of channels to be deconfigured.
- Returns NRFX_SUCCESS
Deconfiguration was successful.
- Returns NRFX_ERROR_BUSY
There is a conversion or calibration ongoing.
-
nrfx_err_t
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.
- Parameters
channel_mask – [in] Bitmask of channels to be used in the simple mode.
resolution – [in] Resolution configuration.
oversampling – [in] Oversampling configuration.
event_handler – [in] Event handler provided by the user. In case of providing NULL, the conversion will be performed in the blocking manner.
- Returns NRFX_SUCCESS
Initialization was successful.
- Returns NRFX_ERROR_BUSY
There is a conversion or calibration ongoing.
- Returns NRFX_ERROR_INVALID_PARAM
Attempt to activate channel that is not configured.
-
nrfx_err_t
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). 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.
Note
The internal timer can only be used when a single input channel is enabled.
Note
The internal timer can only be used in the non-blocking mode.
- Parameters
channel_mask – [in] Bitmask of channels to be used in the advanced mode.
resolution – [in] Resolution configuration.
p_config – [in] Pointer to the structure with the advanced mode configuration.
event_handler – [in] Event handler provided by the user. In case of providing NULL, the conversion will be performed in the blocking manner.
- Returns NRFX_SUCCESS
Initialization was successful.
- Returns NRFX_ERROR_BUSY
There is a conversion or calibration ongoing.
- Returns NRFX_ERROR_INVALID_PARAM
Attempt to activate channel that is not configured.
- Returns NRFX_ERROR_NOT_SUPPORTED
Attempt to activate internal timer or oversampling without burst with multiple channels enabled.
-
nrfx_err_t
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.
- Parameters
p_buffer – [in] Pointer to the buffer to be filled with conversion results.
size – [in] Number of nrf_saadc_value_t samples in buffer.
- Returns NRFX_SUCCESS
Buffer was supplied successfully.
- Returns NRFX_ERROR_INVALID_ADDR
The provided buffer is not in the Data RAM region.
- Returns NRFX_ERROR_INVALID_LENGTH
The provided buffer is not aligned to the number of activated channels or is too long for the EasyDMA to handle.
- Returns NRFX_ERROR_INVALID_STATE
The driver is in the idle mode.
- Returns NRFX_ERROR_ALREADY_INITIALIZED
Both buffers for double-buffered conversions are already set.
-
nrfx_err_t
nrfx_saadc_mode_trigger
(void)¶ Function for triggering the conversion in the configured mode.
- Returns NRFX_SUCCESS
Operation finished successfully in the blocking manner or started successfully in the non-blocking manner.
- Returns NRFX_ERROR_BUSY
The driver is performing the conversion in the advanced blocking mode. Call the function again to continue the conversion.
- Returns NRFX_ERROR_NO_MEM
There is no buffer provided. Supply the buffer using nrfx_saadc_buffer_set() and try again.
- Returns NRFX_ERROR_INVALID_STATE
There is an ongoing conversion being performed in the non-blocking manner or the driver is in the idle mode.
-
void
nrfx_saadc_abort
(void)¶ Function for aborting the ongoing and buffered conversions.
Note
NRFX_SAADC_EVT_DONE event will be generated if there is a conversion in progress. Event will contain number of words in the sample buffer.
-
nrfx_err_t
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.
Note
Before the limits are set, the driver operation mode (simple or advanced) has to be configured. Only non-blocking conversions can be monitored.
Note
Changing of the driver operation mode disables all configured limits.
- Parameters
channel – [in] Channel index.
limit_low – [in] Limit low value to generate interrupt. Use
INT16_MIN
to disable interrupt generation.limit_high – [in] Limit high value to generate interrupt. Use
INT16_MAX
to disable interrupt generation.
- Returns NRFX_SUCCESS
Requested channel limits were set.
- Returns NRFX_ERROR_INVALID_PARAM
Attempt to activate the limits on disabled channel.
- Returns NRFX_ERROR_FORBIDDEN
Attempt to activate the limits for blocking conversions.
- Returns NRFX_ERROR_INVALID_STATE
Attempt to activate the limits without configured mode.
-
nrfx_err_t
nrfx_saadc_offset_calibrate
(nrfx_saadc_event_handler_t event_handler)¶ Function for starting the SAADC offset calibration.
Note
This function cancels the currently selected driver operation mode, if any. The desired mode (simple or advanced) must be set after the calibration process completes.
- Parameters
event_handler – [in] Event handler provided by the user. In case of providing NULL, the calibration will be performed in the blocking manner.
- Returns NRFX_SUCCESS
Calibration finished successfully in the blocking manner or started successfully in the non-blocking manner.
- Returns NRFX_ERROR_BUSY
There is a conversion or calibration ongoing.
-
struct
nrfx_saadc_channel_t
¶ - #include <nrfx_saadc.h>
SAADC channel configuration structure.
Public Members
-
nrf_saadc_channel_config_t
channel_config
¶ Channel hardware configuration.
-
nrf_saadc_input_t
pin_p
¶ Input positive pin selection.
-
nrf_saadc_input_t
pin_n
¶ Input negative pin selection.
-
uint8_t
channel_index
¶ Channel index.
-
nrf_saadc_channel_config_t
-
struct
nrfx_saadc_adv_config_t
¶ - #include <nrfx_saadc.h>
SAADC driver advanced mode configuration structure.
Public Members
-
nrf_saadc_oversample_t
oversampling
¶ Oversampling configuration.
-
nrf_saadc_burst_t
burst
¶ Burst configuration.
-
uint16_t
internal_timer_cc
¶ Internal timer capture and compare value.
-
bool
start_on_end
¶ Flag indicating if the START task is to be triggered on the END event.
-
nrf_saadc_oversample_t
-
struct
nrfx_saadc_done_evt_t
¶ - #include <nrfx_saadc.h>
SAADC driver done event data.
Public Members
-
nrf_saadc_value_t *
p_buffer
¶ Pointer to the buffer with converted samples.
-
uint16_t
size
¶ Number of samples in the buffer.
-
nrf_saadc_value_t *
-
struct
nrfx_saadc_limit_evt_t
¶ - #include <nrfx_saadc.h>
SAADC driver limit event data.
Public Members
-
uint8_t
channel
¶ Channel on which the limit was detected.
-
nrf_saadc_limit_t
limit_type
¶ Type of limit detected.
-
uint8_t
-
struct
nrfx_saadc_evt_t
¶ - #include <nrfx_saadc.h>
SAADC driver event structure.
Public Members
-
nrfx_saadc_evt_type_t
type
¶ Event type.
-
nrfx_saadc_done_evt_t
done
¶ Data for NRFX_SAADC_EVT_DONE event.
-
nrfx_saadc_limit_evt_t
limit
¶ Data for NRFX_SAADC_EVT_LIMIT event.
-
union nrfx_saadc_evt_t.[anonymous]
data
¶ Union to store event data.
-
nrfx_saadc_evt_type_t
-