BQ40Z50韌體怎麼升級?告訴你BQ系列晶片內部結構和升級方法
一 BQ晶片初步認識
包括BQ40Z50在內,BQ系列電池管理晶片看起來是一個晶片,其實晶片裡面封裝了兩個die。一個是MCU部分負責計算和控制,其採用的是bqBMP內核的16位處理器;另外一個die是模擬前端AFE,負責模擬訊號處理部分,主要功能是處理電壓電流溫度訊號,包括放大,MUX,MOS驅動和一些硬體保護邏輯。兩個晶片的綁定類似下圖結構:
二 BQ晶片內部結構
MCU和AFE間主要介面有:電流取樣庫侖計CC,電壓溫度取樣ADC,GPIO和專用串口通訊。類似我們用分立器件MSP430+BQ76925的架構。
主要結構見下圖所示:
MCU和AFE封裝在一起是不得已而為之,也具有明顯的優勢:
• MCU主要負責計算和控制邏輯,是低壓部分,而AFE主要負責高壓部分處理,兩個晶片製程不同,在一個die上實現比較困難;
• 封裝在一起,對外呈現的是一個晶片,使用方便,真正做到低耦合高內聚;
• 封裝後韌體也是由TI提供,穩定性比較好保證;
• 封裝也利於電量計演算法的實現,提高晶片價值。舉例,BQ40Z50比BQ4050就貴不少。
對於BQ40Z50晶片,晶片架構細節如圖所示:
TI專用內核bqBMP處理器是哈弗結構,數據匯流排和程式匯流排獨立,其基本特徵有:
- CPU是16位的
- 運行速度4.2MHz
- 三級流水線
- 指令長度靈活,可以支援8位、16位、24位指令
三 BQ40Z50內部存儲器結構
內部存儲器包括Flash,Boot ROM Flash, RAM,Data Flash和EEPROM。其中Flash一共有64K大小,RAM 2.5K, Data Flash 8K, EEPROM 0.5K.
Boot ROM是晶片的Bootloader,承擔啟動載入和韌體升級作用,晶片固化好,不可修改和升級。
我們通過BQ Studio讀出來的SREC文件,包括Data Flash, Program Flash和EEPROM的數據,也是除了Bootloader外的所有數據。
注意:
- TI的電池管理晶片內的CPU core有兩代,BQ30Z55 BQ3055 BQ34Z100 BQ27541 BQ27542 BQ78350是比較老的一代,已經逐步淘汰;
- BQ40Z50同平台的有BQ40Z80,BQ78Z100,BQ27Z561等,推薦使用這一個系列。
四 韌體升級方案
通過以上對CPU架構和存儲結構的了解,我們對實現電量計晶片升級有個思路了。它跟普通MCU升級有相似的地方,只是要對晶片充分了解,可以做到不用bqStudio也能升級韌體。
實際工作中,我們可能遇到以下問題:
1 已經校準的電池需要返工,通過bqStudio升級韌體會擦除掉校準值和電量計學習的數據
解決方法:我們就可以不用bqStudio,專門編個PC軟體,控制EV2400/EV2300,跳過升級data flash部分,只升級Program flash;
2 發現韌體Bug,但由於韌體已經發布,或者電池是串口的等原因,不能用電腦軟體升級。
解決方法:主控來實現升級策略,可以升級電池的韌體和配置參數,這個方法我們在無人機上已經實現。
3 已經發給客戶的電池需要升級,並且數量很大,用PC軟體效率太低。
解決方法:針對這種情況,也可以專門做個小板,內部存儲電量計韌體,連上電池就自動升級。
這個可以50個100個同時工作,也很快能完成電池升級的問題。
事實上,我們也的確遇見這個問題,就做了個帶SD卡的小板,將韌體放到SD卡裡面,一連接電池就會執行自動升級。
以上都是作者多年與BQ電量計打交道,通過研究或與原廠共同開發得到的經驗,希望能對做電池的你有所幫助。
部落格內都是原創文章,轉載請註明出處。