充电仓软件问题整理
充电仓软件问题整理
TOC \o "1-1" \h \u HYPERLINK \l _Toc1487923288 1. AD156b_AC6366c 不带通信仓无法进关机或关机又被唤醒 20210817 CKS PAGEREF _Toc1487923288 \h 2
HYPERLINK \l _Toc437632750 2. AD156b_AC6366c 无线充握手时,188数码管屏会闪 20210817 CKS PAGEREF _Toc437632750 \h 2
HYPERLINK \l _Toc1148831137 3. AD156b USB插入充电时,电池电量检测值偏大 20210817 CKS PAGEREF _Toc1148831137 \h 3
HYPERLINK \l _Toc433754847 4. AC6366c PA1脚配置输入不成功 20210820 CKS PAGEREF _Toc433754847 \h 4
HYPERLINK \l _Toc2068134992 5. AD156b_AC6366c 不带通信唤醒时会触发耳机入仓事件 20210827 CKS PAGEREF _Toc2068134992 \h 4
HYPERLINK \l _Toc308488474 6. AD156b_AC6366c 耳机充满没有满电消息出来 20220625 CKS PAGEREF _Toc308488474 \h 5
HYPERLINK \l _Toc2018891622 7. AD156b_AC6366c 不带霍尔和通信普通仓,耳机充满会开机,或者仓睡眠功耗大 20220625 CKS PAGEREF _Toc2018891622 \h 9
HYPERLINK \l _Toc318981895 8. AC6366c ac636n_chargebox_sdk_release_v1.3.0用自定义通信会复位 20220625 CKS PAGEREF _Toc318981895 \h 9
HYPERLINK \l _Toc2058846549 9. AD156b 程序如果出现死机不能复位 20220625 CKS PAGEREF _Toc2058846549 \h 10
HYPERLINK \l _Toc692615264 10. AD156b 推188屏插充电时会闪屏 20220815 CKS PAGEREF _Toc692615264 \h 11
HYPERLINK \l _Toc1733757932 11. AD156b 小概率出现除0死机 20220830 CKS PAGEREF _Toc1733757932 \h 11
HYPERLINK \l _Toc895506831 12. AC98N没有hall,只跑app_close,走的充电流程会有些问题,耳机充电完成关机后会被唤醒 20230610 FSW PAGEREF _Toc895506831 \h 13
HYPERLINK \l _Toc730086064 13. AC98n用V1.1.1版本的SDK,软件需要做如下修改,解决VOUT没5V输出的问题 20230621 FSW PAGEREF _Toc730086064 \h 15
HYPERLINK \l _Toc955460227 14. AC98N V110sdk 同时充放电会导致报欠压/过压的报错 MRD PAGEREF _Toc955460227 \h 19
HYPERLINK \l _Toc1968151546 15. AC98N V201SDK打印波特率115200出现乱码,9600不会 MRD PAGEREF _Toc1968151546 \h 20
AD156b_AC6366c 不带通信仓无法进关机或关机又被唤醒 20210817 CKS 在ear_load_det.c中下图位置加上io配置:
gpio_set_direction(io, 1);
gpio_set_die(io, 1);
gpio_set_pull_up(io, 0);
delay(200);
AD156b_AC6366c 无线充握手时,188数码管屏会闪 20210817 CKS (1)修改wl_timer_open函数

注释掉中断失能和中断使能,修改wl_timer_open函数的调用


- AD156b USB插入充电时,电池电量检测值偏大 20210817 CKS 需要开启usb检测IO的下拉

- AC6366c PA1脚配置输入不成功 20210820 CKS PA1口不能使用函数gpio_set_direction(IO_PORTA_01, 1)的方式来配置输入,需要使用配置寄存器JL_PORTA->DIR |= BIT(1)的方式来配置。
- AD156b_AC6366c 不带通信唤醒时会触发耳机入仓事件 20210827 CKS 在ear_load_det.c中下图位置加上以下代码:
gpio_set_direction(TCFG_CHARGEBOX_L_PORT, 1);
gpio_set_die(TCFG_CHARGEBOX_L_PORT, 1);
gpio_set_pull_up(TCFG_CHARGEBOX_L_PORT, 0);
delay(200);
gpio_set_direction(TCFG_CHARGEBOX_R_PORT, 1);
gpio_set_die(TCFG_CHARGEBOX_R_PORT, 1);
gpio_set_pull_up(TCFG_CHARGEBOX_R_PORT, 0);
delay(200);

