
charge驱动调试总结.doc
4页HiFlyway Wireless Technologies Ltd.charge 驱动调试总结驱动调试总结2010-09-30一、原理.........................................................................................................1 二、实现.........................................................................................................3 三、charge 驱动调试时遇到的问题.............................................................4 四、总结.........................................................................................................4一、一、原理原理1,电路原理图 QSC6010 的 Charge 电路原理框图如图(1)所示。
重点分析以下几个重要的芯片 外部电子元件: (1)与 VCHG 连接的旁路电容(1.0uF)和并联电阻(10K)该电容和电阻在充电电压和地之间组成一个 RC 并联电路当 VCHG 接上 charge 电压时,电容有很好滤波、增强电路稳定性和电磁兼容性的作用,连接在 VCHG 和地之间的电阻使得检测是否有 charge 电压的速度更快 (2)流通三极管 (PNP 型) 发射极(E):接充电器 基极(B):接 CHG_CTL_N 集电极(C):接 ISNS_P 该三极管基极(CHG_CTL_N)的电压可控制集电极(ISNS_P)的电压,可以调节 charge 供电方式;也起到限流的作用 (3)电流感应电阻 该电阻一般为 0.1Ω ,精度 1%,阻值的选择与限流大小和电阻功耗有关检测流 过电阻的感应电流大小由 AA15、AA16 电压差决定当场效应管导通时,检测的 电流为给芯片的供电电流和给电池的 charge 电流之和;当场效应管截止时,检测 的电流为供给芯片的电流4)P 沟道增强型场效应管HiFlyway Wireless Technologies Ltd.源极(S):接 Vdd 栅极(G):接 BAT_FET_N 漏极(D):接电池 场效应管的控制端 G 极接在 BAT_FET_N 上,当 G 极电压为高电平时,场效应管截 止,不能通过外部 charge 电路(充电器或 USB)给电池充电;当 G 极电压为低电 平时,场效应管导通,外部电路给电池充电。
图(1) ,charge 电路示意图HiFlyway Wireless Technologies Ltd.2,充电模式 (1)Trickle Charge (滴流充电) 电压范围:2.8V ~ 3.2V Trickle charge 时,场效应管截止,充电电流从 VBAT pin 流入电池; Trickle charge 时,充电电流 0 ~ 80mA; Pm_chg_trickle_config() 设置电流值 (2) Fast Charge (恒流充电) 电压范围:3.1V ~ 4.1V 三极管和场效应管都导通,charge 提供设备供电和电池充电; 设置最大电流值(1.8A):pm_chg_wall_charger_transistor_imaxsel(IMAXSEL) (3)Constant voltage charge (恒压充电) 电压范围:4.0V ~ 4.3V; 三极管和场效应管都导通,charge 提供设备供电和电池充电; 与 Fast charge 相似,不同之处采样电压值进行反馈; USB charge 专用 (4)Pulse Charge (脉冲充电) 电压范围:4.0V ~ 4.3V 三极管导通向 Vdd 供电,场效应管周期性导通形成脉冲电流; T_ON: 125ms T_OFF: 500msWall charge 专用二、实现二、实现3,充电流程 (仅介绍 USB charger 流程) (1)Charge 初始化 在文件 mobile.c 中 int main() 函数调用 rex_init ( (void *)irq_stack, /* Interrupt stack */IRQ_Stack_Size, /* Interrupt stack size *//* Parameter to pass the TMC task */启动文件 tmc.c 中 tmc_task(), tmc_init()初始化,,并调用 tmc_libraries_init_after_service_tasks_start(),chg_init()和 init_delayed()。
2)启动状态机 初始化充电状态机进入 idle(CHG_IDLE_ST)状态;Enable 充电中断用 USB 连接线将HiFlyway Wireless Technologies Ltd.和计算机连接后,文件 chgpm.c 中的函数 static void chg_usb_i_is_available()调用 chg_charger_isr(CHG_CHARGER_IRQ__USB_VALID);将 USB 连接通知状态机函数 chg_is_charger_valid(void)和和 chg_is_batt_id_valid(void)都返回 TRUE 表示 USB charge 和电池 ID(温度)有效,开始充电1)状态之间的转换在文件 chargeri.h 中声明了 enum 类型 chg_state_type,其中每个变量分别表示 charge 的每个状态当未被充电时,charge 状态机状态为 0(CHG_IDLE_ST) 当接上 USB 进 行充电时,由状态 0 转化为状态 17(CHG_USB_IDLE_ST) ,该状态为 USB charge 的入口点 然后,根据函数 chg_get_parameter_level()的返回值,判断进入某种充电模式。
对于一 块耗尽电能的电池,充电模式转化的一般顺序为: 状态 CHG_USB_TRICKLE_ST(状态 18,Trickle Charge)状态 CHG_USB_FAST_ST(状态 20,Fast Charge)状态 CHG_USB_TOPOFF_ST(状态 21,电池电量在满电 90%以上)CHG_USB_DONE_ST(状态 22,电池充满电) 三、三、charge 驱动调试时遇到的问题驱动调试时遇到的问题在接上电池开始充电时,屏幕总是显示“电池温度过高,禁止充电” ,原因是电池 型号与软件设置中的并不符合,电池中间引脚的采样电压值超出了范围修改文件 charge.c 中函数 BATT_TEMP_type chg_is_battery_too_hot_or_too_cold(),让其返回值为 BATT_TEMP_NORMAL,并修改 boolean chg_is_batt_id_valid()中 batt_id 的值,先屏蔽这 个问题四、总结四、总结Charge 驱动功能的实现流程是不同状态之间的切换,软件设计中数组 chg_state_cfg[] 包含了每个状态的处理函数。
Entry function(); 当调 chg_force_state()进新状态时调用; Periodic function(); 被 chg_poll_cb() timer 周期调用; Exit function(); 当调 chg_force_state()出当前状态时调用 根据当前电池及其它参数切换状态机状态;这种设计思路值得学习。












