46#ifndef SBL_HAL_ADC_DRIVER_HPP_
47#define SBL_HAL_ADC_DRIVER_HPP_
75 template<
typename Driver>
78 Driver::configure_channel(handle, sample_time);
79 Driver::start_conversion(handle);
80 while (!Driver::is_conversion_complete()) {
83 return Driver::read_raw();
94 template<
typename Driver>
95 inline uint32_t
to_millivolts(uint16_t raw_value, uint32_t vref_mv = 3300) {
96 constexpr uint32_t max_value = (1u << Driver::resolution_bits()) - 1;
97 return (
static_cast<uint32_t
>(raw_value) * vref_mv) / max_value;
uint32_t to_millivolts(uint16_t raw_value, uint32_t vref_mv=3300)
Convert raw ADC value to voltage (millivolts)
uint16_t read(const AdcHandle &handle, SampleTime sample_time=SampleTime::Medium)
Blocking single-channel ADC read.
Resolution
ADC resolution configuration.
SampleTime
ADC sample time configuration.
Root namespace for all Sound Byte Libs functionality.
Common types for SBL hardware abstraction.
UART handle type for hardware abstraction.