Hi TI Technical Support team,
With the help and suggestions made to my previous post in this forum, I have designed a board that has two TI ADS8699 18 bit 100kHz ADC on, which will be used to measure analog voltages between 0 and 5V. Before writinh anything to registers, I tested the board with default range setting (bipolar 3*Vref) by applying 3.3V to the ADC inputs and successfully managed to get them work. The test input was 3.27V and corresponding ADC measurements were very close to it (about 3.255.. ). There was small measurement difference, because my input voltage was not precise, and also I was making connections using cables. I used following setup.
make csADC LOW
byte firstByte = SPI.transfer (B00000000);
byte secondByte = SPI.transfer(B00000000);
byte thirdByte = SPI.transfer(B00000000);
byte fourthByte = SPI.transfer(B00000000);
make csADC HIGH
To get voltage results, I took first 18 bits and used attached excel file for binary to voltage calculation that I found in another post related to ADS8699 ADC in this forum. After successful readings, I tried to write to range_sel_reg to make adc input range 0-5.12V, but I failed.
I have following questions.
1. I tried to write range_sel_reg using following commands in order to adjust ADC input range to 0-5.12V. Then, by applying again ~3.3V test input, I measured ADC output (about 170235 decimal). Using excel file and setting the range parameter in the excel to 1.25, I get 0.76V. I think either I am using excel file in a wrong way or I am not writing to range select register properly. My register configuration commands are:
make csADC LOW
SPI.transfer(0xD4); //11010100
SPI.transfer(0x14); // 00010100
SPI.transfer(0x00);
SPI.transfer(0xB); // 1011
make csADC HIGH
Could you please tell me where is my mistake?
2. I have reset pins attached to ADC reset pins. I am using them to make reset in power up. Does following commands enough to make ADC reset, do I need extra commands?
make ADC reset pin LOW
wait 20ms
make ADC reset pin HIGH
3. After writing 1011 to range_sel_reg and failing to get expected voltage result, I tried to read range_sel_reg using following commands to see if I was able to write to register.
make csADC LOW
SPI.transfer (0xC8); //11001000
SPI.transfer(0x14); // 00010100
SPI.transfer(B00000000);
byte reading=SPI.transfer(B00000000); // I expect 1011 in the reading byte
make csADC HIGH
With 1 second delays, I tried continuously read the range_sel_reg. I read expected result (1011) in every power up but after that I always get 0. Is this expected behavior?
Thank you for your help,
Ahmet
3302.ADS869x_FormatConversion_DL (2).xlsx