- AD156b_AC6366c 耳机充满没有满电消息出来 20220625 CKS 在ear_cur_det.c里面增加static u16 ear_pwr_cnt[TCFG_CURRENT_DETECT_CHL];,以及修改static void update_ear_power(u8 chl)函数

static u16 ear_pwr_cnt[TCFG_CURRENT_DETECT_CHL];
static u16 cur_ear_curr[TCFG_CURRENT_DETECT_CHL];//当前的耳机电流
static u16 ear_max_curr[TCFG_CURRENT_DETECT_CHL];//2s内耳机的最大电流
static u16 ear_max_tmp[TCFG_CURRENT_DETECT_CHL];
static u16 ear_cur_tmp[TCFG_CURRENT_DETECT_CHL];
static u8 ear_cur_det_cnt[TCFG_CURRENT_DETECT_CHL], ear_cur_max_cnt[TCFG_CURRENT_DETECT_CHL];
static u8 current_detect_skip;
#if TCFG_EAR_ONOFF_DET_TYPE == EAR_ONOFF_DET_BY_CURR
static u8 on_cnt[EAR_MAX], off_cnt[EAR_MAX];
#endif
#if (TCFG_COMM_ENABLE == DISABLE_THIS_MOUDLE)
//不支持通信的充电舱,需要靠充电电流来估算耳机电量
static void update_ear_power(u8 chl)
{
static u32 power_cnt = 0;
u8 tmp_power;
if (ear_info.online_hw[chl] == 0) {
return;
}
if(ear_max_curr[chl] < 2){
if (sys_info.chgbox_status == CHG_STATUS_COMM) { //开盖状态,无电流
ear_pwr_cnt[chl] = 0;
}
tmp_power = 0; //关盖状态,无电流,异常情况
}else if (ear_max_curr[chl] > 40) {
tmp_power = 10;//小于25
} else if (ear_max_curr[chl] > 30) {
tmp_power = 35;//小于50
} else if (ear_max_curr[chl] > 20) {
tmp_power = 60;//小于75
} else if (ear_max_curr[chl] > 10) {
tmp_power = 85;//小于75
} else if (ear_max_curr[chl] > 5) {//5mA不能改小
tmp_power = 97;//小于75
} else {
tmp_power = 100;//小于100
}
if(ear_max_curr[chl] < 10){ //避免耳机板子耗电过大,无法判断充电电流出错
ear_pwr_cnt[chl]++;
} else {
ear_pwr_cnt[chl] = 0;
}
if(ear_pwr_cnt[chl] > 100){ //限制最大充电时间
tmp_power = 100;//小于100
}
if ((ear_info.power[chl] == 0xff)||(ear_info.power[chl] == 0)) {
if(tmp_power < 85)
ear_info.power[chl] = tmp_power;
else
ear_info.power[chl] = 85;
} else {
if (ear_info.power[chl] < tmp_power) {
ear_info.power[chl]++;
if (chl == EAR_L) {
app_chargebox_event_to_user(CHGBOX_EVENT_UPDATE_EAR_L_POWER);
} else {
app_chargebox_event_to_user(CHGBOX_EVENT_UPDATE_EAR_R_POWER);
}
}else{
}
}
#define CHG_EAR_FULL_DET_CNT 2 //收到几次满电后发出满电消息
#define CHG_EAR_FULL_DET_LEVEL 100 //满电值
u8 full_msg = (chl == EAR_L) ? CHGBOX_EVENT_EAR_L_FULL : CHGBOX_EVENT_EAR_R_FULL;
if (ear_info.full_flag[chl]) {
return;
}
if ((ear_info.power[chl] & 0x7f) == CHG_EAR_FULL_DET_LEVEL) {
ear_info.full_cnt[chl]++;
if (ear_info.full_cnt[chl] >= CHG_EAR_FULL_DET_CNT) {
ear_info.full_flag[chl] = 1;
ear_info.full_cnt[chl] = 0;
app_chargebox_event_to_user(full_msg);
}
}else{
ear_info.full_flag[chl] = 0;
ear_info.full_cnt[chl] = 0;
}
log_info("ear_info.power[%c]: %d, tmp_power: %d, ear_max_curr: %d, cnt:%d",
(chl == EAR_L) ? 'L' : 'R', ear_info.power[chl], tmp_power, ear_max_curr[chl], ear_pwr_cnt[chl]);
}
#endif
- AD156b_AC6366c 不带霍尔和通信普通仓,耳机充满会开机,或者仓睡眠功耗大 20220625 CKS 耳机端修改代码,在get_ldo5v_pulldown_en里面关掉下拉

