Successive Approximation Analog-to-Digital Converter (SAADC) peripheral driver.
More...
|
nrfx_err_t | nrfx_saadc_init (uint8_t interrupt_priority) |
| Function for initializing the SAADC driver. More...
|
|
void | nrfx_saadc_uninit (void) |
| Function for uninitializing the SAADC driver. More...
|
|
nrfx_err_t | nrfx_saadc_channels_config (nrfx_saadc_channel_t const *p_channels, uint32_t channel_count) |
| Function for configuring multiple SAADC channels. More...
|
|
nrfx_err_t | nrfx_saadc_channel_config (nrfx_saadc_channel_t const *p_channel) |
| Function for configuring single SAADC channel. More...
|
|
nrfx_err_t | nrfx_saadc_channels_deconfig (uint32_t channel_mask) |
| Function for deconfiguring the specified SAADC channels. More...
|
|
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. More...
|
|
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. More...
|
|
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. More...
|
|
nrfx_err_t | nrfx_saadc_mode_trigger (void) |
| Function for triggering the conversion in the configured mode. More...
|
|
void | nrfx_saadc_abort (void) |
| Function for aborting the ongoing and buffered conversions. More...
|
|
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. More...
|
|
nrfx_err_t | nrfx_saadc_offset_calibrate (nrfx_saadc_event_handler_t event_handler) |
| Function for starting the SAADC offset calibration. More...
|
|
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, \
}
No oversampling.
Definition: nrf_saadc.h:49
Burst mode is disabled (normal operation).
Definition: nrf_saadc.h:110
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 = \
{ \
}, \
.channel_index = _index, \
}
Internal reference (0.6 V).
Definition: nrf_saadc.h:85
nrf_saadc_input_t
Input selection for the analog-to-digital converter.
Definition: nrf_saadc.h:29
Gain factor 1/6.
Definition: nrf_saadc.h:72
Bypass resistor ladder.
Definition: nrf_saadc.h:63
Differential mode.
Definition: nrf_saadc.h:104
10 us.
Definition: nrf_saadc.h:94
Burst mode is disabled (normal operation).
Definition: nrf_saadc.h:110
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
-
[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 = \
{ \
}, \
.channel_index = _index, \
}
Internal reference (0.6 V).
Definition: nrf_saadc.h:85
nrf_saadc_input_t
Input selection for the analog-to-digital converter.
Definition: nrf_saadc.h:29
Not connected.
Definition: nrf_saadc.h:31
Single-ended mode. PSELN will be ignored, negative input to ADC shorted to GND.
Definition: nrf_saadc.h:103
Gain factor 1/6.
Definition: nrf_saadc.h:72
Bypass resistor ladder.
Definition: nrf_saadc.h:63
10 us.
Definition: nrf_saadc.h:94
Burst mode is disabled (normal operation).
Definition: nrf_saadc.h:110
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
-
[in] | _pin_p | Positive input analog pin. |
[in] | _index | Channel index. |
- See also
- nrfx_saadc_channel_t
◆ 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.
- 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 internal timer or 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 nrf_saadc_value_t samples in 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_INITIALIZED | 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_deconfig()
nrfx_err_t nrfx_saadc_channels_deconfig |
( |
uint32_t |
channel_mask | ) |
|
Function for deconfiguring the specified SAADC channels.
- 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_INVALID_STATE | The driver is already 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 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.
- 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
-
[in] | event_handler | 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.