BES平台温度监控功能原理
BES默认设计是通过定时器去定期采集温度,当所采集的温度超出范围时,切断充电即可。
硬件设计
默认代码中检测的是芯片内部温度,代码不能知道电池温度,所以需要外籍电路来实现ntc电池温控。
电路参考:
GPIO-01只需要接一个1.8V高电平即可。
软件设计
代码部分贴出接口即可龚开发者参考即可,以免设计侵犯厂家版权。
void ntc_capture_irqhandler(uint16_t irq_val, HAL_GPADC_MV_T volt);//
int ntc_capture_open(void)
{
ntc_capture_measure.currvolt = 0;
ntc_capture_measure.index = 0;
ntc_capture_measure.temperature = 0;
ntc_capture_measure.cb = NULL;
pmu_ntc_capture_enable();
hal_gpadc_open(HAL_GPADC_CHAN_0, HAL_GPADC_ATP_ONESHOT, ntc_capture_irqhandler);
return 0;
}
int ntc_capture_start(void)
{
pmu_ntc_capture_enable();
hal_gpadc_open(HAL_GPADC_CHAN_0, HAL_GPADC_ATP_ONESHOT, ntc_capture_irqhandler);
return 0;
}
软件方面代码已经集成,调用接口开启定时器采集温度即可。
另外还需要注意,调用的时候要先配置通道,硬件编号跟软件编号要对应上需要 +2,硬件的 ADC1,软件读的是 CH3,ADC0,软件读的是CH2,电池电压软件读的是CH1。
温度高关机与切断充电
NTC温控功能逻辑1:
(1)耳机电池温控超出范围。
(2)调用system_shutdown()关机;
(3)(打开宏ACON_CAUSE_POWER_UP)耳机掉5V出盒开机
NTC温控功能逻辑2:
(1)耳机电池温控超出范围
(2)拉高HAL_IOMUX_PIN_P2_4切断充电(部分芯片设计有通过拉高引脚来实现切断充电的目的。)
测试与验证
验证效果的时候要注意,电压有虚高情况,测试是否切断充电时,测试电流不要测试电压。