MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/chipset/ADS1259.hh

185 lines
3.7 KiB
C++

/*!\file
* \brief Ôàéë ñîäåðæèò îïèñàíèå òèïîâ äëÿ íàáîðà ìîäóëåé îáðàáîòêè ìèêðîñõåìû AD1259.
*/
/*
* AD1259.h
*
* Created on: 7 àâã. 2019 ã.
* Author: user
*/
#ifndef SOURCE_DRIVER_CHIPSET_AD1259_H_
#define SOURCE_DRIVER_CHIPSET_AD1259_H_
#include "../SerialPortAdapter.hpp"
namespace driver { namespace chipset { namespace ADS1259 {
//Àäðåñà ðåãèñòðîâ.
struct ControlRegistersPairedAcronims {
enum Acronims {
CONFIG0 = 0x00,
CONFIG1 = 0x01,
CONFIG2 = 0x02,
OFC0 = 0x03,
OFC1 = 0x04,
OFC2 = 0x05,
FSC0 = 0x06,
FSC1 = 0x07,
FSC2 = 0x08
};
};
struct Commands {
enum {
WAKEUP = 0x02,
RESET = 0x06,
START = 0x08,
STOP = 0x0A,
RDATAC = 0x10,
SDATAC = 0x11
};
};
enum RefBias : unsigned {
ref_bias_disable,
ref_bias_enable //Ïî ñáðîñó.
};
enum SpiTimeout : unsigned {
spi_timeout_disable,
spi_timeout_enable //Ïî ñáðîñó.
};
union Config0Reg {
struct {
SpiTimeout spi_timeout : 1;
uint16_t : 1;
RefBias ref_bias : 1;
uint16_t : 1;
uint16_t id : 2;
uint16_t : 1;
uint16_t bit7 : 1;
} bit;
uint16_t all;
Config0Reg() : all(0x80) {}
};
enum OutOfRange : unsigned {
out_of_range_disable, //Ïî ñáðîñó.
out_of_range_enable
};
enum Checksum : unsigned {
checksum_disable, //Ïî ñáðîñó.
checksum_enable
};
enum DigFilterMode : unsigned {
sinc1_filter_mode, //Ïî ñáðîñó.
sinc2_filter_mode
};
enum RefSelect : unsigned {
internal_ref, //Ïî ñáðîñó.
external_ref
};
enum StartConvDelay : unsigned {
nodelay, //Ïî ñáðîñó.
delay_64_clk,
delay_128_clk,
delay_256_clk,
delay_512_clk,
delay_1024_clk,
delay_2048_clk,
delay_4096_clk
};
union Config1Reg {
struct {
StartConvDelay start_conv_delay : 3;
RefSelect ref_select : 1;
DigFilterMode filter_mode : 1;
uint16_t : 1;
Checksum checksum : 1;
OutOfRange out_of_range_flag : 1;
} bit;
uint16_t all;
Config1Reg() : all(0) {}
};
enum DataReadyFlag : unsigned {
data_ready,
data_not_ready
};
enum ClockSource : unsigned {
internal_oscillator,
external_clock
};
enum SyncOut : unsigned {
syncout_disable, //Ïî ñáðîñó.
syncout_enable
};
enum ConvControlMode : unsigned {
gate_control_mode, //Ïî ñáðîñó.
pulse_control_mode
};
enum DataRate {
dr_10sps, //Ïî ñáðîñó.
dr_16sps,
dr_50sps,
dr_60sps,
dr_400sps,
dr_1200sps,
dr_3600sps,
dr_14400sps
};
union Config2Reg {
struct {
DataRate datarate : 3;
uint16_t : 1;
ConvControlMode conv_control_mode : 1;
SyncOut syncout : 1;
ClockSource clock_source : 1;
DataReadyFlag data_ready_flag : 1;
} bit;
uint16_t all;
Config2Reg() : all(0) {}
};
//! Ñòðóêòóðà íàñòðàåâàåìûõ ïàðàìåòðîâ ìèêðîñõåìû ADS1259
struct Parameters {
typedef uint16_t OptionRegister;
static const unsigned int allowed_options = 9;
enum AllowedRegisters {
CONFIG0_REGISTER,
CONFIG1_REGISTER,
CONFIG2_REGISTER,
OFC0_REGISTER,
OFC1_REGISTER,
OFC2_REGISTER,
FSC0_REGISTER,
FSC1_REGISTER,
FSC2_REGISTER,
};
OptionRegister option[allowed_options];
};
} }}
#endif /* SOURCE_DRIVER_CHIPSET_AD1259_H_ */