L5V_RES_DET_S_SEL(__this->data->ldo5v_pulldown_lvl);L5V_LOAD_EN(0);
AC6366c ac636n_chargebox_sdk_release_v1.3.0用自定义通信会复位 20220625 CKS 如果用自定义通信协议,就不能用默认的数据收发接口,把原来的接口chargebox_data_deal(u8 cmd, u8 l_r, u8 *data, u8 len)注释掉,换成自己写的处理函数即可

AD156b 程序如果出现死机不能复位 20220625 CKS 生产程序一定要把异常中断打印关掉,确保能复位,不然会断言卡住

还有生产程序要把带电池升级功能开启,PB9引出来,确保整机有办法升级
- AD156b 推188屏插充电时会闪屏 20220815 CKS 如果开了支持充电握手协议,按下图修改,如果修改后还有小概率发现轻微闪屏,是正常现象,握手对时序要求很高,握手时需要关闭中断,会导致推屏的中断会少几个。

如果没开支持充电握手协议,检查下程序是不是加了开关中断的地方,建议关开中断的时间不要太久,或者跟推屏的时间点错开
11. AD156b 小概率出现除0死机 20220830 CKS 打开内核异常打印抓log
如果真的是除0异常
临时方法是添加复位处理
根本原因需要查升压放电部分电路,正常VBAT读回来不应该是0
- AC98N没有hall,只跑app_close,走的充电流程会有些问题,耳机充电完成关机后会被唤醒 20230610 FSW




- AC98n用V1.1.1版本的SDK,软件需要做如下修改,解决VOUT没5V输出的问题 20230621 FSW 带flash的芯片:
按照以下截图修改代码
下一页还有图
OTP芯片:
//PVBG
if (!otp_trim.trim_en.u.pvbg) {
PVBG_SET(otp_trim.pmu0.u.pvbg_lev);
} else {
//默认为0必须重新设置
PVBG_SET(0x07);
}
添加到下图位置
static data u8 time0_daley_prd;
TMR0_PR = W_CLK / (1000 / TCFG_TIMER_LOOP) - 1;//恢复PRD
time0_daley_prd = W_CLK / 500 / 10;//先计算好需要延时的时间
TMR0_CNT = 0;TMR0_PR = time0_daley_prd;TMR0_CON0 |= TMR_CPND;while (!(TMR0_CON0&TMR_PND));//延时200us之后在进行过压欠压检测,否则在低压状态升压不起来
添加到下图位置


- AC98N V110sdk 同时充放电会导致报欠压/过压的报错 MRD 现象:客户板子上跑公版sdk就会出现以下报错,VOUT口会输出超过5.9v的电压

原因:客户没有按照公版原理图来设计板子,VOUT口电容由公版106改为105。
INCLUDEPICTURE \d "https://static.dingtalk.com/media/lALPDfJ6dIR1bq7NAdPNAYI_386_467.png_720x10000.jpg?bizType=report" * MERGEFORMATINET
- AC98N V201SDK打印波特率115200出现乱码,9600不会 MRD 打印有部分正常部分乱码如:

经过计算,115200波特率偏差较大,容易造成串口识别错误的情况
修改如下:
INCLUDEPICTURE \d "https://static.dingtalk.com/media/lQLPJwLbFOmF8DzNAvPNA42wp6lpY4RFI9sFJN1bkqXUAQ_909_755.png" * MERGEFORMATINET
INCLUDEPICTURE \d "https://static.dingtalk.com/media/lQLPJwjcILMxkDzNAmrNA86wDDaMr1d0tkIFJN1bkqXUAA_974_618.png" * MERGEFORMATINET INCLUDEPICTURE \d "https://static.dingtalk.com/media/lQLPJwLbFOmF8DzNAvPNA42wp6lpY4RFI9sFJN1bkqXUAQ_909_755.png" * MERGEFORMATINET
INCLUDEPICTURE \d "https://static.dingtalk.com/media/lQLPJwjcILMxkDzNAmrNA86wDDaMr1d0tkIFJN1bkqXUAA_974_618.png" * MERGEFORMATINET
珠海谢彬说之后发布的sdk会同步更新此修改。