QSC6010电池充电流程陈登2008-12-22主要内容充电电路充电模式充电流程关机充电开机充电充电时按开机键开机充电电路充电器供电控制:PNP型三极管:射极(E):接充电器基极(B):接CHG_CTL_N集电极(C):接Vdd电池充电控制:P沟道增强型场效应管:源极(S):接Vdd栅极(G):接BAT_FET_N漏极(D):接电池软件控制接口PNP节三极管控制接口:–pm_chg_wall_charger_transistor_switch(ON/OFF)–pm_chg_usb_charger_transistor_switch(ON/OFF)场效应管控制接口:–pm_chg_battery_transistor_switch(ON/OFF)供电设备优先级:Wallcharger、USBcharger、Mainbattery更改默认供电设备接口:–pm_chg_usb_charger_pwr_up_def_st(PM_CHG_USB_POWER_ON_FROM__BAT)USBCharger判断电路充电模式TrickleCharge(滴流充电)FastCharge(恒流充电)Constantvoltagecharge(恒压充电)PulseCharge(脉冲充电)TrickleCharge(滴流充电)电压范围:2.8V~3.2VTricklecharge时,场效应管截止,充电电流从VBATpin流入电池;Tricklecharge时,充电电流0~80mA;Pm_chg_trickle_config()设置电流值Tricklecharge滴流模式FastCharge(恒流充电)电压范围:3.1V~4.1V三极管和场效应管都导通,charge提供设备供电和电池充电;设置最大电流值(1.8A):pm_chg_wall_charger_transistor_imaxsel(IMAXSEL)FastCharge恒流模式Constantvoltagecharge(恒压充电)电压范围:4.0V~4.3V;三极管和场效应管都导通,charge提供设备供电和电池充电;与Fastcharge相似,不同之处采样电压值进行反馈;USBcharge专用pm_chg_charger_transistor_vmaxsel(PM_CHG_Q_VMAXSEL_4200mV);Constantvoltage恒压模式PulseCharge(脉冲充电)电压范围:4.0V~4.3V三极管导通向Vdd供电,场效应管周期性导通形成脉冲电流;T_ON:125msT_OFF:500msWallcharge专用各充电模式对应电压范围4.0V~4.3VFastCharge(恒流模式)3.1V~4.1VTrickleCharge(滴流模式)2.8V~3.2V脉冲模式恒压模式充电流程Charge初始化:Tmc_init()tmc_libraries_init_after_service_tasks_start()chg_init()chg_init_delayed()读USB_charge使能NV项;初始化充电状态机进入idle状态;(如果为USBchargeenbale,设置电池供电,USB挂起)Enable充电中断函数;充电状态机chg_state_cfg[]包含各状态下处理函数:每个状态有三个处理函数:1.Entryfunction();当调chg_force_state()进新状态时调用2.Periodicfunction();被chg_poll_cb()timer周期调用3.Exitfunction();当调chg_force_state()出当前状态时调用根据当前电池及其它参数切换状态机状态;错误处理状态切换关机充电,开机充电触发开机的5个事件:1.Poweron按钮按下,KPDPWR_N低;2.外部电源接到VCHG,使三极管射级和基极间导通;3.RTCalarm;4.线缆插入事件,CBL_PWR_Npin低;5.瞬时功率降低(SMPL)。关机充电(无电池)当关机情况下插入Wallcharger或USBcharger:1.系统poweron;2.当执行到hs_task初始化hs_init()时,调用函数hs_probe_power_on_event()判断触发开机的事件,会判断为HS_CHG_PWRON_EVT或HS_USB_PWRON_EVT开机事件,此时检查到电池未接上,直接poweroff;关机充电(有电池)当关机情况下插入Wallcharger或USBcharger:1.系统poweron;2.当执行到hs_task初始化hs_init()时,调用函数hs_probe_power_on_event()判断触发开机的事件,会判断为HS_CHG_PWRON_EVT或HS_USB_PWRON_EVT开机事件,检查到有电池,poweron;3.ui_task()中ui_init1()判断开机事件为VCHG,UI进入charge模式;4.chg_init(),chg_init_delayed();初始化充电状态机;5.产生Wallcharge或USBcharge中断,执行对应Isrchg_wall_valid_isr()或chg_usb_i_is_available();Start状态机。开机充电当开机情况下插入Wallcharger或USBcharger:1.产生Wallcharge或USBchargevalid中断,执行对应ISRchg_wall_valid_isr()或chg_usb_i_is_available();1.若为Wallcharger,设置Wallcharger拔出中断;Start状态机。2.若为USBcharger,设置USBcharge状态机进入idle状态,Start状态机。充电时按开机键开机(有电池)1.函数keypad_scan_keypad()扫描到poweronbutton按下,发出HS_PWR_K事件;2.CoreoldUI截获到HS_PWR_K事件,写NV项reset标志,向TMC发reset命令;3.TMC硬件reset;4.当执行到hs_task初始化hs_init()时,调用函数hs_probe_power_on_event()判断导致开机的事件,会判断为HS_PWR_KEY_PWRON_EVT开机事件,检查到有电池,poweron;5.chg_init(),chg_init_delayed();初始化充电状态机;6.产生Wallcharge或USBcharge中断,执行对应ISRchg_wall_valid_isr()或chg_usb_i_is_available();Start状态机。充电时按开机键开机(无电池)由于VBUSpin直接接到VCHGpin上(和Wallcharge接法相同),当USBchargeNV项是CHG_CMD_ENABLE时,按USBcharge充电;当USBchargeNV项是CHG_CMD_DISABLE时,尽管是USBcharge,但是由于USBchargedisable,按Wall的方式来处理USBcharge;插上charger时按开机键开机(无电池)Wallcharge时,Wall供电启动设备,同时会打开场效应管给电池充电(虽然没有电池);因此会进入charge状态机BADBATTERYTEMPERATUR状态;USBcharge时,若NV项是CHG_CMD_ENABLE,在执行函数chg_init_delayed()时,初始化状态机为CHG_IDLE_ST状态,此时设置供电源为battery,并挂起USBcharge,由于本身没有电池,所以系统掉电关机。USBcharge时,若NV项是CHG_CMD_DISABLE,把USBcharger当做Wallcharger来充电,与上面说的Wallcharge情况相同。Theend!Questions?