Ads 1247 -spi data reading ?

I tried with ADS 1247 IC many times but didn't get proper ADC conversion.
Please give any suggestions and I have given my code below.

#include <SPI.h>

// set I/O pins used in addition to clock, data in, data out

const byte slaveSelectPin = 10; // digital pin 10 for /CS

void setup()

{

//Enable Serial

Serial.begin(115200);

pinMode (slaveSelectPin, OUTPUT);

digitalWrite(slaveSelectPin,HIGH); // chip select is active low

SPI.beginTransaction(SPISettings(500000,MSBFIRST,SPI_MODE1));

delay(200);

SPI.begin(); // initialize SPI, covering MOSI,MISO,SCK signals

//SPI.setBitOrder(MSBFIRST); // data is clocked in MSB first

//SPI.setDataMode(SPI_MODE1); // SCLK idle low (CPOL=0), MOSI read on rising edge (CPHI=0)

//RESET THE ADS 1247

digitalWrite(slaveSelectPin,LOW);

delayMicroseconds(1);

SPI.transfer(0x06); //Reset the ADS1247//0X06//0x07

delay(1); //

digitalWrite(slaveSelectPin,HIGH);

delay(10);//

Serial.println("ADS1247 RESET");

//CONFIGURE ADS 1247

digitalWrite(slaveSelectPin,LOW);

delayMicroseconds(650000);

delayMicroseconds(50000);

SPI.transfer(0x17); //Issue SDATAC

delayMicroseconds(50000);

SPI.transfer(0x62);//SELFOCAL

delayMicroseconds(650000);

SPI.transfer(0x40);//WREG

SPI.transfer(0x03);//SYS0

SPI.transfer(0x01);//VBIAS

SPI.transfer(0x00);//MUX0 AN 0

SPI.transfer(0x02);//MUX1 AN 1

SPI.transfer(0x15);//SPS

delayMicroseconds(650000);

SPI.transfer(0x05);//SYNC

SPI.transfer(0x05);//SYNC

delayMicroseconds(650000);

SPI.transfer(0x20);//CMD REG

SPI.transfer(0x43);//SYS0

delayMicroseconds(650000);

digitalWrite(slaveSelectPin,HIGH);

delay(100);

Serial.println("ADS1247 CONFIGURED");

}

void loop()

{

digitalWrite(slaveSelectPin,LOW);

delayMicroseconds(650000);

int32_t A2DVal = 0x00; //Reset A2D Storage Value

SPI.transfer(0x13); //Issue RDATA//0x014//0x13//0X12

delayMicroseconds(650000);

A2DVal |= SPI.transfer(0xFF); //Write NOP, Read First Byte and Mask to A2DVal

A2DVal<<=8;//Left Bit-Shift A2DVal by 8 bits

A2DVal |= SPI.transfer(0xFF); //Write NOP, Read Second Byte and Mask to A2DVal

A2DVal<<=8;

A2DVal |= SPI.transfer(0xFF); //Write NOP, Read Third Byte and Mask to A2DVal

A2DVal &= (0x00FF);

delayMicroseconds(650000);

digitalWrite(slaveSelectPin,HIGH); // chip select is active low

//delayMicroseconds(650000);

Serial.print("ADC VALUE : ");

Serial.println(A2DVal,DEC);

//Serial.println(A2DVal,HEX);

delay(1000);

}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.