808
Dependents: Chromatograph_Mobile
Diff: ads1248.h
- Revision:
- 0:1b92bdad27f6
- Child:
- 1:54015254fc18
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ads1248.h Sat Aug 08 18:29:32 2020 +0000 @@ -0,0 +1,250 @@ +#ifndef ADS1248_H +#define ADS1248_H +#include "PerifConfig.h" + + #define DS1248_CS Cs + #define DS1248_START Reset + #define DS1248_DRDY CrdyA + + #define DS1248_WAKEUP_COMMAND 0x00 + #define DS1248_SLEEP_COMMAND 0x02 + #define DS1248_SYNC_COMMAND 0x04 + #define DS1248_RESET_COMMAND 0x06 + #define DS1248_NOP_COMMAND 0xFF + #define DS1248_RDATA_COMMAND 0x12 + #define DS1248_RDATAC_COMMAND 0x14 + #define DS1248_SDATAC_COMMAND 0x16 + + #define DS1248_RREG_COMMAND 0x20 + #define DS1248_WREG_COMMAND 0x40 + + #define DS1248_SYSOCAL_COMMAND 0x60 + #define DS1248_SYSGCAL_COMMAND 0x61 + #define DS1248_SELFOCAL_COMMAND 0x62 + + #define DS1248_RESTRICTED_COMMAND 0xF1 + + // Регистры + + #define DS1248_REGISTER_MUX0 0x00 + #define DS1248_REGISTER_VBIAS 0x01 + #define DS1248_REGISTER_MUX1 0x02 + #define DS1248_REGISTER_SYS0 0x03 + #define DS1248_REGISTER_OFC0 0x04 + #define DS1248_REGISTER_OFC1 0x05 + #define DS1248_REGISTER_OFC2 0x06 + #define DS1248_REGISTER_FSC0 0x07 + #define DS1248_REGISTER_FSC1 0x08 + #define DS1248_REGISTER_FSC2 0x09 + #define DS1248_REGISTER_IDAC0 0x0A + #define DS1248_REGISTER_IDAC1 0x0B + #define DS1248_REGISTER_GPIOCFG 0x0C + #define DS1248_REGISTER_GPIOCDIR 0x0D + #define DS1248_REGISTER_GPIODAT 0x0E + + // Настройки регисторов + + #define SET_REGISTER_MUX0 0x01 + #define SET_REGISTER_MUX1 0x30 + #define SET_REGISTER_SYS0 0x08 + #define SET_REGISTER_IDAC0 0x04 + #define SET_REGISTER_IDAC1 0xF9 + #define SET_REGISTER_GPIOCFG 0x00 + +#define DR5 0 +#define DR10 1 +#define DR20 2 +#define DR40 3 +#define DR80 4 +#define DR160 5 +#define DR320 6 +#define DR640 7 +#define DR1000 8 +#define DR2000 9 + +#define PGA_1 0 +#define PGA_2 1 +#define PGA_4 2 +#define PGA_8 3 +#define PGA_16 4 +#define PGA_32 5 +#define PGA_64 6 +#define PGA_128 7 + + + typedef union{ + struct{ + uint8_t + MUX_SN:3, + MUX_SP:3, + BCS:2; + }; + struct{ + + }; + uint8_t all; + }MUX0_t; + + typedef union{ + struct{ + uint8_t + VBIAS0:1, + VBIAS1:1, + VBIAS2:1, + VBIAS3:1, + VBIAS4:1, + VBIAS5:1, + VBIAS6:1, + VBIAS7:1; + }; + uint8_t all; + }VBIAS_t; + + typedef union{ + struct{ + uint8_t + MUXCAL:3, + REFSELT:2, + VREFCON:2, + CLKSTAT:1; + }; + struct{ + + }; + uint8_t all; + }MUX1_t; + + typedef union{ + struct{ + uint8_t + DR:4, + PGA:3, + :1; + }; + struct{ + + }; + uint8_t all; + }SYS0_t; + + typedef union{ + struct{ + uint8_t + OFC0, + OFC1, + OFC2; + }; + uint32_t all; + }OFC_t; + + typedef union{ + struct{ + uint8_t + FSC0, + FSC1, + FSC2; + }; + uint32_t all; + }FSC_t; + + typedef union{ + struct{ + uint8_t + IMAG:3, + DRDY_MODE:1, + ID:4; + }; + struct{ + + }; + uint8_t all; + }IDAC0_t; + + typedef union{ + struct{ + uint8_t + I2DIR:4, + I1DIR:4; + }; + struct{ + + }; + uint8_t all; + }IDAC1_t; + + typedef union{ + struct{ + uint8_t + IOCFG0:1, + IOCFG1:1, + IOCFG2:1, + IOCFG3:1, + IOCFG4:1, + IOCFG5:1, + IOCFG6:1, + IOCFG7:1; + }; + uint8_t all; + }GPIOCFG_t; + + typedef union{ + struct{ + uint8_t + IODIR0:1, + IODIR1:1, + IODIR2:1, + IODIR3:1, + IODIR4:1, + IODIR5:1, + IODIR6:1, + IODIR7:1; + }; + uint8_t all; + }GPIODIR_t; + + typedef union{ + struct{ + uint8_t + IODAT0:1, + IODAT1:1, + IODAT2:1, + IODAT3:1, + IODAT4:1, + IODAT5:1, + IODAT6:1, + IODAT7:1; + }; + uint8_t all; + }GPIODAT_t; + + //архетип устройства + typedef struct{ + MUX0_t MUX0; + VBIAS_t VBIAS; + MUX1_t MUX1; + SYS0_t SYS0; + OFC_t OFC; + FSC_t FSC; + IDAC0_t IDAC0; + IDAC1_t IDAC1; + GPIOCFG_t GPIOCFG; + GPIODIR_t GPIODIR; + GPIODAT_t GPIODAT; + }ADS1248_t; + + unsigned char ADS1248SleepCommand( void ); + + unsigned char ADS1248WakeupCommand( void ); + + unsigned char ADS1248ReadRegister( unsigned char reg, unsigned char num ); + + unsigned char ADS1248WriteRegister( unsigned char reg, unsigned char num, unsigned char data ); + + unsigned char ADS1248StartConversion( void ); + + unsigned long ADS1248ReadData( ADS1248_t * ads ); + + unsigned char ADS1248SettingReg ( ADS1248_t * ads ); + +#endif /*ADS1248_H*/ +