I'm trying to include analog devices CN0326 pH-measuring circuit in an already existing measuring circuit controlled by an MSP430. For now, I have removed the isolator (ADum5401) because it rendered my LED display in an unpowered state. But this shouldnt affect any signals, since it only isolates between two digital areas.
Anyhow, the problem at hand is, that the adc only outputs zeroes. I have solid SPI communication with the chip, and I can update and read from registers without any issues. I'm running on a very low bus-speed just to make sure my problems aren't SPI related (allthough I haven't ruled that out 100% yet).
I start my software like so: Read ID register (I get the correct value)
Internal fullscale calibration
Internal zeroscale calibration
Set the mode register (Idle mode, 64kHz internal clk and 4.17Hz update rate).
Set the config register (bipolar, Gain 1, buffered mode, ch1)
I read both mode and config register back, and the correct values are stored.
Then a lot of other stuff happens (regarding the other circuit) and when its time to convert, I change the mode reg to a single conversion, the config register to the fitting channel (Ch1 for pH, Ch2 for temperature).
I'm supposed to measure ph in a -420 mV to 420mV span, but right now, I have tried every kind of voltage and configuration and I still can't get a conversion.
I might not have configured it correctly even once. At this point I kinda blinded myself by trying so many different things.
So for a +-420 mV range, how should i configure the adc with bias voltages, references etc etc.
If you need any more info, please let me know.
Circuit diagram of your entire system is also needed to check whether there is something wrong with hardware setup. CN0326 evaluation board was designed to have an external bias voltage of 1.05V and uses it also as the external reference voltage for the +/-490mV signal from PH probe. Thus, you don't need to enable the internal bias voltage and you have to configure the ADC with external reference in the configuration register. The PH sensor also use channel 0 so you have to select channel 0. May I know exactly the value of your configuration register?
If you think you have configured the ADC with the above details and you still not getting data conversions. Can you stop reading back the conversions, set the ADC in continuous conversion and just monitor the DOUT/RDY pin to determine if it is pulsing at the selected output data rate? Please use OSC to monitor the DOUT/RDY pin as well as the SPI interface and show the waveform to us for further analysis.
Thanks for your reply.
Unfortunately, I can't show you circuit diagrams as they will reveal sensitive company information, and I haven't got authority to do that. What I can tell you is, that through a header with SPI signals and powersupply, the CN0326 circuit is connected through the J2 PMOD block like so:
CS_N - Connected to the MSP430 port 1 through a 3-to-8 line decoder (74HC138).
DIN - Connected directly to the MSP430. DOUT - Same as above.
Sclk - Same as above.
Rcout - not connected.
Gnd / vcc - connected to the 3V digital voltage as every other chip in the entire circuit.
Note: On the SPI bus there is also connected a AD7718, two isolators (ADuM1310) before 4-20mA outputs for HART communication and lastly, the eeprom.
As far as I understand, the 1.05V for bias and reference is generated with the excitation current on IOUT2 (210uA +- 5-10%) and the 5k precision resister R1. Although that resister is a DNI, so I'm not sure how that works..
CH0? I'm fairly sure that the AD has no such thing as a CH0. Not from the datasheet that is. Unless you declare +-AIN1 as CH0.
As of right now, my configuration register is set to 0x0010
I will try the continous conversion you suggested and get back to you asap.
Hi again Jelelnie
So, now I've put it in contineous conversion mode, and I've disabled all read commands (except 2). I still reset after power on, do an internal full/zero calibration and set the io reg for 210uA.
I have also disabled all of the functions that use the SPI bus, except for a few eeprom write/reads that i have to use. And yet, I still get nothing. But it seems like I'm not getting any conversion at all.
Channel 1 on the scope is the SPI clk, and channel 2 is the DOUT/RDY from the adc. The clk line has a few events here and there, but that is the eeprom functions mention above. DOUT/RDY on the other hand, never ever goes low. Thus, im never getting a conversion. And I have no idea why.
Do you have any RTD connected to P1? The DNI resistor R1 is a replacement to RTD that needs to be populated if your application doesn't require a temperature compensation. Open wire RTD or R1 will not generate a voltage reference to REFIN+ and REFIN- pins due to open circuit connections, thus the ADC will no longer have a valid reference input which may results the ADC conversion to clamped to all 0s or 1s. The board is recommended to work with an RTD input.
Hi again. No, I don't have an RTD connected. But I have inserted a 5k precision resistor on R1 and I have tried to apply a fixed voltage to REFIN +/-. And yet, i still haven't had any conversions. The test that resultet in the picture above was with a 1.05V input to REFIN+ and AIN-, and a ~2V input to AIN+.