123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- #ifndef NRFX_SAADC_H__
- #define NRFX_SAADC_H__
- #include <nrfx.h>
- #include <hal/nrf_saadc.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if defined(NRFX_SAADC_API_V2)
- #include "nrfx_saadc_v2.h"
- #else
- #define NRFX_SAADC_LIMITH_DISABLED (2047)
- #define NRFX_SAADC_LIMITL_DISABLED (-2048)
- #define NRFX_SAADC_DEFAULT_CONFIG \
- { \
- .resolution = (nrf_saadc_resolution_t)NRFX_SAADC_CONFIG_RESOLUTION, \
- .oversample = (nrf_saadc_oversample_t)NRFX_SAADC_CONFIG_OVERSAMPLE, \
- .interrupt_priority = NRFX_SAADC_CONFIG_IRQ_PRIORITY, \
- .low_power_mode = NRFX_SAADC_CONFIG_LP_MODE \
- }
- #define NRFX_SAADC_DEFAULT_CHANNEL_CONFIG_SE(PIN_P) \
- { \
- .resistor_p = NRF_SAADC_RESISTOR_DISABLED, \
- .resistor_n = NRF_SAADC_RESISTOR_DISABLED, \
- .gain = NRF_SAADC_GAIN1_6, \
- .reference = NRF_SAADC_REFERENCE_INTERNAL, \
- .acq_time = NRF_SAADC_ACQTIME_10US, \
- .mode = NRF_SAADC_MODE_SINGLE_ENDED, \
- .burst = NRF_SAADC_BURST_DISABLED, \
- .pin_p = (nrf_saadc_input_t)(PIN_P), \
- .pin_n = NRF_SAADC_INPUT_DISABLED \
- }
- #define NRFX_SAADC_DEFAULT_CHANNEL_CONFIG_DIFFERENTIAL(PIN_P, PIN_N) \
- { \
- .resistor_p = NRF_SAADC_RESISTOR_DISABLED, \
- .resistor_n = NRF_SAADC_RESISTOR_DISABLED, \
- .gain = NRF_SAADC_GAIN1_6, \
- .reference = NRF_SAADC_REFERENCE_INTERNAL, \
- .acq_time = NRF_SAADC_ACQTIME_10US, \
- .mode = NRF_SAADC_MODE_DIFFERENTIAL, \
- .burst = NRF_SAADC_BURST_DISABLED, \
- .pin_p = (nrf_saadc_input_t)(PIN_P), \
- .pin_n = (nrf_saadc_input_t)(PIN_N) \
- }
- typedef struct
- {
- nrf_saadc_resolution_t resolution;
- nrf_saadc_oversample_t oversample;
- uint8_t interrupt_priority;
- bool low_power_mode;
- } nrfx_saadc_config_t;
- typedef enum
- {
- NRFX_SAADC_EVT_DONE,
- NRFX_SAADC_EVT_LIMIT,
- NRFX_SAADC_EVT_CALIBRATEDONE
- } nrfx_saadc_evt_type_t;
- typedef struct
- {
- nrf_saadc_value_t * p_buffer;
- uint16_t size;
- } nrfx_saadc_done_evt_t;
- typedef struct
- {
- uint8_t channel;
- nrf_saadc_limit_t limit_type;
- } nrfx_saadc_limit_evt_t;
- typedef struct
- {
- nrfx_saadc_evt_type_t type;
- union
- {
- nrfx_saadc_done_evt_t done;
- nrfx_saadc_limit_evt_t limit;
- } data;
- } nrfx_saadc_evt_t;
- typedef void (* nrfx_saadc_event_handler_t)(nrfx_saadc_evt_t const * p_event);
- nrfx_err_t nrfx_saadc_init(nrfx_saadc_config_t const * p_config,
- nrfx_saadc_event_handler_t event_handler);
- void nrfx_saadc_uninit(void);
- uint32_t nrfx_saadc_sample_task_get(void);
- nrfx_err_t nrfx_saadc_channel_init(uint8_t channel,
- nrf_saadc_channel_config_t const * const p_config);
- nrfx_err_t nrfx_saadc_channel_uninit(uint8_t channel);
- nrfx_err_t nrfx_saadc_sample(void);
- nrfx_err_t nrfx_saadc_sample_convert(uint8_t channel, nrf_saadc_value_t * p_value);
- nrfx_err_t nrfx_saadc_buffer_convert(nrf_saadc_value_t * buffer, uint16_t size);
- nrfx_err_t nrfx_saadc_calibrate_offset(void);
- bool nrfx_saadc_is_busy(void);
- void nrfx_saadc_abort(void);
- void nrfx_saadc_limits_set(uint8_t channel, int16_t limit_low, int16_t limit_high);
- #endif
- void nrfx_saadc_irq_handler(void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|