环境:sdk_bt892xa2_v01x_s4041_(蓝牙芯片 8922E2)
中科蓝汛的NTC检测在SDK内部已经做好了的,并且在配置工具中都可以进行调节阈值。
如下图:
在充电的情况下出现小于阈值时,耳机会出现关机 -> 开机 -> 关机 这样的一系列的循环。所以我们在充电的时候需要配置成耳机不充电,等NTC 恢复正常在进行充电。(在没有充电的状态下小于阈值时就会将耳机进行关机)
通过代码查看耳机会一直检测NTC当前的值,判断有20次出现小于的时候就会进行关机。函数原型如下:

AT(.com_text.ntc) u8 sys_ntc_check(void) { if (!xcfg_cb.ntc_en) { return 0; } static int n_cnt = 0; if(xcfg_cb.ntc_en){ if (adc_cb.ntc_val <= xcfg_cb.ntc_thd_val) { if(n_cnt >= 20){ sys_cb.ntc_2_pwrdwn_flag = 1; return 1; } else{ n_cnt++; } }else{ n_cnt = 0; } } return 0; }
讯享网
通过上面的代码可以看出我们也可以添加一个NTC温度下限的阈值。根据个人的习惯或者要求进行是否添加。
这阈值是需要我们自己通过实际测试出来的。
修改充电状态下,要是NTC温度过高就不充电、NTC温度安全就充电。代码如下:
讯享网AT(.com_text.ntc) u8 sys_ntc_check(void) { if (!xcfg_cb.ntc_en) { return 0; } static int n_cnt = 0; if(xcfg_cb.ntc_en){ if (adc_cb.ntc_val <= xcfg_cb.ntc_thd_val) { if(n_cnt >= 20){ if (sys_cb.charge_sta == 1 && DC_IN()) { // 接触5V并且正在充电 bsp_charge_sta(3); // 关闭 led // 关闭充电功能 bsp_charge_off(); RTCCON8 &= ~BIT(6); RTCCON8 |= BIT(1); n_cnt = 0; } else if (DC_IN() && sys_cb.charge_sta == 0){ // 将计数清零,否则在NTC过高或者过低之后恢复,再离开5V就会立马关机 n_cnt = 0; } else { sys_cb.ntc_2_pwrdwn_flag = 1; } printf("==>sys_cb.ntc_2_pwrdwn_flag = %d n_cnt = %d", sys_cb.ntc_2_pwrdwn_flag, n_cnt ); return 1; } else{ n_cnt++; } }else{ n_cnt = 0; if (sys_cb.charge_sta == 0 && DC_IN()) { bsp_charge_sta(1); // 打开 led // 打开充电功能 RTCCON8 |= BIT(6); RTCCON8 &=~BIT(1); } } } return 0; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/70320.html