LCDDriver_NXP_Arduino 0.7.6
Analog Front-End (AFE) device operation sample code for Arduino
Loading...
Searching...
No Matches
AFE_NXP.h
Go to the documentation of this file.
1
8
9#ifndef ARDUINO_AFE_DRIVER_H
10#define ARDUINO_AFE_DRIVER_H
11
12#include <Arduino.h>
13#include <math.h>
14#include <stdint.h>
15#include <SPI_for_AFE.h>
16
17class AFE_base : public SPI_for_AFE
18{
19public:
20
22 using raw_t = int32_t;
23 using microvolt_t = double;
24 constexpr static float immidiate_read = -1.0;
25 constexpr static float default_delay = INFINITY;
26
28 AFE_base( int nINT, int DRDY, int SYN, int nRESET );
29
31 virtual ~AFE_base();
32
39 virtual void begin( void );
40
42 virtual void boot( void ) = 0;
43
45 virtual void reset( bool hardware_reset = false ) = 0;
46
55 virtual void logical_ch_config( int ch, uint16_t cc0, uint16_t cc1, uint16_t cc2, uint16_t cc3 ) = 0;
56
62 virtual void logical_ch_config( int ch, const uint16_t (&cc)[ 4 ] ) = 0;
63
68 virtual void logical_ch_disable( int ch ) = 0;
69
74 virtual int32_t adc_read( int ch ) = 0;
75
90 template<class T>
91 T read( int ch, float delay = default_delay );
92
97 virtual void start( int ch ) = 0;
98
101
103 double coeff_uV[ 16 ];
104
106 double ch_delay[ 16 ];
107 static double delay_accuracy;
108
109private:
110 void start_and_delay( int ch, float delay );
111
112protected:
113 int bit_count( uint32_t value );
114
119};
120
122{
123public:
124
126 NAFE13388_Base( int nINT, int DRDY, int SYN, int nRESET );
127
129 virtual ~NAFE13388_Base();
130
131 using ch_setting_t = uint16_t[ 4 ];
132
133 typedef struct _reference_point {
134 double voltage;
135 int32_t data;
137
144
146 virtual void boot( void );
147
149 virtual void reset( bool hardware_reset = false );
150
159 virtual void logical_ch_config( int ch, uint16_t cc0, uint16_t cc1, uint16_t cc2, uint16_t cc3 );
160
166 virtual void logical_ch_config( int ch, const uint16_t (&cc)[ 4 ] );
167
168private:
169 double calc_delay( int ch );
170
171public:
176 virtual void logical_ch_disable( int ch );
177
182 virtual int32_t adc_read( int ch );
183
188 virtual void start( int ch );
189
190 enum class Register16 : uint16_t {
199 GPI_DATA = 0x29,
205 GPO_DATA = 0x2F,
210 DIE_TEMP = 0x34,
213 THRS_TEMP = 0x37,
214 PN2 = 0x7C,
215 PN1 = 0x7D,
216 PN0 = 0x7E,
218 };
219
220 enum class Register24 : uint16_t {
221 CH_DATA0 = 0x40,
222 CH_DATA1 = 0x41,
223 CH_DATA2 = 0x42,
224 CH_DATA3 = 0x43,
225 CH_DATA4 = 0x44,
226 CH_DATA5 = 0x45,
227 CH_DATA6 = 0x46,
228 CH_DATA7 = 0x47,
229 CH_DATA8 = 0x48,
230 CH_DATA9 = 0x4A,
231 CH_DATA10 = 0x4B,
232 CH_DATA11 = 0x4C,
233 CH_DATA13 = 0x4D,
234 CH_DATA14 = 0x4E,
235 CH_DATA15 = 0x4F,
300 OPT_COEF0 = 0xA0,
301 OPT_COEF1 = 0xA1,
302 OPT_COEF2 = 0xA2,
303 OPT_COEF3 = 0xA3,
304 OPT_COEF4 = 0xA4,
305 OPT_COEF5 = 0xA5,
306 OPT_COEF6 = 0xA6,
307 OPT_COEF7 = 0xA7,
308 OPT_COEF8 = 0xA8,
309 OPT_COEF9 = 0xA9,
314 SERIAL1 = 0xAE,
315 SERIAL0 = 0xAF,
316 };
317
318 enum Command : uint16_t {
319 CMD_CH0 = 0x0000,
320 CMD_CH1 = 0x0001,
321 CMD_CH2 = 0x0002,
322 CMD_CH3 = 0x0003,
323 CMD_CH4 = 0x0004,
324 CMD_CH5 = 0x0005,
325 CMD_CH6 = 0x0006,
326 CMD_CH7 = 0x0007,
327 CMD_CH8 = 0x0008,
328 CMD_CH9 = 0x0009,
329 CMD_CH10 = 0x000A,
330 CMD_CH11 = 0x000B,
331 CMD_CH12 = 0x000C,
332 CMD_CH13 = 0x000D,
333 CMD_CH14 = 0x000E,
334 CMD_CH15 = 0x000F,
335 CMD_ABORT = 0x0010,
336 CMD_END = 0x0011,
339 CMD_RESET = 0x0014,
341 CMD_RELOAD = 0x0016,
342 TBD = 0x0017,
343 CMD_SS = 0x2000,
344 CMD_SC = 0x2001,
345 CMD_MM = 0x2002,
346 CMD_MC = 0x2003,
347 CMD_MS = 0x2004,
352 };
353
354 template<class T>
355 friend T operator+( const T& rn, const int n )
356 {
357 return T( static_cast<uint16_t>( rn ) + n );
358 }
359
360 template<class T>
361 friend T operator+( const int n, const T& rn )
362 {
363 return T( n + static_cast<uint16_t>( rn ) );
364 }
365
370 virtual void command( uint16_t com );
371
377 virtual void reg( Register16 r, uint16_t value );
378
384 virtual void reg( Register24 r, uint32_t value );
385
392 virtual uint16_t reg( Register16 r );
393
400 virtual uint32_t reg( Register24 r );
401
409 template<typename T>
410 uint32_t bit_op( T rg, uint32_t mask, uint32_t value )
411 {
412 uint32_t v = reg( rg );
413
414 v &= mask;
415 v |= value & ~mask;
416
417 reg( rg, v );
418
419 return v;
420 }
421
426 uint32_t part_number( void );
427
432 uint8_t revision_number( void );
433
438 uint64_t serial_number( void );
439
444 float temperature( void );
445
446
452 void gain_offset_coeff( const ref_points &ref );
453
464 void recalibrate( int pga_gain_index, int channel_selection = 15, int input_select = 0, double reference_source_voltage = 0, bool use_positive_side = true );
465
467 void blink_leds( void );
468};
469
471{
472public:
474 NAFE13388( int nINT = 2, int DRDY = 3, int SYN = 5, int nRESET = 6 );
475
477 virtual ~NAFE13388();
478};
479
481{
482public:
484 NAFE13388_UIM( int nINT = 3, int DRDY = 4, int SYN = 6, int nRESET = 7 );
485
487 virtual ~NAFE13388_UIM();
488
489 void blink_leds( void );
490};
491
492
493#endif // ARDUINO_AFE_DRIVER_H
int32_t raw_t
Definition AFE_NXP.h:22
double microvolt_t
Definition AFE_NXP.h:23
virtual ~AFE_base()
Definition AFE_NXP.cpp:31
int pin_nINT
Definition AFE_NXP.h:115
virtual void begin(void)
Definition AFE_NXP.cpp:35
virtual void logical_ch_config(int ch, const uint16_t(&cc)[4])=0
static constexpr float default_delay
Definition AFE_NXP.h:25
virtual void logical_ch_config(int ch, uint16_t cc0, uint16_t cc1, uint16_t cc2, uint16_t cc3)=0
virtual void logical_ch_disable(int ch)=0
virtual void reset(bool hardware_reset=false)=0
int bit_count(uint32_t value)
Definition AFE_NXP.cpp:66
double coeff_uV[16]
Definition AFE_NXP.h:103
virtual void start(int ch)=0
void start_and_delay(int ch, float delay)
Definition AFE_NXP.cpp:57
AFE_base(int nINT, int DRDY, int SYN, int nRESET)
Definition AFE_NXP.cpp:16
int enabled_channels
Definition AFE_NXP.h:100
static constexpr float immidiate_read
Definition AFE_NXP.h:24
int pin_SYN
Definition AFE_NXP.h:117
static double delay_accuracy
Definition AFE_NXP.h:107
double ch_delay[16]
Definition AFE_NXP.h:106
T read(int ch, float delay=default_delay)
virtual void boot(void)=0
int pin_nRESET
Definition AFE_NXP.h:118
virtual int32_t adc_read(int ch)=0
int pin_DRDY
Definition AFE_NXP.h:116
virtual int32_t adc_read(int ch)
Definition AFE_NXP.cpp:210
virtual void boot(void)
Definition AFE_NXP.cpp:91
void gain_offset_coeff(const ref_points &ref)
Definition AFE_NXP.cpp:270
double calc_delay(int ch)
Definition AFE_NXP.cpp:151
virtual void command(uint16_t com)
Definition AFE_NXP.cpp:221
void blink_leds(void)
Definition AFE_NXP.cpp:370
uint32_t bit_op(T rg, uint32_t mask, uint32_t value)
Definition AFE_NXP.h:410
struct NAFE13388_Base::_ref_points ref_points
friend T operator+(const T &rn, const int n)
Definition AFE_NXP.h:355
friend T operator+(const int n, const T &rn)
Definition AFE_NXP.h:361
virtual void logical_ch_config(int ch, uint16_t cc0, uint16_t cc1, uint16_t cc2, uint16_t cc3)
Definition AFE_NXP.cpp:196
virtual void reg(Register16 r, uint16_t value)
Definition AFE_NXP.cpp:226
struct NAFE13388_Base::_reference_point reference_point
void recalibrate(int pga_gain_index, int channel_selection=15, int input_select=0, double reference_source_voltage=0, bool use_positive_side=true)
Definition AFE_NXP.cpp:302
uint8_t revision_number(void)
Definition AFE_NXP.cpp:251
NAFE13388_Base(int nINT, int DRDY, int SYN, int nRESET)
Definition AFE_NXP.cpp:82
uint64_t serial_number(void)
Definition AFE_NXP.cpp:256
virtual void logical_ch_disable(int ch)
Definition AFE_NXP.cpp:202
virtual ~NAFE13388_Base()
Definition AFE_NXP.cpp:87
virtual void reset(bool hardware_reset=false)
Definition AFE_NXP.cpp:100
uint32_t part_number(void)
Definition AFE_NXP.cpp:246
uint16_t[4] ch_setting_t
Definition AFE_NXP.h:131
float temperature(void)
Definition AFE_NXP.cpp:265
virtual void start(int ch)
Definition AFE_NXP.cpp:215
void blink_leds(void)
Definition AFE_NXP.cpp:398
virtual ~NAFE13388_UIM()
Definition AFE_NXP.cpp:394
NAFE13388_UIM(int nINT=3, int DRDY=4, int SYN=6, int nRESET=7)
Definition AFE_NXP.cpp:389
virtual ~NAFE13388()
Definition AFE_NXP.cpp:383
NAFE13388(int nINT=2, int DRDY=3, int SYN=5, int nRESET=6)
Definition AFE_NXP.cpp:378
reference_point high
Definition AFE_NXP.h:140
reference_point low
Definition AFE_NXP.h:141