OSDN Git Service

1334c170f2ad0f7ace4eaad7bd6abcf84029c90c
[stock/stock.osdn.git] / hw / ADS1299.h
1 // TI ADS1299
2 // Low-Noise, 8-Channel, 24-Bit Analog-to-Digital Converter
3 // http://www.ti.com/product/ADS1299
4
5 #ifndef HW_ADS1299_H
6 #define HW_ADS1299_H
7
8 // ADS1299 SPI commands
9 enum {
10    ADS_WAKEUP  = 0x02,
11    ADS_STANDBY = 0x04,
12    ADS_RESET   = 0x06,
13    ADS_START   = 0x08,
14    ADS_STOP    = 0x0A,
15    ADS_RDATAC  = 0x10,
16    ADS_SDATAC  = 0x11,
17    ADS_RDATA   = 0x12,
18    ADS_RREG    = 0x20,
19    ADS_WREG    = 0x40,
20 };
21
22 // ADS1299 registers
23 enum {
24    ADS_REG_ID         = 0x00,
25    ADS_REG_CONFIG1    = 0x01,
26    ADS_REG_CONFIG2    = 0x02,
27    ADS_REG_CONFIG3    = 0x03,
28    ADS_REG_LOFF       = 0x04,
29    ADS_REG_CH1SET     = 0x05,
30    ADS_REG_CH2SET     = 0x06,
31    ADS_REG_CH3SET     = 0x07,
32    ADS_REG_CH4SET     = 0x08,
33    ADS_REG_CH5SET     = 0x09,
34    ADS_REG_CH6SET     = 0x0A,
35    ADS_REG_CH7SET     = 0x0B,
36    ADS_REG_CH8SET     = 0x0C,
37    ADS_REG_BIAS_SENSP = 0x0D,
38    ADS_REG_BIAS_SENSN = 0x0E,
39    ADS_REG_LOFF_SENSP = 0x0F,
40    ADS_REG_LOFF_SENSN = 0x10,
41    ADS_REG_LOFF_FLIP  = 0x11,
42    ADS_REG_LOFF_STATP = 0x12,
43    ADS_REG_LOFF_STATN = 0x13,
44    ADS_REG_GPIO       = 0x14,
45    ADS_REG_MISC1      = 0x15,
46    ADS_REG_MISC2      = 0x16,
47    ADS_REG_CONFIG4    = 0x17,
48
49    ADS_FIRST_REG      = ADS_REG_ID,
50    ADS_LAST_REG       = ADS_REG_CONFIG4,
51    ADS_REG_NUM        = ADS_LAST_REG+1 //number of registers
52 };
53
54 enum {
55    // ADS_REG_ID
56    ADS_ID_1299   = 0x1E, // ID reg value, ADS1299   (8 channels)
57    ADS_ID_1299_6 = 0x1D, // ID reg value, ADS1299-6 (6 channels)
58    ADS_ID_1299_4 = 0x1C, // ID reg value, ADS1299-4 (4 channels)
59    ADS_ID_MASK   = 0x1F, // ID reg mask (ignore REV_ID)
60
61    // ADS_REG_CONFIG1
62    ADS_CONFIG1_FIXED = 0x90, // fixed fields in ADS_REG_CONFIG1
63    ADS_DR_16  = 0<<0, // 16kSPS
64    ADS_DR_8   = 1<<0,
65    ADS_DR_4   = 2<<0,
66    ADS_DR_2   = 3<<0,
67    ADS_DR_1   = 4<<0, // 1kSPS
68    ADS_DR_05  = 5<<0, // 500SPS
69    ADS_DR_025 = 6<<0, // 250SPS
70
71    // ADS_REG_CONFIG2
72    ADS_CONFIG2_FIXED = 0xC0, // fixed fields in ADS_REG_CONFIG2
73    ADS_INT_TEST    = 1<<4, // Test signals are generated internally
74    ADS_TEST_AMP    = 1<<2, // Test signal amplitude
75    ADS_TEST_FREQ_0 = 0<<0, // Pulsed at fCLK / (1<<21)
76    ADS_TEST_FREQ_1 = 1<<0, // Pulsed at fCLK / (1<<20)
77    ADS_TEST_FREQ_3 = 3<<0, // At dc
78
79    // ADS_REG_CONFIG3
80    ADS_CONFIG3_FIXED  = 0x60, // fixed fields in ADS_REG_CONFIG3
81    ADS_PDB_REFBUF     = 1<<7, // _not_ Power-down reference buffer
82    ADS_BIAS_MEAS      = 1<<4, // BIAS measurement
83    ADS_BIASREF_INT    = 1<<3, // BIASREF connected to (AVDD + AVSS) / 2
84    ADS_PDB_BIAS       = 1<<2, // _not_ BIAS buffer power down
85    ADS_BIAS_LOFF_SENS = 1<<1, // BIAS sense function
86    ADS_BIAS_STAT      = 1<<0, // BIAS lead-off status
87
88    // ADS_REG_LOFF
89    ADS_ILOFF_6N      = 0<<2, // Lead-off current: 6nA
90    ADS_ILOFF_24N     = 1<<2, // Lead-off current: 6nA
91    ADS_ILOFF_6U      = 2<<2, // Lead-off current: 6nA
92    ADS_ILOFF_24U     = 3<<2, // Lead-off current: 6nA
93    ADS_FLOFF_DC      = 0<<0, // Lead-off freq: DC
94    ADS_FLOFF_7       = 1<<0, // Lead-off freq: 7.8Hz
95    ADS_FLOFF_31      = 2<<0, // Lead-off freq: 31Hz
96    ADS_FLOFF_F4      = 3<<0, // Lead-off freq: fDR/4
97
98    // ADS_REG_CHxSET
99    ADS_CH_PD   = 1<<7, // channel Power-down
100    ADS_GAIN_1  = 0<<4, // channel gain
101    ADS_GAIN_2  = 1<<4,
102    ADS_GAIN_4  = 2<<4,
103    ADS_GAIN_6  = 3<<4,
104    ADS_GAIN_8  = 4<<4,
105    ADS_GAIN_12 = 5<<4,
106    ADS_GAIN_24 = 6<<4,
107    ADS_SRB2    = 1<<3, // SRB2 connection
108    ADS_MUX_INPUT    = 0<<0, // Normal input
109    ADS_MUX_SHORT    = 1<<0, // Input shorted
110    ADS_MUX_BIAS     = 2<<0, // BIAS measurements
111    ADS_MUX_MVDD     = 3<<0, // MVDD for supply measurement
112    ADS_MUX_TEMP     = 4<<0, // Temperature sensor
113    ADS_MUX_TEST     = 5<<0, // Test signal
114    ADS_MUX_BIAS_DRP = 6<<0, // BIAS_DRP (positive electrode is the driver)
115    ADS_MUX_BIAS_DRN = 7<<0, // BIAS_DRN (negative electrode is the driver)
116
117    // ADS_REG_MISC1
118    ADS_SRB1    = 1<<5, // SRB1 connection (all inverting inputs)
119 };
120
121 #endif // HW_ADS1299_H