LCDDriver_NXP_Arduino 0.8.1
Analog Front-End (AFE) device operation sample code for Arduino
|
#include <AFE_NXP.h>
Classes | |
struct | _ref_points |
struct | _reference_point |
Public Types | |
enum class | Register16 : uint16_t { CH_CONFIG0 = 0x20 , CH_CONFIG1 = 0x21 , CH_CONFIG2 = 0x22 , CH_CONFIG3 = 0x23 , CH_CONFIG4 = 0x24 , CRC_CONF_REGS = 0x25 , CRC_COEF_REGS = 0x26 , CRC_TRIM_REGS = 0x27 , GPI_DATA = 0x29 , GPIO_CONFIG0 = 0x2A , GPIO_CONFIG1 = 0x2B , GPIO_CONFIG2 = 0x2C , GPI_EDGE_POS = 0x2D , GPI_EDGE_NEG = 0x2E , GPO_DATA = 0x2F , SYS_CONFIG0 = 0x30 , SYS_STATUS0 = 0x31 , GLOBAL_ALARM_ENABLE = 0x32 , GLOBAL_ALARM_INTERRUPT = 0x33 , DIE_TEMP = 0x34 , CH_STATUS0 = 0x35 , CH_STATUS1 = 0x36 , THRS_TEMP = 0x37 , PN2 = 0x7C , PN1 = 0x7D , PN0 = 0x7E , CRC_TRIM_INT = 0x7F } |
enum class | Register24 : uint16_t { CH_DATA0 = 0x40 , CH_DATA1 = 0x41 , CH_DATA2 = 0x42 , CH_DATA3 = 0x43 , CH_DATA4 = 0x44 , CH_DATA5 = 0x45 , CH_DATA6 = 0x46 , CH_DATA7 = 0x47 , CH_DATA8 = 0x48 , CH_DATA9 = 0x4A , CH_DATA10 = 0x4B , CH_DATA11 = 0x4C , CH_DATA13 = 0x4D , CH_DATA14 = 0x4E , CH_DATA15 = 0x4F , CH_CONFIG5_0 = 0x50 , CH_CONFIG5_1 = 0x51 , CH_CONFIG5_2 = 0x52 , CH_CONFIG5_3 = 0x53 , CH_CONFIG5_4 = 0x54 , CH_CONFIG5_5 = 0x55 , CH_CONFIG5_6 = 0x56 , CH_CONFIG5_7 = 0x57 , CH_CONFIG5_8 = 0x58 , CH_CONFIG5_9 = 0x59 , CH_CONFIG5_10 = 0x5A , CH_CONFIG5_11 = 0x5B , CH_CONFIG5_12 = 0x5C , CH_CONFIG5_13 = 0x5D , CH_CONFIG5_14 = 0x5E , CH_CONFIG5_15 = 0x5F , CH_CONFIG6_0 = 0x60 , CH_CONFIG6_1 = 0x61 , CH_CONFIG6_2 = 0x62 , CH_CONFIG6_3 = 0x63 , CH_CONFIG6_4 = 0x64 , CH_CONFIG6_5 = 0x65 , CH_CONFIG6_6 = 0x66 , CH_CONFIG6_7 = 0x67 , CH_CONFIG6_8 = 0x68 , CH_CONFIG6_9 = 0x69 , CH_CONFIG6_10 = 0x6A , CH_CONFIG6_11 = 0x6B , CH_CONFIG6_12 = 0x6C , CH_CONFIG6_13 = 0x6D , CH_CONFIG6_14 = 0x6E , CH_CONFIG6_15 = 0x6F , GAIN_COEFF0 = 0x80 , GAIN_COEFF1 = 0x81 , GAIN_COEFF2 = 0x82 , GAIN_COEFF3 = 0x83 , GAIN_COEFF4 = 0x84 , GAIN_COEFF5 = 0x85 , GAIN_COEFF6 = 0x86 , GAIN_COEFF7 = 0x87 , GAIN_COEFF8 = 0x88 , GAIN_COEFF9 = 0x89 , GAIN_COEFF10 = 0x8A , GAIN_COEFF11 = 0x8B , GAIN_COEFF12 = 0x8C , GAIN_COEFF13 = 0x8D , GAIN_COEFF14 = 0x8E , GAIN_COEFF15 = 0x8F , OFFSET_COEFF0 = 0x90 , OFFSET_COEFF1 = 0x91 , OFFSET_COEFF2 = 0x92 , OFFSET_COEFF3 = 0x93 , OFFSET_COEFF4 = 0x94 , OFFSET_COEFF5 = 0x95 , OFFSET_COEFF6 = 0x96 , OFFSET_COEFF7 = 0x97 , OFFSET_COEFF8 = 0x98 , OFFSET_COEFF9 = 0x99 , OFFSET_COEFF10 = 0x9A , OFFSET_COEFF11 = 0x9B , OFFSET_COEFF12 = 0x9C , OFFSET_COEFF13 = 0x9D , OFFSET_COEFF14 = 0x9E , OFFSET_COEFF15 = 0x9F , OPT_COEF0 = 0xA0 , OPT_COEF1 = 0xA1 , OPT_COEF2 = 0xA2 , OPT_COEF3 = 0xA3 , OPT_COEF4 = 0xA4 , OPT_COEF5 = 0xA5 , OPT_COEF6 = 0xA6 , OPT_COEF7 = 0xA7 , OPT_COEF8 = 0xA8 , OPT_COEF9 = 0xA9 , OPT_COEF10 = 0xAA , OPT_COEF11 = 0xAB , OPT_COEF12 = 0xAC , OPT_COEF13 = 0xAD , SERIAL1 = 0xAE , SERIAL0 = 0xAF } |
enum | Command : uint16_t { CMD_CH0 = 0x0000 , CMD_CH1 = 0x0001 , CMD_CH2 = 0x0002 , CMD_CH3 = 0x0003 , CMD_CH4 = 0x0004 , CMD_CH5 = 0x0005 , CMD_CH6 = 0x0006 , CMD_CH7 = 0x0007 , CMD_CH8 = 0x0008 , CMD_CH9 = 0x0009 , CMD_CH10 = 0x000A , CMD_CH11 = 0x000B , CMD_CH12 = 0x000C , CMD_CH13 = 0x000D , CMD_CH14 = 0x000E , CMD_CH15 = 0x000F , CMD_ABORT = 0x0010 , CMD_END = 0x0011 , CMD_CLEAR_ALARM = 0x0012 , CMD_CLEAR_DATA = 0x0013 , CMD_RESET = 0x0014 , CMD_CLEAR_REG = 0x0015 , CMD_RELOAD = 0x0016 , TBD = 0x0017 , CMD_SS = 0x2000 , CMD_SC = 0x2001 , CMD_MM = 0x2002 , CMD_MC = 0x2003 , CMD_MS = 0x2004 , CMD_BURST_DATA = 0x2005 , CMD_CALC_CRC_CONFG = 0x2006 , CMD_CALC_CRC_COEF = 0x2007 , CMD_CALC_CRC_FAC = 0x2008 } |
enum | CalibrationError : int { NoError = 0 , GainError = -1 , OffsetError = -2 } |
using | ch_setting_t = uint16_t[ 4 ] |
typedef struct NAFE13388_Base::_reference_point | reference_point |
typedef struct NAFE13388_Base::_ref_points | ref_points |
![]() | |
using | raw_t = int32_t |
using | microvolt_t = double |
Public Member Functions | |
NAFE13388_Base (bool spi_addr, bool highspeed_variant, int nINT, int DRDY, int SYN, int nRESET) | |
virtual | ~NAFE13388_Base () |
virtual void | boot (void) |
virtual void | reset (bool hardware_reset=false) |
virtual void | open_logical_channel (int ch, uint16_t cc0, uint16_t cc1, uint16_t cc2, uint16_t cc3) |
virtual void | open_logical_channel (int ch, const uint16_t(&cc)[4]) |
virtual void | close_logical_channel (int ch) |
virtual void | close_logical_channel (void) |
virtual void | start (int ch) |
virtual void | start (void) |
virtual void | start_continuous_conversion () |
virtual void | DRDY_by_sequencer_done (bool flag=true) |
virtual raw_t | read (int ch) |
virtual void | read (raw_t *data) |
virtual void | command (uint16_t com) |
virtual void | reg (Register16 r, uint16_t value) |
virtual void | reg (Register24 r, uint32_t value) |
virtual uint16_t | reg (Register16 r) |
virtual uint32_t | reg (Register24 r) |
template<typename T> | |
uint32_t | bit_op (T rg, uint32_t mask, uint32_t value) |
uint32_t | part_number (void) |
uint8_t | revision_number (void) |
uint64_t | serial_number (void) |
float | temperature (void) |
void | gain_offset_coeff (const ref_points &ref) |
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) |
void | blink_leds (void) |
![]() | |
AFE_base (bool spi_addr, bool highspeed_variant, int nINT, int DRDY, int SYN, int nRESET) | |
virtual | ~AFE_base () |
virtual void | begin (void) |
virtual raw_t | start_and_read (int ch) |
template<typename T> | |
void | start_and_read (T data) |
double | raw2uv (int ch, raw_t value) |
double | raw2mv (int ch, raw_t value) |
double | raw2v (int ch, raw_t value) |
double | coeff_mV (int ch) |
double | drdy_delay (int ch) |
double | drdy_delay (void) |
int | enabled_logical_channels (void) |
void | use_DRDY_trigger (bool use=true) |
![]() | |
void | txrx (uint8_t *data, int size) |
void | write_r16 (uint16_t reg) |
void | write_r16 (uint16_t reg, uint16_t val) |
uint16_t | read_r16 (uint16_t reg) |
void | write_r24 (uint16_t reg, uint32_t val) |
int32_t | read_r24 (uint16_t reg) |
void | burst (uint32_t *data, int length, int width=3) |
Static Public Attributes | |
static double | pga_gain [] = { 0.2, 0.4, 0.8, 1, 2, 4, 8, 16 } |
Private Member Functions | |
double | calc_delay (int ch) |
void | channel_info_update (uint16_t value) |
Additional Inherited Members | |
![]() | |
int | bit_count (uint32_t value) |
virtual void | init (void) |
void | default_drdy_cb (void) |
int | wait_conversion_complete (double delay=-1.0) |
![]() | |
static void | DRDY_cb (void) |
![]() | |
bool | dev_add |
bool | highspeed_variant |
int | pin_nINT |
int | pin_DRDY |
int | pin_SYN |
int | pin_nRESET |
int | enabled_channels |
double | coeff_uV [16] |
double | ch_delay [16] |
double | total_delay |
uint32_t | drdy_count |
volatile bool | drdy_flag |
![]() | |
static double | delay_accuracy = 1.1 |
static constexpr uint32_t | timeout_limit = 100000000 |
using NAFE13388_Base::ch_setting_t = uint16_t[ 4 ] |
typedef struct NAFE13388_Base::_ref_points NAFE13388_Base::ref_points |
typedef struct NAFE13388_Base::_reference_point NAFE13388_Base::reference_point |
enum NAFE13388_Base::CalibrationError : int |
enum NAFE13388_Base::Command : uint16_t |
|
strong |
|
strong |
NAFE13388_Base::NAFE13388_Base | ( | bool | spi_addr, |
bool | highspeed_variant, | ||
int | nINT, | ||
int | DRDY, | ||
int | SYN, | ||
int | nRESET ) |
Constructor to create a AFE_base instance
Definition at line 114 of file AFE_NXP.cpp.
Referenced by NAFE13388::NAFE13388(), and NAFE13388_UIM::NAFE13388_UIM().
|
virtual |
Destractor
Definition at line 119 of file AFE_NXP.cpp.
|
inline |
Register bit operation
overwrite bits i a register
reg | register specified by Register16 or Register24 member |
mask | mask bits |
reg | value to over write |
Definition at line 540 of file AFE_NXP.h.
Referenced by close_logical_channel(), DRDY_by_sequencer_done(), and open_logical_channel().
void NAFE13388_Base::blink_leds | ( | void | ) |
Blinks LEDs on GPIO pins
Definition at line 482 of file AFE_NXP.cpp.
|
virtual |
|
private |
Definition at line 196 of file AFE_NXP.cpp.
Referenced by open_logical_channel().
|
private |
Definition at line 180 of file AFE_NXP.cpp.
Referenced by close_logical_channel(), close_logical_channel(), and open_logical_channel().
|
virtual |
Logical channel disable
ch | logical channel number (0 ~ 15) |
Implements AFE_base.
Definition at line 252 of file AFE_NXP.cpp.
|
virtual |
All logical channel disable
Implements AFE_base.
Definition at line 260 of file AFE_NXP.cpp.
Referenced by self_calibrate().
|
virtual |
com | "Comand" type or uint16_t value |
Definition at line 297 of file AFE_NXP.cpp.
Referenced by boot(), calc_delay(), open_logical_channel(), reset(), self_calibrate(), start(), start(), and start_continuous_conversion().
|
virtual |
DRDY event select
set | true for DRDY by sequencer is done |
Implements AFE_base.
Definition at line 282 of file AFE_NXP.cpp.
void NAFE13388_Base::gain_offset_coeff | ( | const ref_points & | ref | ) |
Gain and offset coefficient customization
Sets gain and offset coefficients with given target ADC read-out values at two reference voltaeg points
ref | struct to define the target coefficient index and two reference poins and reference pre-calibrated coeffs |
Definition at line 346 of file AFE_NXP.cpp.
|
virtual |
Configure logical channel
ch | logical channel number (0 ~ 15) |
cc | array for CH_CONFIG0, CH_CONFIG1, CH_CONFIG2 and CH_CONFIG3 values |
Implements AFE_base.
Definition at line 161 of file AFE_NXP.cpp.
|
virtual |
Configure logical channel
ch | logical channel number (0 ~ 15) |
cc0 | 16bit value to be set CH_CONFIG0 register (0x20) |
cc1 | 16bit value to be set CH_CONFIG1 register (0x21) |
cc2 | 16bit value to be set CH_CONFIG2 register (0x22) |
cc3 | 16bit value to be set CH_CONFIG3 register (0x23) |
Implements AFE_base.
Definition at line 246 of file AFE_NXP.cpp.
Referenced by open_logical_channel(), and self_calibrate().
uint32_t NAFE13388_Base::part_number | ( | void | ) |
|
virtual |
Read ADC for single channel
ch | logical channel number (0 ~ 15) |
Implements AFE_base.
Definition at line 287 of file AFE_NXP.cpp.
|
virtual |
Read ADC for all channel
data_ptr | pointer to array to store ADC data |
Implements AFE_base.
Definition at line 292 of file AFE_NXP.cpp.
|
virtual |
Read register
Reads register. Register width is selected by reg type (Register16 ot Register24)
reg | register specified by Register16 member |
Definition at line 312 of file AFE_NXP.cpp.
|
virtual |
Write register
Writes register. Register width is selected by reg type (Register16 ot Register24)
reg | register specified by Register16 member |
Definition at line 302 of file AFE_NXP.cpp.
Referenced by NAFE13388_UIM::blink_leds(), boot(), calc_delay(), close_logical_channel(), gain_offset_coeff(), open_logical_channel(), part_number(), read(), reset(), revision_number(), self_calibrate(), serial_number(), and temperature().
|
virtual |
Read register
Reads register. Register width is selected by reg type (Register16 ot Register24)
reg | register specified by Register24 member |
Definition at line 317 of file AFE_NXP.cpp.
|
virtual |
Write register
Writes register. Register width is selected by reg type (Register16 ot Register24)
reg | register specified by Register24 member |
Definition at line 307 of file AFE_NXP.cpp.
|
virtual |
uint8_t NAFE13388_Base::revision_number | ( | void | ) |
int NAFE13388_Base::self_calibrate | ( | int | pga_gain_index, |
int | channel_selection = 15, | ||
int | input_select = 0, | ||
double | reference_source_voltage = 0, | ||
bool | use_positive_side = true ) |
On-board calibration with specified input and voltage
Updates coefficients at pga_gain_index
pga_gain_index | PGA gain index to measure and update the coefficients |
channel_selection | Logical channel number for calibration use |
reference_source_voltage | Reference voltage. This is not required if internal reference is used |
input_select | Physical input channel selection. It will use internal voltage reference if this value is 0 |
use_positive_side | Physical input channel selection AnP or AnN |
Definition at line 378 of file AFE_NXP.cpp.
uint64_t NAFE13388_Base::serial_number | ( | void | ) |
Read serial number
Definition at line 332 of file AFE_NXP.cpp.
Referenced by serial_number().
|
virtual |
Start ADC
ch | logical channel number (0 ~ 15) |
Implements AFE_base.
Definition at line 266 of file AFE_NXP.cpp.
|
virtual |
|
virtual |
float NAFE13388_Base::temperature | ( | void | ) |
|
static |
Definition at line 541 of file AFE_NXP.h.
Referenced by open_logical_channel(), and self_calibrate().