Successive Approximation Analog-to-Digital Converter (SAADC) peripheral driver.
More...
|
#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_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(_resolution, _samples) ((_resolution) == NRF_SAADC_RESOLUTION_8BIT ? _samples : (_samples * 2)) |
| Macro for getting number of bytes needed to store specified number of SAADC samples for given resolution of the SAADC.
|
|
#define | NRFX_SAADC_SAMPLE_GET(_resolution, _samples, _index) |
| Macro for getting specified SAADC sample from the filled buffer.
|
|
#define | NRFX_SAADC_DEFAULT_ADV_CONFIG |
| SAADC driver advanced mode default configuration.
|
|
|
nrfx_err_t | 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.
|
|
nrfx_err_t | nrfx_saadc_channels_config (nrfx_saadc_channel_t const *p_channels, uint32_t channel_count) |
| Function for configuring multiple SAADC channels.
|
|
nrfx_err_t | 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.
|
|
nrfx_err_t | nrfx_saadc_channels_deconfig (uint32_t channel_mask) |
| Function for deconfiguring the specified SAADC channels.
|
|
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.
|
|
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.
|
|
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.
|
|
nrfx_err_t | 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.
|
|
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.
|
|
nrfx_err_t | 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.
◆ NRFX_SAADC_DEFAULT_ADV_CONFIG
#define NRFX_SAADC_DEFAULT_ADV_CONFIG |
Value:{ \
.internal_timer_cc = 0, \
.start_on_end = false, \
}
@ NRF_SAADC_BURST_DISABLED
Burst mode is disabled (normal operation).
Definition: nrf_saadc.h:253
@ NRF_SAADC_OVERSAMPLE_DISABLED
No oversampling.
Definition: nrf_saadc.h:159
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
-
[in] | _pin_p | Positive input analog pin. |
[in] | _pin_n | Negative input analog pin. |
[in] | _index | Channel index. |
- See also
- nrfx_saadc_adv_config_t
◆ NRFX_SAADC_DEFAULT_CHANNEL_DIFFERENTIAL
#define NRFX_SAADC_DEFAULT_CHANNEL_DIFFERENTIAL |
( |
|
_pin_p, |
|
|
|
_pin_n, |
|
|
|
_index |
|
) |
| |
Value:{ \
.channel_config = \
{ \
()) \
NRFX_COND_CODE_1(NRF_SAADC_HAS_CONV_TIME, \
()) \
}, \
.channel_index = _index, \
}
uint32_t nrf_saadc_input_t
Analog input type.
Definition: nrf_saadc.h:112
#define NRF_SAADC_HAS_CH_CONFIG_RES
Symbol indicating whether SAADC channel resistor control is present.
Definition: nrf_saadc.h:71
@ NRF_SAADC_RESISTOR_DISABLED
Bypass resistor ladder.
Definition: nrf_saadc.h:174
@ NRF_SAADC_MODE_DIFFERENTIAL
Differential mode.
Definition: nrf_saadc.h:247
@ NRF_SAADC_REFERENCE_INTERNAL
Internal reference.
Definition: nrf_saadc.h:218
@ NRF_SAADC_GAIN1
Gain factor 1.
Definition: nrf_saadc.h:207
#define NRFX_SAADC_DEFAULT_CONV_TIME
Auxiliary symbol specifying default value for the SAADC conversion time.
Definition: nrfx_saadc.h:29
#define NRFX_SAADC_DEFAULT_ACQTIME
Auxiliary symbol specifying default value for the SAADC acquisition time.
Definition: nrfx_saadc.h:22
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
- sample acquisition time: 10 us
- burst disabled
- Parameters
-
[in] | _pin_p | Positive input analog pin. |
[in] | _pin_n | Negative input analog pin. |
[in] | _index | Channel index. |
- See also
- nrfx_saadc_channel_t
◆ NRFX_SAADC_DEFAULT_CHANNEL_SE
#define NRFX_SAADC_DEFAULT_CHANNEL_SE |
( |
|
_pin_p, |
|
|
|
_index |
|
) |
| |
Value:{ \
.channel_config = \
{ \
()) \
NRFX_COND_CODE_1(NRF_SAADC_HAS_CONV_TIME, \
()) \
}, \
.channel_index = _index, \
}
#define NRF_SAADC_INPUT_DISABLED
Symbol specifying disconnected analog input.
Definition: nrf_saadc.h:115
@ NRF_SAADC_MODE_SINGLE_ENDED
Single-ended mode. PSELN will be ignored, negative input to ADC shorted to GND.
Definition: nrf_saadc.h:246
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
- reference voltage: internal
- sample acquisition time: 10 us
- burst disabled
- Parameters
-
[in] | _pin_p | Positive input analog pin. |
[in] | _index | Channel index. |
- See also
- nrfx_saadc_channel_t
◆ NRFX_SAADC_SAMPLE_GET
#define NRFX_SAADC_SAMPLE_GET |
( |
|
_resolution, |
|
|
|
_samples, |
|
|
|
_index |
|
) |
| |
Value:
(((int16_t *)(_samples))[(_index)]))
@ NRF_SAADC_RESOLUTION_8BIT
8 bit resolution.
Definition: nrf_saadc.h:104
Macro for getting specified SAADC sample from the filled buffer.
- Parameters
-
[in] | _resolution | Resolution expressed as nrf_saadc_resolution_t. |
[in] | _samples | Pointer to the buffer filled with SAADC samples. |
[in] | _index | Sample index. |
- Returns
- Specified sample.
◆ NRFX_SAADC_SAMPLES_TO_BYTES
#define NRFX_SAADC_SAMPLES_TO_BYTES |
( |
|
_resolution, |
|
|
|
_samples |
|
) |
| ((_resolution) == NRF_SAADC_RESOLUTION_8BIT ? _samples : (_samples * 2)) |
Macro for getting number of bytes needed to store specified number of SAADC samples for given resolution of the SAADC.
- Parameters
-
- Returns
- Number of bytes needed to store specified number of samples.
◆ nrfx_saadc_event_handler_t
SAADC driver event handler.
When operating in the advanced mode:
- Parameters
-
[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. |
◆ nrfx_saadc_evt_type_t
SAADC driver event types.
Enumerator |
---|
NRFX_SAADC_EVT_DONE | Event generated when the buffer is filled with samples.
|
NRFX_SAADC_EVT_LIMIT | Event generated when one of the limits is reached.
|
NRFX_SAADC_EVT_CALIBRATEDONE | Event generated when the calibration is complete.
|
NRFX_SAADC_EVT_BUF_REQ | Event generated when the next buffer for continuous conversion is requested.
|
NRFX_SAADC_EVT_READY | Event generated when the first buffer is acquired by the peripheral and sampling can be started.
|
NRFX_SAADC_EVT_FINISHED | Event generated when all supplied buffers are filled with results.
|
◆ nrfx_saadc_abort()
void nrfx_saadc_abort |
( |
void |
| ) |
|
Function for aborting the ongoing and buffered conversions.
- Warning
- Aborting blocking conversion or calibration from different context is not supported. Perform the operation in non-blocking manner instead.
- 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_saadc_advanced_mode_set()
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.
-
The internal timer can only be used in the non-blocking mode.
- Parameters
-
[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. |
- Return values
-
NRFX_SUCCESS | Initialization was successful. |
NRFX_ERROR_BUSY | There is a conversion or calibration ongoing. |
NRFX_ERROR_INVALID_PARAM | Attempt to activate channel that is not configured. |
NRFX_ERROR_NOT_SUPPORTED | Attempt to activate either of the following:
- internal timer in the blocking mode,
- internal timer with multiple channels enabled,
- oversampling without burst with multiple channels enabled.
|
◆ nrfx_saadc_buffer_set()
Function for supplying the buffer to be used in the next part of the conversion.
- Parameters
-
[in] | p_buffer | Pointer to the buffer to be filled with conversion results. |
[in] | size | Number of samples in the buffer. |
- Return values
-
NRFX_SUCCESS | Buffer was supplied successfully. |
NRFX_ERROR_INVALID_ADDR | The provided buffer is not in the Data RAM region. |
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. |
NRFX_ERROR_INVALID_STATE | The driver is in the idle mode. |
NRFX_ERROR_ALREADY | Both buffers for double-buffered conversions are already set. |
◆ nrfx_saadc_channel_config()
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
-
[in] | p_channel | Pointer to the channel configuration structure. |
- Return values
-
NRFX_SUCCESS | Configuration was successful. |
NRFX_ERROR_BUSY | There is a conversion or calibration ongoing. |
◆ nrfx_saadc_channels_config()
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.
-
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
-
[in] | p_channels | Pointer to the array of channel configuration structures. |
[in] | channel_count | Number of channels to be configured. |
- Return values
-
NRFX_SUCCESS | Configuration was successful. |
NRFX_ERROR_BUSY | There is a conversion or calibration ongoing. |
NRFX_ERROR_INVALID_PARAM | Attempt to configure the same channel more than once. |
◆ nrfx_saadc_channels_configured_get()
uint32_t nrfx_saadc_channels_configured_get |
( |
void |
| ) |
|
Function for getting the currently configured SAADC channels.
- Returns
- Bitmask of configured channels.
◆ nrfx_saadc_channels_deconfig()
nrfx_err_t nrfx_saadc_channels_deconfig |
( |
uint32_t |
channel_mask | ) |
|
Function for deconfiguring the specified SAADC channels.
- Warning
- Pins associated with the deconfigured channels will be released after next nrfx_saadc_simple_mode_set() or nrfx_saadc_advanced_mode_set() call.
- Parameters
-
[in] | channel_mask | Bitmask of channels to be deconfigured. |
- Return values
-
NRFX_SUCCESS | Deconfiguration was successful. |
NRFX_ERROR_BUSY | There is a conversion or calibration ongoing. |
◆ nrfx_saadc_init()
nrfx_err_t nrfx_saadc_init |
( |
uint8_t |
interrupt_priority | ) |
|
Function for initializing the SAADC driver.
- Parameters
-
[in] | interrupt_priority | Interrupt priority. |
- Return values
-
NRFX_SUCCESS | Initialization was successful. |
NRFX_ERROR_ALREADY | The driver is already initialized. |
NRFX_ERROR_INVALID_STATE | The driver is already initialized. Deprecated - use NRFX_ERROR_ALREADY instead. |
◆ nrfx_saadc_init_check()
bool nrfx_saadc_init_check |
( |
void |
| ) |
|
Function for checking if the SAADC driver is initialized.
- Return values
-
true | Driver is already initialized. |
false | Driver is not initialized. |
◆ nrfx_saadc_limits_set()
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.
-
Changing of the driver operation mode disables all configured limits.
- Parameters
-
[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. |
- Return values
-
NRFX_SUCCESS | Requested channel limits were set. |
NRFX_ERROR_INVALID_PARAM | Attempt to activate the limits on disabled channel. |
NRFX_ERROR_FORBIDDEN | Attempt to activate the limits for blocking conversions. |
NRFX_ERROR_INVALID_STATE | Attempt to activate the limits without configured mode. |
◆ nrfx_saadc_mode_trigger()
Function for triggering the conversion in the configured mode.
- Return values
-
NRFX_SUCCESS | Operation finished successfully in the blocking manner or started successfully in the non-blocking manner. |
NRFX_ERROR_BUSY | The driver is performing the conversion in the advanced blocking mode. Call the function again to continue the conversion. |
NRFX_ERROR_NO_MEM | There is no buffer provided. Supply the buffer using nrfx_saadc_buffer_set() and try again. |
NRFX_ERROR_INVALID_STATE | There is an ongoing conversion or calibration being performed in the non-blocking manner or the driver is in the idle mode. |
◆ nrfx_saadc_offset_calibrate()
Function for starting the SAADC offset calibration.
- Parameters
-
[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. |
- Return values
-
NRFX_SUCCESS | Calibration finished successfully in the blocking manner or started successfully in the non-blocking manner. |
NRFX_ERROR_BUSY | There is a conversion or calibration ongoing. |
◆ nrfx_saadc_simple_mode_set()
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
-
[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. |
- Return values
-
NRFX_SUCCESS | Initialization was successful. |
NRFX_ERROR_BUSY | There is a conversion or calibration ongoing. |
NRFX_ERROR_INVALID_PARAM | Attempt to activate channel that is not configured. |
◆ nrfx_saadc_uninit()
void nrfx_saadc_uninit |
( |
void |
| ) |
|
Function for uninitializing the SAADC driver.
This function stops all ongoing conversions and disables all channels.