Page 2 of 2
Re: ADC低功耗唤醒后不工作
Posted: 2025年 Jul 24日 09:09
by Bryan Guo
有点意思,按你这样轮询采集两个通道,第二个通道始终为0。 先采集6通道,读出来是144mV, 8通道是0. 先采集8通道,读出来是1732mV, 6通道是0.
你那边怎么样?
Code: Select all
int battery_low_voltage_detect_test(void) {
int retval = 0;
uint32_t adc_value = 0;
TUYA_ADC_BASE_CFG_T adc_cfg = {
.ch_nums = 1,
.ch_list.data = (1 << 8), //(1 << 8),
.width = 12,
.type = TUYA_ADC_EXTERNAL_SAMPLE_VOL,
};
/* read channel 6 */
tal_adc_deinit(TUYA_ADC_NUM_0);
adc_cfg.ch_list.data = (1 << 6);
tal_adc_init(TUYA_ADC_NUM_0, &adc_cfg);
retval = (uint32_t)tal_adc_read_voltage(TUYA_ADC_NUM_0, &adc_value, 1);
TAL_PR_INFO("adc_value ch6 read value = %d mV.", adc_value);
/* read channel 8 */
tal_adc_deinit(TUYA_ADC_NUM_0);
adc_cfg.ch_list.data = (1 << 8);
tal_adc_init(TUYA_ADC_NUM_0, &adc_cfg);
retval = (uint32_t)tal_adc_read_voltage(TUYA_ADC_NUM_0, &adc_value, 1);
TAL_PR_INFO("adc_value ch8 read value = %d mV.", adc_value);
return retval;
}
Re: ADC低功耗唤醒后不工作
Posted: 2025年 Jul 24日 10:28
by jinyuan
PC4/PC5 这两路ADC比较特殊, 在一个循环内使用会有问题,涉及到这两路ADC 的时候建议采用pingpong的形式。演示代码如下:
Code: Select all
TIMER_ID app_adc_test_timer_id = NULL;
UINT8_T enter_sleep = 0;
UINT8_T pingpong = 0;
VOID_T app_adc_test_timeout_handler(TIMER_ID timer_id, VOID_T *arg)
{
if(enter_sleep == 0) {
enter_sleep = 1;
tal_ble_advertising_stop();
tal_cpu_allow_sleep();
}
INT32_T adc_value = 0;
OPERATE_RET ret = OPRT_OK;
// 读取通道6
TUYA_ADC_BASE_CFG_T adc_cfg = {
.ch_nums = 1,
.ch_list.data = (1<<6),
.width = 12,
.type = TUYA_ADC_EXTERNAL_SAMPLE_VOL,
};
if(pingpong == 0) {
pingpong =1;
tal_adc_deinit(TUYA_ADC_NUM_0);
tal_adc_init(TUYA_ADC_NUM_0, &adc_cfg);
ret = tal_adc_read_voltage(TUYA_ADC_NUM_0, &adc_value, 1);
if (ret == OPRT_OK) {
TAL_PR_DEBUG("ADC CH6 Value: %d", adc_value);
} else {
TAL_PR_DEBUG("ADC Read Flase: %d", ret);
}
} else {
pingpong = 0;
// 读取通道8
adc_cfg.ch_list.data = (1 << 8);
tal_adc_deinit(TUYA_ADC_NUM_0);
tal_adc_init(TUYA_ADC_NUM_0, &adc_cfg);
ret = tal_adc_read_voltage(TUYA_ADC_NUM_0, &adc_value, 1);
if (ret == OPRT_OK) {
TAL_PR_DEBUG("ADC CH8 Value: %d", adc_value);
} else {
TAL_PR_DEBUG("ADC Read Flase: %d", ret);
}
}
}
Re: ADC低功耗唤醒后不工作
Posted: 2025年 Jul 24日 11:26
by Bryan Guo