/*!\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_ */