Hi,
Do you have a code sample for configuring adc using the internal reference voltage (600 mV)? I tried the below code, but I do not see relevant values:
#define ADC_NODE DT_NODELABEL(adc)
#define ADC_RESOLUTION 10
#define ADC_CHANNEL 0
int16_t sample_buffer[1];
static void setup_adc(int chan_num)
{
const struct device *adc_dev;
struct adc_channel_cfg channel_cfg;
adc_dev = DEVICE_DT_GET(ADC_NODE);
if (!adc_dev) {
printk("ADC device not found\n");
return;
}
channel_cfg.gain = ADC_GAIN_1;
channel_cfg.reference = ADC_REF_INTERNAL;
channel_cfg.acquisition_time = ADC_ACQ_TIME(ADC_ACQ_TIME_MICROSECONDS, 10);
channel_cfg.channel_id = chan_num; // Set your desired channel ID
if (adc_channel_setup(adc_dev, &channel_cfg) < 0) {
printk("ADC channel setup error\n");
return;
}
const struct adc_sequence sequence = {
.channels = BIT(chan_num),
.buffer = sample_buffer,
.buffer_size = sizeof(sample_buffer),
.resolution = ADC_RESOLUTION,
};
if (adc_read(adc_dev, &sequence) < 0) {
printk("ADC read error\n");
return;
}
int32_t mv_value = sample_buffer[0];
int32_t adc_vref = adc_ref_internal(adc_dev);
printk("\nADC reference voltage is %d\n", adc_vref);
printk("\nADC raw value is %d\n", mv_value);
adc_raw_to_millivolts(adc_vref, ADC_GAIN_2, ADC_RESOLUTION, &mv_value);
printk("ADC-voltage: %d mV\n", mv_value);
}