亲爱的对话支持,
到目前为止,我们正在努力在使用外部分配器的P02 / P01上获取ADC - 尝试了DA14585基本套件和我们自己的电路板,相同的行为。
当我们使用到外部分频器时,我们总是获得电池读取0,而引脚上的电压为1.050V - 使用2M / 1M OHM分压器,用于连接P02或P01。
切换到内部ADC_CHANNEL_VBAT3V读取100%。使用1.050V应用于P02并使用内部GP_ADC_ATTN3X启用,始终获得0x2F的原始ADC(8位)。
并在user_periph_setup.h中配置了以下内容:
#define adc_port gpio_port_0.
#define adc_pin gpio_pin_2.
和
保留_GPIO(ADCX,ADC_PORT,ADC_PIN,PID_ADC);
在gpio_reservation函数中,和
gpio_configurepin(adc_port,adc_pin,输入,pid_adc,false);
在set_pad_function中。
这是修改后的adc_get_vbat_sample。
UINT32_T ADC_GET_VBAT_SAMPLE(BOOL SAMPLEM_VBAT1V)
{
#define test_batt 1
UINT32_T ADC_SAMPLE,ADC_SAMPLE2;
#if test_batt.
adc_init(gp_adc_se,gp_adc_sign,0);
#别的
adc_init(gp_adc_se,gp_adc_sign,gp_adc_attn3x);
#万一
ADC_USDELAY(20);
if(sample_vbat1v)
ADC_ENABLE_CHANNEL(ADC_CHANNEL_VBAT1V);
别的
#if test_batt.
#warning“使用p02”
adc_enable_channel(adc_channel_p02);
#别的
ADC_ENABLE_CHANNEL(ADC_CHANNEL_VBAT3V);
#万一
adc_sample = adc_get_sample();
ADC_USDELAY(7);
#if test_batt.
adc_init(gp_adc_se,0,0);
#别的
adc_init(gp_adc_se,0,gp_adc_attn3x);
#万一
if(sample_vbat1v)
ADC_ENABLE_CHANNEL(ADC_CHANNEL_VBAT1V);
别的
#if test_batt.
adc_enable_channel(adc_channel_p02);
#别的
ADC_ENABLE_CHANNEL(ADC_CHANNEL_VBAT3V);
#万一
adc_sample2 = adc_get_sample();
//我们必须将以下结果除以2如果
// 10位精度足够
ADC_SAMPLE =(ADC_SAMPLE2 + ADC_SAMPLE);
adc_disable();
返回ADC_SAMPLE;
}
请注意,我们上面有“#define test_batt 1”。
还有什么我们缺少的吗?
感谢您的关注,
Uta_lc.
嗨Uta_lc,
我正在研究你的问题,我做了一些测量,所以我会尽快通知你。
谢谢,PM_DIALOG.
谢谢,已经搞定了它。
嗨Uta_lc,
很高兴得到它的工作。你能告诉我们你如何解决这个问题吗?
谢谢,PM_DIALOG.
嗨PM,
H / W和S / W都可以 - 这是SDK行为从5.0.4到6.0.6的变化:
在SDK 5.0.4中,我们可以返回任何电池百分比值 - 我们尝试返回原始ADC(8位)以自定义电池百分比。
但是,在SDK 6.0.6中,它已以这样的方式更改,即任何值> 100返回为0.我们认为原始ADC值为0但是在一些调试后,我们发现原始ADC被正确阅读,它只是数据库不允许值> 100在电池电平UUID中返回。
干杯,
Uta_lc.
嗨Uta_lc,
谢谢你的迹象。
此致,
PM_DIALOG.