#include // Pin definitions #define CS_PIN 7 //#define SCLK_PIN 9 //#define MISO_PIN 8 //#define MOSI_PIN 10 #define reset_PIN 5 // Reset Pin void setup() { Serial.begin(115200); while (!Serial); // Chip Select pin pinMode(CS_PIN, OUTPUT); digitalWrite(CS_PIN, HIGH); // Configure reset pin pinMode(reset_PIN, OUTPUT); digitalWrite(reset_PIN, HIGH); // reset ADC // Initialize SPI using Mode 1 (CPOL=0, CPHA=1) SPI.begin(); // Send Software reset before the first communication resetADC(); // Read and print multiple registers uint16_t deviceID = readRegister(0x03); // Device ID register Serial.print("Device ID (0x04): 0x"); Serial.println(deviceID, HEX); uint16_t status = readRegister(0x01); // Status register Serial.print("Status Register (0x01): 0x"); Serial.println(status, HEX); // Read back register 0x05 to verify communication uint16_t regVal = readRegister(0x02); Serial.print("Register (0x05): 0x"); Serial.println(regVal, HEX); } void loop() { //Test to read the second channel (result= 66535(0XFFFF)) //uint16_t rawValue = readChannel(2); //Serial.print("ADC-Wert Ch2: "); //Serial.println(rawValue); delay(1000); } // Sends a software reset command (0x8500) to ADS8684 void resetADC() { digitalWrite(CS_PIN, LOW); SPI.transfer16(0x8500); digitalWrite(CS_PIN, HIGH); delay(10); // Give device time to reset } uint16_t readRegister(uint8_t regAddr) { uint16_t command = (regAddr << 8); SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE1)); digitalWrite(CS_PIN, LOW); SPI.transfer16(command); digitalWrite(CS_PIN, HIGH); digitalWrite(CS_PIN, LOW); uint16_t data = SPI.transfer16(0x0000); // Dummy write to read digitalWrite(CS_PIN, HIGH); return data; } /* uint8_t readRegister(uint8_t reg) { SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE1)); digitalWrite(CS_PIN, LOW); SPI.transfer((reg << 1) | 0x00); SPI.transfer(0x00); byte result = SPI.transfer(0x00); digitalWrite(CS_PIN, HIGH); SPI.endTransaction(); return result; } */ uint16_t readChannel(uint8_t channel) { uint16_t command = 0xC000 | ((channel & 0x0F) << 8); digitalWrite(CS_PIN, LOW); uint16_t rawData = SPI.transfer16(command); digitalWrite(CS_PIN, HIGH); return rawData; }