使用的SDK为TLSR8258_TuyaOS-3.11.1,现在开发一款低功耗产品,使用的电池减压进行供电,需要使用ADC获取电池的电压进行上报,发现所有例程都是获取内部电压的,能否提供一个ADC使用外部配置的示例工程?
ZTU如何使用ADC读取外部电池电压?
Re: ZTU如何使用ADC读取外部电池电压?
1.你好,可以参考下列代码,其中channel是与ADC_GPIO_tab关联,比如你想使用PB5作为外部电压采样管脚,那么你init时需要使用ch_5 ,tal_adc_read_single_channel输入的channel 也需要为5,其他管脚类推
Code: Select all
OPERATE_RET test_app_adc_init(VOID_T)
{
// const GPIO_PinTypeDef ADC_GPIO_tab[10] = {
// GPIO_PB0,GPIO_PB1,
// GPIO_PB2,GPIO_PB3,
// GPIO_PB4,GPIO_PB5,
// GPIO_PB6,GPIO_PB7,
// GPIO_PC4,GPIO_PC5
// };
OPERATE_RET ret = OPRT_COM_ERROR;
INT32_T adc_raw_val = 0;
TUYA_ADC_BASE_CFG_T adc_cfg = {
.ch_list.bits.ch_5 =1,//use ADC_GPIO_tab id5:GPIO_PB5
.ch_nums = 1,
.type = TUYA_ADC_EXTERNAL_SAMPLE_VOL,
.width = 12,
};
ret = tal_adc_init(TUYA_ADC_NUM_0, &adc_cfg);
return ret;
}
OPERATE_RET test_app_adc_read(INT32_T value)
{
OPERATE_RET ret = OPRT_COM_ERROR;
ret = tal_adc_read_single_channel(TUYA_ADC_NUM_0, 5, &value);//use ADC_GPIO_tab id5:GPIO_PB5
return ret;
}
Re: ZTU如何使用ADC读取外部电池电压?
我使用PB6作为外部电压采样管脚,想修改 tdl_battery_config.h的配置后直接使用,但是看到备注很多都是无需修改或不支持修改的,为了实现我的功能,应该修改哪些?
tdl_battery_config.h的配置代码如下:
/***********************************************************
*********************macro define*********************
***********************************************************/
#define TDL_BATTERY_DRIVER_TYPE (0) //0:TDL_BATTERY_DRIVER_TYPE_ADC,others reserve
#define TDL_BATTERY_DRIVER_TYPE_ADC (0) //Get battery volt by adc.
#define TDL_BAT_INFO_ADC_PIN (6) //if adc type is inner, don't need care it.
#define TDL_BAT_INFO_ADC_CH_ID (0) //Member of the ch_list, can't be change currently.
#define TDL_BAT_INFO_ADC_CH_LIST (0) //The ch_list should be inserted by user at initialization.
#define TDL_BAT_INFO_ADC_CH_NUM (1) //Depends on the number of ch_list members, currently only one is supported。
#define TDL_BAT_INFO_ADC_WIDTH (8) //Driver not support yet, don't need config.
#define TDL_BAT_INFO_ADC_FREQ (400) //Driver not support yet, don't need config.
#define TDL_BAT_INFO_ADC_TYPE (TUYA_ADC_EXTERNAL_SAMPLE_VOL) // 0: TUYA_ADC_INNER_SAMPLE_VOL, 1: TUYA_ADC_EXTERNAL_SAMPLE_VOL
#define TDL_BAT_INFO_ADC_MODE (TUYA_ADC_SINGLE)
#define TDL_BAT_INFO_ADC_REF_VOL (3300) //Driver not support yet, don't need config.
//if battery volt equals to 0 both, use default battery table.
#define TDL_BAT_INFO_MIN_VOLT (1650)
#define TDL_BAT_INFO_MAX_VOLT (2050)
#define BATTERY_DEFAULT_TABLE \
{1650, 0}, /minimum voltage, percentage/ \
{1700, 10},\
{1750, 20},\
{1825, 30},\
{1850, 40},\
{1875, 50},\
{1900, 60},\
{1950, 70},\
{1950, 80},\
{2000, 90},\
{2050, 100},/maximum voltage, percentage/
//Use to init tdd_battery_adc
#define TDD_BATTERY_ADC_INIT_INFO {\
{TDL_BAT_INFO_ADC_CH_LIST},\
TDL_BAT_INFO_ADC_CH_NUM,\
TDL_BAT_INFO_ADC_WIDTH,\
TDL_BAT_INFO_ADC_FREQ,\
TDL_BAT_INFO_ADC_TYPE,\
TDL_BAT_INFO_ADC_MODE,\
0,\
TDL_BAT_INFO_ADC_REF_VOL,\
}
Re: ZTU如何使用ADC读取外部电池电压?
这是应用逻辑,与开发框架的函数使用无关,你自己捋一下逻辑