9#ifndef ARDUINO_AFE_DRIVER_H
10#define ARDUINO_AFE_DRIVER_H
37 virtual void begin(
void );
40 virtual void boot(
void ) = 0;
43 virtual void reset(
bool hardware_reset =
false ) = 0;
91 virtual void start(
int ch ) = 0;
131#ifdef NON_TEMPLATE_VERSION_FOR_START_AND_READ
174 return raw2v( ch, value ) * 1e6;
184 return raw2v( ch, value ) * 1e3;
267 virtual void init(
void );
295 template<
class T> T
read(
void);
303 template<
class T>
double operator+( T v ) {
return (
double)(*this) + (double)v; }
304 template<
class T>
double operator-( T v ) {
return (
double)(*this) - (double)v; }
305 template<
class T>
double operator*( T v ) {
return (
double)(*this) * (double)v; }
306 template<
class T>
double operator/( T v ) {
return (
double)(*this) / (double)v; }
341 virtual void boot(
void );
344 virtual void reset(
bool hardware_reset =
false );
354 virtual void open_logical_channel(
int ch, uint16_t cc0, uint16_t cc1, uint16_t cc2, uint16_t cc3 );
373 void configure(
const uint16_t (&cc)[ 4 ] );
382 void configure( uint16_t cc0 = 0x0000, uint16_t cc1 = 0x0000, uint16_t cc2 = 0x0000, uint16_t cc3 = 0x0000 );
412 virtual void start(
int ch );
416 virtual void start(
void );
453 double v = value *
coeff_V[ ch ];
465 return 2.00 * (v + 1.50);
468 return 32.00 * (v + 0.25);
471 return -32.00 * (v - 0.25);
661 virtual void command( uint16_t com );
703 uint32_t
bit_op( T rg, uint32_t mask, uint32_t value )
705 uint32_t v =
reg( rg );
763 int self_calibrate(
int pga_gain_index,
int channel_selection = 15,
int input_select = 0,
double reference_source_voltage = 0,
bool use_positive_side =
true );
773 NAFE13388(
bool spi_addr = 0,
bool highspeed_variant =
false,
int nINT = 2,
int DRDY = 4,
int SYN = 5,
int nRESET = 6,
int DRDY_input = 15,
int SYNCDAC = 14 );
783 NAFE13388_UIM(
bool spi_addr = 0,
bool highspeed_variant =
false,
int nINT = 3,
int DRDY = 4,
int SYN = 6,
int nRESET = 7,
int DRDY_input = 2,
int SYNCDAC = 14 );
NAFE13388_Base::Register16 operator+(NAFE13388_Base::Register16 rn, int n)
virtual void enable_logical_channel(int ch)=0
virtual void start_continuous_conversion(void)=0
static AFE_base * instance
static callback_fp_t cbf_DRDY
virtual void close_logical_channel(void)=0
void use_DRDY_trigger(bool use=true)
virtual void open_logical_channel(int ch, const uint16_t(&cc)[4])=0
virtual double raw2v(int ch, raw_t value)=0
virtual void read(volt_t *data_ptr)=0
virtual void set_DRDY_callback(callback_fp_t fnc)
static constexpr uint32_t timeout_limit
virtual void open_logical_channel(int ch, uint16_t cc0, uint16_t cc1, uint16_t cc2, uint16_t cc3)=0
double drdy_delay(int ch)
double raw2mv(int ch, raw_t value)
int enabled_logical_channels(void)
virtual void reset(bool hardware_reset=false)=0
int bit_count(uint32_t value)
virtual void read(raw_t *data_ptr)=0
virtual void start(int ch)=0
double raw2uv(int ch, raw_t value)
void(* callback_fp_t)(void)
virtual raw_t start_and_read(int ch)
uint8_t sequence_order[16]
static void static_default_drdy_cb()
virtual void start(void)=0
AFE_base(bool spi_addr, bool highspeed_variant, int nINT, int DRDY, int SYN, int nRESET, int DRDY_input, int SYNCDAC)
int wait_conversion_complete(double delay=-1.0)
virtual void close_logical_channel(int ch)=0
static double delay_accuracy
virtual void boot(void)=0
void start_and_read(T data)
virtual raw_t read(int ch)=0
virtual void DRDY_by_sequencer_done(bool flag=true)=0
virtual ~LogicalChannel_Base()
friend double operator-(T v, LogicalChannel_Base lc)
friend double operator/(T v, LogicalChannel_Base lc)
friend double operator*(T v, LogicalChannel_Base lc)
friend double operator+(T v, LogicalChannel_Base lc)
virtual ~LogicalChannel()
void configure(const uint16_t(&cc)[4])
virtual void start_continuous_conversion()
double raw2v(int ch, raw_t value)
void gain_offset_coeff(const ref_points &ref)
double calc_delay(int ch)
virtual void command(uint16_t com)
virtual raw_t read(int ch)
LogicalChannel logical_channel[16]
uint32_t bit_op(T rg, uint32_t mask, uint32_t value)
int self_calibrate(int pga_gain_index, int channel_selection=15, int input_select=0, double reference_source_voltage=0, bool use_positive_side=true)
struct NAFE13388_Base::_ref_points ref_points
virtual void reg(Register16 r, uint16_t value)
struct NAFE13388_Base::_reference_point reference_point
uint8_t revision_number(void)
virtual void close_logical_channel(void)
virtual void DRDY_by_sequencer_done(bool flag=true)
uint64_t serial_number(void)
void channel_info_update(uint16_t value)
virtual ~NAFE13388_Base()
void enable_logical_channel(int ch)
virtual void reset(bool hardware_reset=false)
uint32_t part_number(void)
virtual void open_logical_channel(int ch, uint16_t cc0, uint16_t cc1, uint16_t cc2, uint16_t cc3)
NAFE13388_Base(bool spi_addr, bool highspeed_variant, int nINT, int DRDY, int SYN, int nRESET, int DRDY_input, int SYNCDAC)
NAFE13388_UIM(bool spi_addr=0, bool highspeed_variant=false, int nINT=3, int DRDY=4, int SYN=6, int nRESET=7, int DRDY_input=2, int SYNCDAC=14)
NAFE13388(bool spi_addr=0, bool highspeed_variant=false, int nINT=2, int DRDY=4, int SYN=5, int nRESET=6, int DRDY_input=15, int SYNCDAC=14)