劉寶巖 李軍偉 許金鵬 汪志瑩 李連強



摘要:為解決電動汽車驅動電機控制器主控芯片TMS320F28377S應用程序升級維護操作困難的問題,設計開發一種基于控制器局域網絡(controller area network,CAN)通信技術的固件升級系統。通過配置CAN模塊及Flash模塊,解析HEX文件,結合漢明碼校驗算法,實現對引導程序及應用程序的設計;選用PyQt應用架構設計上位機操作界面,制定通信協議,實現對上位機軟件的設計;在新能源汽車電機測試臺架上,將開發的固件升級系統應用到電機控制器,進行電機電流加載閉環控制試驗驗證。試驗結果表明:基于CAN通信的TMS320F28377S芯片固件升級系統能完成上位機和電機控制器的數據傳輸,系統快捷方便、穩定性高,可廣泛應用于電機控制器應用程序的升級。
關鍵詞:電機控制器;TMS320F28377S芯片;固件升級;CAN通信
中圖分類號:U463.67文獻標志碼:A文章編號:1673-6397(2023)04-0101-06
引用格式:劉寶巖,李軍偉,許金鵬,等.基于CAN通信的電動汽車驅動電機控制器主芯片固件升級系統設計[J].內燃機與動力裝置,2023,40(4):101-106.
LIU Baoyan, LI Junwei, XU Jinpeng,et al.Design of the firmware upgrade system for the main chip of the electric vehicle motor controller based on CAN communication[J].Internal Combustion Engine & Powerplant, 2023,40(4):101-106.
0 引言
電機控制器是電動汽車電控系統的重要組成部件[1-2],電機控制器通過控制器局域網絡(controller area network,CAN)技術實現與整車之間的通信[3]。CAN通信具有可靠性高、實時性和靈活性強等優點[4]。主控芯片為TMS320F28377S的電機控制器傳統的程序更新方式是利用聯合測試工作組(joint test action group,JTAG)調試接口,連接仿真器進行程序下載更新[5]。但是電機控制器外部JTAG調試接口較少,應用程序維護更新時,需拆開電機控制器外殼才能進行,費時費力,且影響控制器防塵防水效果,增加使用風險[6]。
本文中設計開發了一套
基于電動汽車驅動電機控制器TMS320F28377S主芯片(以下簡稱為“主芯片”)的固件升級系統,通過CAN通信將應用程序的HEX文件燒寫到主芯片,結合漢明碼的校驗和糾錯功能實現上位機與電機控制器的數據傳輸,實現電機控制器程序更新。相比傳統更新方式,該固件升級系統可簡化上位機開發過程,降低上位機語言開發難度,方便迅速,提高升級效率,可廣泛應用于電機控制器程序更新[7-9]。
1 總體方案
基于CAN通信的固件升級系統以上位機軟件為人機接口,CAN卡為通信媒介,通過引導程序實現應用程序更新。固件升級系統總體方案如圖1所示,分為軟硬件調試階段及升級應用程序階段。在軟硬件調試階段,通過JTAG仿真器,利用代碼調試器(code composer studio,CCS)向控制器主芯片存放引導程序的Flash扇區燒寫引導程序;在升級應用程序階段,由于主芯片的編譯環境支持HEX文件生成,基于CAN通信,使用上位機軟件將待燒寫應用程序的HEX文件發送給主芯片的引導程序,引導程序接收解析HEX文件,并將解析后的數據寫入存放應用程序的Flash扇區后,主芯片運行新的應用程序,實現控制器程序升級。
2 系統設計
基于CAN通信的固件升級系統設計包括3個部分:引導程序、應用程序和上位機。
2.1 引導程序
2.1.1 劃分Flash存儲空間
主芯片的Flash存儲空間為512 Kibyte,劃分為FlashA~FlashAB共28個扇區,存儲地址為0x080000~0x0FFFFF。
為了實現固件升級,將TMS32F28377S芯片的Flash空間分成2部分:一部分地址為0x080000~0x083FFF,占用FlashA和FlashB 2個扇區,用于存放引導程序;另一部分地址為0x084000~0x0FFFF,占用扇區FlashC~FlashAB,用于存放應用程序。存放不同類型的程序時,需將芯片定義好的段(如存放所有可執行代碼和常數的段.text、存放初始化的全局變量和靜態變量的段.cinit、存放全局構造器列表的段.pinit等)映射到對應扇區,以便程序調用。
2.1.2 配置CAN模塊
主芯片有2路CAN通信(CANA、CANB),每路CAN通信有32個郵箱,通過配置CANA模塊實現控制器與上位機的通信。CANA模塊的波特率為250 Kibit/s,傳輸數據的幀格式為標準幀,定義1、2、3號郵箱標識符(identification,ID)分別為0x123、0x124、0x125,使1號郵箱向上位機發送ID為0x123的報文,2號郵箱接收上位機下發ID為0x124的報文,3號郵箱接收上位機下發ID為0x125的報文,此時CAN通信中斷,處理接收到的報文。
為確保CAN通信傳輸HEX文件的準確性,選用漢明碼進行數據校驗與單比特數據糾錯,漢明碼能準確校驗傳輸數據,并可糾正單比特錯誤數據。
上位機每發送1行HEX文件前生成1次漢明碼,假設上位機(發送節點)原始數據為m位的二進制碼序列,需添加k位校驗位,由2k≥m+k+1計算得出k后,將原始數據分成k組,每組數據按配偶原則做異或運算得出一個校驗位(共k個校驗位),將校驗位依次附在原始數據后面,即m+k位數據從左到右依次編號為1,2,3,…,m+k,并進行傳輸;控制器(接收節點)以行為單位接收解析文件,并按同樣的方法分組、計算校驗,判斷解碼結果,如果發現某幾個校驗位不對,則根據分組的特性找出對應數據組,確定錯誤數據的地址后,取反糾正相應的錯誤[10]。
2.1.3 配置Flash模塊
主芯片Flash驅動包括擦除和寫入Flash程序,先擦除Flash對應扇區后,再執行寫入Flash程序命令,擦除或寫入Flash時需將相關程序復制到隨機存取寄存器(random access memory,RAM)中,并分別調用Flash API函數庫的擦除函數Fapi_issue Async Comm and With Address、寫入函數Fapi_issue Programming Comm and Flash以及部分校驗函數完成相應操作[11-12]。
擦除命令、寫入命令執行流程如圖2所示。由圖2a)可知:根據擦除程序的類型(引導程序或應用程序)擦除相應扇區,設置PUMPREQUEST寄存器,完成Flash控制權分配;調用Flash API初始化函數,以芯片頻率完成Flash API中的操作;初始化后,調用Flash庫激活函數,調用Flash擦除函數擦除相關扇區;待Flash空閑時,檢驗扇區是否被擦除;檢驗通過則退出擦除命令執行流程,檢驗不通過則報錯退出。由圖2b)可知:擦除命令執行流程與寫入命令執行流程大致相同,但寫入命令調用Flash寫入函數應將數據寫入相應的地址,且等待Flash空閑時檢驗寫入的數據是否正確,其余流程與擦除命令執行流程相同。
2.1.4 解析HEX文件
HEX文件以十六進制表示ASCII信息,以行為單位,每行以“:”開頭,可以直接燒錄到主芯片中。HEX文件每行包含5個域:數據長度域、數據地址域、數據記錄類型域、數據域及校驗和域[13-14]。數據長度域占用1個字節,表示該行包含數據的字節數;數據地址域占用2個字節,表示該行首個數據的偏移地址;數據記錄類型域占用1個字節,有00、01、02、03、04、05等6種記錄類型,其中00為記錄數據,01為文件結束,02為記錄擴展段地址,03為記錄開始段地址,04為記錄擴展段線性地址,05為記錄開始線性地址[15-16]。由于05類型不用于嵌入式程序,本系統無需解析05類型;數據域占用n個字節(1≤n≤32),表示具體數據;校驗和域占用1個字節,用于校驗數據。
HEX文件解析與校驗流程如圖3所示。如圖3可知:解析HEX文件時先判斷數據的首字符是否為“:”,若是,則繼續解析后面的數據;若不是,則報錯;依次解析數據長度、數據偏移地址、數據記錄類型,判斷數據記錄類型,若為00,則繼續解析數據;若為01,則結束指令;若為02或04,則解析HEX文件基礎地址;若為03,則解析開始段地址。00解析數據完成后進行數據校驗,若數據校驗通過,則寫入主芯片相應的Flash地址中;校驗不通過,則報錯,并結束流程。
2.1.5 運行流程
1)主芯片上電后,執行RESET指令,該指令對應的Flash地址是0x3FFFC0,執行啟動系統程序,完成底層寄存器及堆棧等的環境配置。
2)執行引導加載程序的main函數,對必要模塊(如時鐘模塊、CAN模塊、Flash模塊等)初始化,在主循環里設置等待時間為5 s,如果5 s內收到來自上位機的升級指令,則進入用戶升級程序;如果未收到來自上位機的升級指令,則跳出升級程序,執行原應用程序。
3)控制器收到來自上位機的升級指令執行用戶升級程序后,擦除舊的應用程序,等待上位機發送新應用程序的HEX文件。
4)上位機以行為單位發送HEX文件數據,控制器接收數據并保存到自定義的數組中,同時向上位機應答。
5)控制器接收完1行數據后,對自定義數組中整行的數據,按照HEX的格式,解析出該行的數據長度、數據地址、數據內容及校驗碼,并寫入到對應的Flash地址。
6)重復上一步,直至整個HEX文件數據寫入對應的Flash地址中。
7)跳轉至新用戶程序的開始地址執行程序。
2.2 應用程序存儲
由于FlashA和FlashB已劃分給引導程序,應用程序只能占用扇區FlashC~FlashAB,文中應用程序主要占用扇區FlashC~FlashJ。
2.3 上位機軟件
通過調用CAN卡,上位機實現與控制器之間的信息交互,結合漢明碼校驗和糾錯功能實現上位機與電機控制器的數據傳輸。上位機主要包括操作界面設計、通信協議制定。
2.3.1 操作界面設計
PyQt是Python和Qt的結合,能夠高效地編寫各類圖形用戶界面應用程序[17],利用PyQt的設計工具Qt Designer搭建圖形化操作界面,操作界面主要包含CAN卡配置操作、升級過程操作和窗口顯示。CAN卡配置操作可實現波特率的選擇功能,CAN卡打開、關閉及復位功能;升級過程操作包括準備升級操作、加載文件操作和開始升級操作;窗口顯示分為2部分,一個用于顯示運行狀態,另一個用于顯示HEX文件傳輸數據流。
2.3.2 通信協議制定
為了實現上位機與控制器之間的CAN通信,通過不同ID和不同報文數據交互不同的程序指令實現自定義通信協議,直到HEX文件傳輸結束。HEX數據幀與命令幀的的數據長度不同,命令幀數據長度固定為1,具體通信協議如表1所示。
3 試驗驗證
在新能源汽車電機測試臺架上,基于CAN通信的固件升級系統,進行電機電流加載閉環控制試驗,試驗流程示意如圖4所示。試驗過程如下。
1)基于CCS集成開發環境,配置生成電機電流閉環控制的HEX文件,作為升級文件。
2)將引導程序燒寫到控制器主板后,打開上位機,使用CAN卡連接控制器主板和上位機。
3)配置上位機CAN卡波特率為250 Kibit/s,打開CAN卡進行通信;點擊“準備升級”按鍵,上位機與控制器主板實現通信握手。
4)上位機操作界面顯示“請加載程序”后,點擊“加載文件”按鍵,選擇要升級的HEX文件,點擊“開始更新”按鍵,程序開始更新;HEX文件以行為單位傳輸,每傳輸完一行數據,運行狀態顯示框顯示“寫入一行Flash”,數據流顯示框顯示實時傳輸數據。
5)當整個HEX文件順利傳送完成后,上位機操作界面顯示“更新完成”,應用程序升級完成。
6)將升級后的電機控制器安裝到新能源汽車電機測試臺架上,檢查直流側高壓線、三相高壓線、旋變信號線、散熱水路等是否正確連接,進行電機電流閉環控制試驗,驗證電機控制器的工作狀態。
通過臺架配套測試軟件中的電流閉環控制指令,驗證電機正常工作,升級程序各項功能正常。
4 結論
1)基于CAN通信的TMS320F28377S固件升級系統,可實現電機控制器應用程序升級,提高了后期軟件維護工作的便利性。
2)固件升級系統完成對引導程序、應用程序及上位機軟件的設計,其中,引導程序設計包括CAN模塊、Flash模塊的配置及HEX文件解析,并采用漢明碼進行數據校驗與單比特數據糾錯,確保CAN通信傳輸HEX文件的準確性。
3)自定義通信協議通過不同ID和不同報文數據實現上位機與控制器之間的CAN通信,電機電流加載閉環控制試驗可實現對固件升級系統的有效驗證。
參考文獻:
[1]張棟,范濤,溫旭輝,等.電動汽車用高功率密度碳化硅電機控制器研究[J].中國電機工程學報,2019,39(19):5624-5634.
[2]梁文遠,易晨.FPGA在電動汽車電機控制器中的應用[J].機電工程技術,2020,49(11):231-232.
[3]李亞運,孫耀杰.基于IS015765的電動汽車診斷系統設計[J].計算機測量與控制,2017,25(1):24-26.
[4]趙大偉.電機控制器與上位機通信協議轉換工具設計[D].長春:吉林大學,2018.
[5]劉浩,李榮冰,劉建業,等.基于串口通信的DSP在線燒寫技術研究[J].電子測量技術,2017,40(7):184-187.
[6]文豐,溫倩,武慧軍.基于IAP的嵌入式系統在線編程設計[J].單片機與嵌入式系統應用,2022,22(12):37-41.
[7]倪慶生,倪云龍,潘曉陽,等.基于CAN總線的TMS320F28335遠程在線升級方法設計[J].電子與封裝,2021,21(11):34-38.
[8]楊斌,呂偉,馬慧斌,等.基于RS485的多DSP系統在線升級程序方法研究[J].電子設計工程,2019,27(13):118-123.
[9]陳彤,黃立梅.一種用于汽車電控單元CAN Bootloader的設計與實現[J].汽車實用技術,2016(9):156-160.
[10]王全福.漢明碼校驗位取值的教學分析[J].現代計算機,2020(13):77-78.
[11]么居標,宋建桐,呂江毅,等.基于CAN總線的電機控制器Bootloader開發[J].測控技術,2018,37(10):124-126.
[12]許金鵬,李軍偉,李連強,等.基于S32K144的電控制動系統固件升級系統開發[J].內燃機與動力裝置,2022,39(6):55-59.
[13]劉浩,李榮冰,劉建業,等.基于串口通信的DSP在線燒寫技術研究[J].電子測量技術,2017,40(7):184-187.
[14]汪志瑩,李軍偉,李興坤,等.基于UDP的混動商用車巡航控制器OTA系統開發[J].內燃機與動力裝置,2023,40(2):42-49.
[15]張海濤.CAN總線在新能源汽車電機控制器程序升級中的應用[J].上海汽車,2014(6):38-42.
[16]高世皓.利用HEX文件實現TMS320F28335的程序升級方法[J].單片機與嵌入式系統應用,2017,17(7):13-18.
[17]陶文玲,侯冬青.PyQt5與Qt設計師在GUI開發中的應用[J].湖南郵電職業技術學院學報,2020,19(1):19-21.
Design of the firmware upgrade system for the main chip of
the electric vehicle motor controller based on
CAN communication
LIU Baoyan1, LI Junwei1*, XU Jinpeng1, WANG Zhiying1, LI Lianqiang2
Abstract:In order to solve the problem of the application program upgrade and maintenance of the main motor controller chip TMS320F28377S of the electric vehicle driver, a firmware upgrade system based on controller area network CAN communication technology is developed. Through configuring CAN module and Flash module, parsing HEX file and combining Hamming code checking algorithm, the design of boot program and application program is realized, the firmware upgrade system is applied to the new energy vehicle motor test bench, and the motor controller current loading closed-loop control experiment is carried out. The test results show that the TMS320F28377S firmware upgrade system based on CAN communication can complete the data transmission between PC and motor controller, and the system is fast, convenient and stable, widely used for motor controller application upgrades.
Keywords:motor controllor;TMS320F28377S chip;firmware upgrade;CAN communication
(責任編輯:臧發業)
收稿日期:2023-03-05
基金項目:青島市關鍵技術攻關及產業化示范類項目(22-3-2-qljh-7-gx)
第一作者簡介:劉寶巖(1995—),男,山東滕州人,碩士研究生,主要研究方向為電動汽車控制技術,E-mail: 792225723@qq.com。
通信作者簡介:李軍偉(1964—),男,河南平頂山人,工學博士,教授,主要研究方向為電動汽車關鍵控制技術,E-mail:ljwhitt@163.com。