1. 程式人生 > >mtk 採用Fuel Gauge電量計可能出現的幾種電量現象及解釋

mtk 採用Fuel Gauge電量計可能出現的幾種電量現象及解釋

採用Fuel Gauge電量計可能出現的幾種電量現象及解釋

			[DESCRIPTION]
			 
			首先應該熟悉兩個變數,bat_volt_check_point是UI上面顯示的值。
			gFG_capacity_by_C,庫侖計計算的電量值.也等於SOC的值.
			公式 DOD1 = DOD0 + (-Car/Qmax).
			DOD1對應當前的電量值.
			DOD0對應初始的電量值.
			Car 為t時間內, 流過Rfg電阻電流的電量.
			Qmax為電池的容量.
			下面幾種情況會更新DOD0的值,
			1.開機頭10S.
			2.插拔USB.
			3.電池充滿的狀態
			4.電池容量為15%和0%的情況
			
			正常情況下如果,庫侖計獲取的初始電量DOD0的值比較準確,
			那麼,gFG_capacity_by_c的值會很準,
			實際上,gFG_capacity_by_c跟實際的電量會有點小偏差。不過該值
			會在充電過程中與實際電量同步起來。譬如充電過程中是在100%
			不充電過程中是在15%和0%
			 
			[PLATFORM]
			MT6575 MT6515 MT6577 MT6517  MT6589
			 
			 
			請結合
			alps\mediatek\platform\mt6589(mt6575/mt6577)\kernel\driver\power\
			mt6320_battery.c
			mt6575_battery.c
			mt6577_battery.c
			中mt6575_battery_update或是mt6320_battery_update來理解.
			
			採用Fuel gauge方案。
			1.充電情況
			A.充電到99%,可能需要等上一段比較長的時間才能到100%.
			----->採用FG的計算電量的變數gFG_capacity_by_C先到達100,而實際上,電池還沒有充滿,此時會
			先將UI顯示即Bat_Volt_Check_point定格在99.直到電池滿足充滿條件時,才會讓Bat_Volt_Check_point
			值變成100,並在UI上面顯示100,此時底層的值為gFG_capacity_by_C以及Bat_Volt_check_point為100.
			上層會show滿的圖片,並停止充電。
			電池充滿的條件是,進入top_off mode,並且充電電流小於200mA,這個值具體看軟體的定義。
			
			B.充電從90%(可能是其他值)到100%需要的時間比較長
			----->Battery充電進入硬體的CV階段,此時充電電流減小。對於庫侖計的方式來計算電量,
			DOD1 = DOD0 + Car/Qmax,Car = I*t,每增加一%,如果電流恆定,那麼電量增加的時間是相等,在CC階段,電流比較大,每增加1%的時間,
			所需要的時間比較短,在CV階段,電流減小,每增加1%的時間就會變長。
			當battery 充滿即滿足charging full的條件。此時電量會每10S,Bat_Volt_check_point增加1%,在UI上面顯示也會相應每10S增加1%一直到100%.
			假設FG電量的方式gFG_capacity_by_c為96,電池滿足充滿的條件,此時,
			Bat_volt_check_point(即UI顯示)會每10S增加1,當Bat_volt_check_point為100時,
			此時會呼叫FGADC_SW_RESET_parameter,直接將DOD1變成0,也即是
			gFG_capacity_by_c變成100.
			 
			C.Recharging
			----->電池充滿後,會停止充電,此時系統由電池來供電,當電量低於4.11時,此時
			又會重新充電,但是,UI上面會一直顯示100%,假設這個時候拔掉USB,這個時候
			電量會從100%每1min down 1%去syc FG的電量。
			最差的情況,如果FG的電量變成96%,那麼4min後,UI顯示就變成96.
			 
			
			2.不充電情況
			A.出現在20或者其他值,很快下降到15%,或者是在15%處停留時間比較久。
			---->
			這是因為15%是同步點,當電池真實電量成為15%,FG計算電量方式會同步到15%.
			 
			B.出現在8%或者其他值,然後很快掉到1%.
			---->
			當實際的電量達到0%,也即電池電壓的值小於3.4V,此時,UI上面會每10S,下降1直到
			0%,而FG的電量也會每10S,update一次,直到0.
			 
			C.1%停留的時間比較久.
			---->
			當FG的計算方式先達到0%,那麼UI上面會保持為1%,直到真實的電池容量變為0,也即是
			電池電壓小於3.4V
			 
			以上的情況都是軟體的正常處理流程.初始的電量DOD0獲取正確, 電量就會準確.
			而當有點小偏差,那麼就會出現上述的一些情況.