STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
STAR_ADS126X.h
Go to the documentation of this file.
1/*
2Blake Felt
3https://github.com/Molorius/ADS126X-Arduino
4
5This is a class to use the TI ADS1262 and ADS1263 analog converters with an Arduino.
6*/
7
8#ifndef ADS126X_H
9#define ADS126X_H
10
11#include <stdint.h>
13#include <SPI.h>
14#include <Arduino.h>
15
16class ADS126X {
17 public:
18 struct ADCReading {
19 int32_t value;
21 };
22 // Initialization
23 ADS126X(void);
24 void begin(uint8_t chip_select);
25 void begin(uint8_t chip_select, SPIClass *spi);
26 void begin(void);
27 void setStartPin(uint8_t pin); // designate a pin connected to START
28
29 // All ADC Commands. Page 85
30 //General Commands
31 void noOperation(void);
32 void reset(void);
33 void startADC1(void);
34 void stopADC1(void);
35 void startADC2(void);
36 void stopADC2(void);
37 // Analog Read Functions
38 void setInputMux(uint8_t pos_pin, uint8_t neg_pin);
39 void setADC2Mux(uint8_t pos_pin, uint8_t neg_pin);
41 ADCReading readADC1(uint8_t pos_pin,uint8_t neg_pin);
43 ADCReading readADC2(uint8_t pos_pin,uint8_t neg_pin);
44 // Calibration Functions
45 void calibrateSysOffsetADC1(uint8_t shorted1,uint8_t shorted2);
46 void calibrateGainADC1(uint8_t vcc_pin,uint8_t gnd_pin);
48 void calibrateSysOffsetADC2(uint8_t shorted1,uint8_t shorted2);
49 void calibrateGainADC2(uint8_t vcc_pin,uint8_t gnd_pin);
51 // IDAC Functions
52 void setIDAC1Pin(uint8_t pin);
53 void setIDAC2Pin(uint8_t pin);
54 void setIDAC1Mag(uint8_t magnitude);
55 void setIDAC2Mag(uint8_t magnitude);
56
57
58 // POWER functions
59 bool checkResetBit(void);
60 void clearResetBit(void);
61 void enableLevelShift(void);
65
66 // INTERFACE/checksum functions
67 void disableCheck(void);
68 void setChecksumMode(void);
69 void setCRCMode(void);
70 bool lastChecksum(void);
71
72 // Status functions
73 void enableStatus(void);
74 void disableStatus(void);
75 uint8_t lastStatus(void); // returns entire status byte
76 bool lastADC2Status(void);
77 bool lastADC1Status(void);
78 bool lastClockSource(void);
83 bool lastReset(void);
84
85 // MODE0 functions
86 void setContinuousMode(void);
87 void setPulseMode(void);
88 void setChopMode(uint8_t mode);
89 void setDelay(uint8_t del);
90
91 // MODE1 functions
92 void setFilter(uint8_t filter);
93 void setBiasADC(uint8_t adc_choice);
94 void setBiasPolarity(uint8_t polarity);
95 void setBiasMagnitude(uint8_t mag);
96
97 // MODE2 functions
98 void enablePGA(void);
99 void bypassPGA(void);
100 void setGain(uint8_t gain);
101 void setRate(uint8_t rate);
102
103 void setReference(uint8_t negativeReference, uint8_t positiveReference);
104
105 // TDACP functions
106 void setOutputTDACP(bool enable);
108 void setOutputmagnitudeTDACP(uint8_t mag);
109
110 // TDACN functions
111 void setOutputTDACN(bool enable);
113 void setOutputmagnitudeTDACN(uint8_t mag);
114
115
116 //private:
117 // This will hold all values of the register. All commands are done
118 // through this.
120 // An array to call each register by the offset.
121 // It has the same memory location as REGISTER, so the changes
122 // will reflect on both.
123 __IO unsigned char *REGISTER_ARRAY = (uint8_t *)&REGISTER.ID.reg;
124
125 bool cs_used = false;
126 uint8_t cs_pin; // chip select pin
127 bool start_used = false;
128 uint8_t start_pin; // start pin
129
130 SPIClass *_spi; // pointer to SPI object
131
132 ADS126X_STATUS_Type STATUS; // save last status and checksum values
134
135 void sendCommand(uint8_t command); // sends a single command
136 void readRegisters(uint8_t start_reg,uint8_t num);
137 void writeRegisters(uint8_t start_reg,uint8_t num);
138 uint8_t readRegister(uint8_t reg);
139 void readAllRegisters();
140 void writeRegister(uint8_t reg);
141
142 void spi_rw(uint8_t buff[],uint8_t len);
143
144 // checksum math, page 72
145 bool check_checksum(uint32_t val,uint8_t byt);
146 bool check_crc(uint32_t val,uint8_t byt);
147 uint8_t msb_pos(uint64_t val); // returns the position of most significant bit
148};
149
150#endif // define ADS126X_H
static void enable(board_bringup_t *b, uint16_t device_id)
void setIDAC2Pin(uint8_t pin)
void enableStatus(void)
bool start_used
ADCReading readADC1()
void calibrateSysOffsetADC1(uint8_t shorted1, uint8_t shorted2)
void setReference(uint8_t negativeReference, uint8_t positiveReference)
void setBiasMagnitude(uint8_t mag)
void enableInternalReference(void)
void setPulseMode(void)
bool lastADC1Status(void)
uint8_t cs_pin
void startADC1(void)
void disableInternalReference(void)
__IO unsigned char * REGISTER_ARRAY
bool lastADC2Status(void)
void setADC2Mux(uint8_t pos_pin, uint8_t neg_pin)
ADS126X_REGISTER_Type REGISTER
void clearResetBit(void)
bool lastADC1LowReferenceAlarm(void)
uint8_t msb_pos(uint64_t val)
MODE0 register.
void setOutputTDACN(uint8_t on)
void calibrateSysOffsetADC2(uint8_t shorted1, uint8_t shorted2)
void calibrateSelfOffsetADC1(void)
void setBiasPolarity(uint8_t polarity)
void begin(void)
void writeRegisters(uint8_t start_reg, uint8_t num)
bool lastClockSource(void)
void spi_rw(uint8_t buff[], uint8_t len)
uint8_t readRegister(uint8_t reg)
SPI Communication Commands.
void setChecksumMode(void)
void setRate(uint8_t rate)
void bypassPGA(void)
void readRegisters(uint8_t start_reg, uint8_t num)
ads126x_reading readADC1()
bool lastADC1PGAOutputLowAlarm(void)
void setIDAC1Mag(uint8_t magnitude)
ADS126X(void)
< Initial ADC Setup
uint8_t start_pin
bool cs_used
void setIDAC2Mag(uint8_t magnitude)
void calibrateGainADC2(uint8_t vcc_pin, uint8_t gnd_pin)
void writeRegister(uint8_t reg)
bool lastADC1PGAOutputHighAlarm(void)
bool CHECKSUM
void setOutputmagnitudeTDACN(uint8_t mag)
ADS126X_STATUS_Type STATUS
void disableStatus(void)
void setInputMux(uint8_t pos_pin, uint8_t neg_pin)
void calibrateSelfOffsetADC2(void)
void setContinuousMode(void)
void setIDAC1Pin(uint8_t pin)
void enableLevelShift(void)
void setDelay(uint8_t del)
MODE1 register.
void startADC2(void)
ADCReading readADC2()
void setBiasADC(uint8_t adc_choice)
void disableLevelShift(void)
void stopADC1(void)
bool check_checksum(uint32_t val, uint8_t byt)
void setCRCMode(void)
void setGain(uint8_t gain)
void setFilter(uint8_t filter)
bool lastChecksum(void)
void setReservedTDACN()
void noOperation(void)
bool lastReset(void)
bool checkResetBit(void)
void disableCheck(void)
void readAllRegisters()
uint8_t lastStatus(void)
void setStartPin(uint8_t pin)
void calibrateGainADC1(uint8_t vcc_pin, uint8_t gnd_pin)
void enablePGA(void)
void setChopMode(uint8_t mode)
bool lastADC1PGADifferentialOutputAlarm(void)
void stopADC2(void)
bool check_crc(uint32_t val, uint8_t byt)
void reset(void)
SPIClass * _spi
void setReservedTDACP()
void sendCommand(uint8_t command)
void setOutputTDACP(uint8_t on)
void setOutputmagnitudeTDACP(uint8_t mag)
uint8_t neg_pin
Definition constants.h:6
#define __IO
Defines 'read / write' permissions.
uint8_t reg