Page 1 of 1

【求助】T5 ADC参考电压是什么

Posted: 2025年 Mar 18日 11:22
by jujuju

规格书上写ADC输入电压不超过1.1V, 代码里ADC设置的是12位宽, 那为什么我输入1.1V,用tuyaos_demo_example的例程测试,ADC采样值只有2700左右? 1.1V不该满量程是4095吗?


Re: 【求助】T5 ADC参考电压是什么

Posted: 2025年 Mar 18日 14:29
by 一个网友

您好,
1.1V那个是ADC通道4,针对外部M级分压的情况处理,其他的adc通道量程为0-3V


Re: 【求助】T5 ADC参考电压是什么

Posted: 2025年 Mar 18日 14:53
by jujuju

谢谢解答,我使用了默认的引脚测试,P24通道2,但是采集到的数值也不太符合预期


Re: 【求助】T5 ADC参考电压是什么

Posted: 2025年 Mar 18日 14:53
by jujuju

以下图片是测试结果


Re: 【求助】T5 ADC参考电压是什么

Posted: 2025年 Mar 19日 09:51
by jujuju

:)可以再帮忙解答下这个问题吗? 采样值不太符合预期,该怎么换算成正常电压


Re: 【求助】T5 ADC参考电压是什么

Posted: 2025年 Mar 19日 10:55
by 一个网友

您好,
1、adc的参考电压是VIO,通常为3.0V电压
2、采样值不准确这个请确认下输入电压

adc.png

参考代码如下:

Code: Select all

#define ADC_CONV_TIMES  8

TUYA_ADC_BASE_CFG_T tkl_cfg;
INT32_T adc_chan = tkl_io_pin_to_func(24, TUYA_IO_TYPE_ADC);

tkl_cfg.ch_list.data = BIT(adc_chan & 0xFF);
tkl_cfg.ch_nums = 1;
tkl_cfg.type = TUYA_ADC_INNER_SAMPLE_VOL;
tkl_cfg.width = 12;
tkl_cfg.mode = TUYA_ADC_CONTINUOUS;
tkl_cfg.conv_cnt = ADC_CONV_TIMES;
tkl_adc_init(0, &tkl_cfg);

uint32_t sum = 0;
INT32_T buffer[ADC_CONV_TIMES] = {0};
memset(buffer, 0, sizeof(INT32_T) * ADC_CONV_TIMES);
tkl_adc_read_data(0, buffer, ADC_CONV_TIMES);
for (int i = 0; i < ADC_CONV_TIMES; i++) {
    sum += buffer[i];
}
sum /= 8;


extern float bk_adc_data_calculate(uint16_t adc_val, uint8_t adc_chan);
uint32_t cur_vol = (uint32_t)(1000 * bk_adc_data_calculate(sum, 2));
bk_printf("---adc %d, %d\r\n", sum, cur_vol);

Re: 【求助】T5 ADC参考电压是什么

Posted: 2025年 Mar 19日 11:35
by jujuju

了解了,谢谢,我用的是SDK里的demo,它用的接口只返回ADC值,需要换一个接口才会自动计算出电压值