亲爱的对话的支持,
到目前为止,我们正在努力得到ADC在P02/P01工作使用外部分配器-尝试了da14585基本套件和我们自己的板,相同的行为。
当我们使用外部分压器时,我们总是得到电池读数为0,而引脚上的电压是1.050v -使用2M/1M欧姆分压器连接到P02或P01。
切换到内部ADC_CHANNEL_VBAT3V读取100%。在P02上应用1.050v并启用内部GP_ADC_ATTN3X时,总是得到关于0x2F的原始adc(8位)。
并在user_外围_setup.h中配置了以下内容:
#定义ADC_PORT GPIO_PORT_0
#定义ADC_PIN GPIO_PIN_2
和
adcx, adc_port, adc_pin, pid_adc;
在GPIO_reservation函数
GPIO_ConfigurePin(ADC_PORT, ADC_PIN, INPUT, PID_ADC, false);
在set_pad_function。
下面是修改后的adc_get_vbat_sample。
uint32_t adc_get_vbat_sample (bool sample_vbat1v)
{
#定义TEST_BATT 1
uint32_t adc_sample adc_sample2;
#如果TEST_BATT
adc_init (GP_ADC_SE GP_ADC_SIGN 0);
其他#
adc_init (GP_ADC_SE GP_ADC_SIGN GP_ADC_ATTN3X);
# endif
adc_usDelay (20);
如果(sample_vbat1v)
adc_enable_channel (ADC_CHANNEL_VBAT1V);
其他的
#如果TEST_BATT
#警告”p02”
adc_enable_channel (ADC_CHANNEL_P02);
其他#
adc_enable_channel (ADC_CHANNEL_VBAT3V);
# endif
adc_sample = adc_get_sample ();
adc_usDelay (7);
#如果TEST_BATT
adc_init (GP_ADC_SE, 0, 0);
其他#
adc_init(GP_ADC_SE, 0, GP_ADC_ATTN3X);
# endif
如果(sample_vbat1v)
adc_enable_channel (ADC_CHANNEL_VBAT1V);
其他的
#如果TEST_BATT
adc_enable_channel (ADC_CHANNEL_P02);
其他#
adc_enable_channel (ADC_CHANNEL_VBAT3V);
# endif
adc_sample2 = adc_get_sample ();
//我们要把下面的结果除以2如果
// 10位精度足够
Adc_sample = (adc_sample2 + Adc_sample);
adc_disable ();
返回adc_sample;
}
请注意,我们上面有“#define test_batt1”。
我们还漏掉了什么吗?
谢谢大家,
uta_lc
嗨uta_lc,
我正在处理你的问题,我做了一些测量,所以我会尽快让你知道。
谢谢,PM_Dialog
谢谢,已经修好了。
嗨uta_lc,
很高兴它能工作。你能告诉我们你是怎么解决这个问题的吗?
谢谢,PM_Dialog
嗨点,
h/w和s/w都是OK的-这是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