Hello
As a project, I would like to read adc with 24 bit TI's ADS1261 integration.
I examined datasheet and internet spills and
digitalWrite (2, HIGH);// start the integration
delay(500);
if(digitalRead(DRDY)==LOW)// The response from the DRDY pin integrated
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(0x05);//adress
byte1 = SPI.transfer(0);// read the data in the register by sending 0 to the register address we wrote
digitalWrite (slaveAPin, HIGH);
delay(1000);
Serial.println(byte1,BIN);// print the incoming answer to the serial screen
Serial.println();
}
digitalWrite(2, LOW);// reset the integration by making the start pin low
delay(500);
spelling this code
In the code, first I started the integration and checked whether the drdy output of the integrated is suitable for the data acquisition. I sent 0 with 0 and read the data in that register and made the slaveAPin pin high and wrote the data I read on the serial screen. By making the start pin low, I aimed to reset the circuit.
The spi.transfer command that I found as a result of my research was both writing and reading.
I used the command like this, am I using spi.transfer () command to send address data correctly? this is my first question
I made the necessary definitions and when I upload this command to my processor, the data from the status register is "10000001".
I need to read the "10000101" data from my register. The 3rd bit data ready bit should be one. You can see more clearly in the photos I share below.
And most importantly, from which register will I read my adc value?
how can i do that the whole code below
#include <SPI.h>
const int slaveAPin = 10;
int drdy=3;
int i=0;
uint8_t dta=10000000;
uint8_t dta1=00000001;
uint8_t dta2=00100100;
uint8_t dta3=00000001;
uint8_t dta4=00000000;
uint8_t dta5=01110000;
uint8_t dta6=00010000;
uint8_t dta7=11111111;
uint8_t dta8=00000000;
uint8_t dta9=11111111;
uint8_t dta10=00000000;
void setup() {
Serial.begin(9600);
SPI.setDataMode(SPI_MODE3);
SPI.setBitOrder(MSBFIRST);
pinMode (slaveAPin, OUTPUT);
pinMode (2, OUTPUT);//start pini çıkışı tanımlanıyor
pinMode (drdy, INPUT);
digitalWrite (2, LOW);
SPI.begin();
spi_ofcal0(0x07,0x00);
spi_ofcal1(0x08,0x00);
spi_ofcal2(0x09,0x00);
spi_fscal0(0x0A,0x00);
spi_fscal1(0x0B,0x00);
spi_fscal2(0x0C,0x40);
}
uint8_t byte1, byte2, byte3,byte4,byte5, result;
void loop()
{
digitalWrite(2,LOW);
if(digitalRead(drdy)==HIGH)
{
Serial.println("drdy pini yüksek");
}
delay(500);
spi_register(0x00,0x00);
spi_status(0x01,dta1);
spi_mode0(0x02,dta2);
spi_mode1(0x03,dta3);
spi_mode2(0x04,dta4);
spi_mode3(0x05,dta5);
spi_ref(0x06,dta6);
spi_mux(0x0D,dta7);
spi_imag(0x0E,dta8);
spi_inpmux(0x11,dta9);
spi_inpbias(0x12,dta10);
Serial.println("baslanın içinde");
digitalWrite (2, HIGH);
delay(500);
if(digitalRead(drdy)==LOW)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(0x05);
byte1 = SPI.transfer(0);
digitalWrite (slaveAPin, HIGH);
i=10;
delay(1000);
Serial.println(byte1,BIN);
Serial.println();
}
digitalWrite(2, LOW);
delay(500);
}
void spi_status(uint8_t adres,uint8_t data)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres);
SPI.transfer(data);
digitalWrite (slaveAPin, HIGH);
}
void spi_register(uint8_t adres1,uint8_t data1)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres1);
SPI.transfer(data1);
digitalWrite (slaveAPin, HIGH);
}
void spi_mode0(uint8_t adres2,uint8_t data2)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres2);
SPI.transfer(data2);
digitalWrite (slaveAPin, HIGH);
}
void spi_mode1(uint8_t adres3,uint8_t data3)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres3);
SPI.transfer(data3);
digitalWrite (slaveAPin, HIGH);
}
void spi_mode2(uint8_t adres4,uint8_t data4)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres4);
SPI.transfer(data4);
digitalWrite (slaveAPin, HIGH);
}
void spi_mode3(uint8_t adres5,uint8_t data5)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres5);
SPI.transfer(data5);
digitalWrite (slaveAPin, HIGH);
}
void spi_ref(uint8_t adres6,uint8_t data6)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres6);
SPI.transfer(data6);
digitalWrite (slaveAPin, HIGH);
}
void spi_mux(uint8_t adres7,uint8_t data7)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres7);
SPI.transfer(data7);
digitalWrite (slaveAPin, HIGH);
}
void spi_imag(uint8_t adres8,uint8_t data8)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres8);
SPI.transfer(data8);
digitalWrite (slaveAPin, HIGH);
}
void spi_inpmux(uint8_t adres9,uint8_t data9)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres9);
SPI.transfer(data9);
digitalWrite (slaveAPin, HIGH);
}
void spi_inpbias(uint8_t adres10,uint8_t data10)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres10);
SPI.transfer(data10);
digitalWrite (slaveAPin, HIGH);
}
void spi_ofcal0(uint8_t adres11,uint8_t data11)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres11);
SPI.transfer(data11);
digitalWrite (slaveAPin, HIGH);
}
void spi_ofcal1(uint8_t adres12,uint8_t data12)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres12);
SPI.transfer(data12);
digitalWrite (slaveAPin, HIGH);
}
void spi_ofcal2(uint8_t adres13,uint8_t data13)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres13);
SPI.transfer(data13);
digitalWrite (slaveAPin, HIGH);
}
void spi_fscal0(uint8_t adres14,uint8_t data14)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres14);
SPI.transfer(data14);
digitalWrite (slaveAPin, HIGH);
}
void spi_fscal1(uint8_t adres15,uint8_t data15)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres15);
SPI.transfer(data15);
digitalWrite (slaveAPin, HIGH);
}
void spi_fscal2(uint8_t adres16,uint8_t data16)
{
digitalWrite (slaveAPin, LOW);
SPI.transfer(adres16);
SPI.transfer(data16);
digitalWrite (slaveAPin, HIGH);
}