Hello,
I am using ADS1148 to read temperature and mV from two sensors attached to two different channels of this ADC.
AIN0 and AIN1 for mV and AIN2 and AIN3 for reading temperature input.
I am doing single conversion and then switching the channel to do single conversion again. However, i am getting intermittent full scale reading (2.048 V) on my mV input.
I am not sure what can be be the cause of that? Could you please let me know why is that happening? Am i not allowing internal reference to settle fully before conversion?
I have attached the code for channel switch and single conversion for ADC. Any help would be appreciated.
//single conversion ADC
void ADC_measure_single_shot() { nrf_gpio_pin_set(POWER_PIN); //powering on LDO nrf_delay_ms(5); nrf_drv_timer_disable(&POWER_TIMER); DRDY_INTR_EN(); //DRDY INT enable nrf_gpio_pin_set(EXT_ADC_START); //start pin high nrf_delay_ms(2); nrf_gpio_pin_clear(EXT_ADC_START); //start pin low }
//channel switching
void change_mux_channel() { nrf_gpio_pin_set(EXT_ADC_START); nrf_delay_ms(2); if(gRunTimeDB.muxChange==0) { gRunTimeDB.muxChange++; gRunTimeDB.muxChangeCount++; //mux settings for Temperature channel APP_ERROR_CHECK(SPI_schedule_transaction(&temp_channel_config)); } else { gRunTimeDB.muxChange--; gRunTimeDB.muxChangeCount--; //mux settings for pH channel APP_ERROR_CHECK(SPI_schedule_transaction(&ph_channel_config)); } nrf_gpio_pin_clear(EXT_ADC_START); }
Thank you!