基于CPLD的電池管理系統(tǒng)雙CAN控制器
發(fā)布時間:2008/5/28 0:00:00 訪問次數(shù):560
電池管理系統(tǒng)是混合動力汽車中重要的電子控制單元,具有保障電池正常、可靠和高效工作的作用,是電池與用電設備之間的橋梁。在研制以及批量生產(chǎn)過程中都需要對其內(nèi)部控制參數(shù)進行離線或在線匹配標定,而電池管理系統(tǒng)需要采集和處理大量的數(shù)據(jù),本文選用tms320lf2407作為標定用can控制器。作為電動汽車上的一個can節(jié)點,需要接收整車發(fā)來的can消息來執(zhí)行對外部繼電器、風扇以及電池等器件的控制命令,本文選用sja1000。
雙can硬件電路和 cpld邏輯設計
雙gan硬件電路設計
tms320lf2407基于增強的哈佛結構,是地址線和數(shù)據(jù)線分離的微處理器,對晶振倍頻后,頻率高達40mhz。而sja1000的地址線和數(shù)據(jù)線復用,增加了d s p與sja1000之間讀寫數(shù)據(jù)的難度,這也是本系統(tǒng)設計的難點。常規(guī)的設計方式是在dsp與sja1000之間加一個電平轉換雙向緩沖驅動,其結構框圖如圖1所示。按這種方式設計的電路,當對sja1000進行讀寫操作時,先配置dsp的i/o端口,將ale拉高,鎖存地址,然后通過dsp的i/o端口將cs和rd(wr)拉低,進行讀(寫)數(shù)據(jù),最后拉高rd(wr)和cs。按此方式每次讀寫sja1000寄存器中的值,均需通過程序對ale、cs和rd(wr)信號進行設置,增加了程序源代碼。如果控制器的閃存空間比較緊張,采取這種硬件連接方式顯然是不可取的。而且,為使狀態(tài)寄存器的狀態(tài)位讀寫正確,can報文讀寫時需在程序中加一定延時,這將影響電池管理系統(tǒng)的實時性。
為了盡量減少程序源代碼,節(jié)省寶貴的存儲資源并提高電池管理系統(tǒng)的實時性,本文采用cpld連接雙can控制器的接口電路,實現(xiàn)can報文收發(fā)。
cpld的邏輯設計
cpld具有速度快、體積小、驅動能力強、可在線編程等優(yōu)點;赾pld的邏輯控制電路適合完成譯碼任務,本文選用epm7064芯片,通過譯碼電路的軟件設計,完成sja1000輸入信號的邏輯選通控制。
cpld的輸入信號是dsp發(fā)送的信號,由高位地址a[15…13]、i/o空間選通引腳is以及寫/讀wr信號組成。其中,地址線a13作為sja1000的地址和數(shù)據(jù)的選擇線,地址線a14和a15經(jīng)譯碼后作為片選信號。地址線a13和i/o空間選通信號產(chǎn)生sja1000的地址鎖存信號sja_ale,地址線a13和讀寫信號wr產(chǎn)生sja1000的數(shù)據(jù)和地址讀寫信號。
雙can軟件程序設計
該can控制器的收發(fā)程序包括兩部分:dsp的can收發(fā)程序和sja1000的can收發(fā)程序。每個can收發(fā)程序主要由三個函數(shù)組成:can初始化程序、can報文接收程序和can報文發(fā)送程序。由于dsp的can收發(fā)程序比較容易設計,只需設置can控制器寄存器中的相應位,就可實現(xiàn)can報文的收發(fā)。所以,本文主要介紹sja1000的can報文收發(fā)程序設計。
sja1000的寄存器映射到dsp的i/o空間。本文選擇0x8000作為sja1000地址輸入端口,0xa000作為sja1000數(shù)據(jù)輸入/輸出端口。其程序主要由sja1000初始化、sja1000接收報文和sja1000發(fā)送報文三個了函數(shù)組成。
sja1000初始化
通過向can控制器sja1000模式寄存器寫0x01,讓其進入復位模式,然后分別對sja1000的時鐘分頻寄存器、錯誤報警限額寄存器、中斷使能寄存器、接收代碼和接收屏蔽寄存器、總線時序寄存器和輸出控制寄存器設置,最后向模式寄存器寫0x08,進入正常工作模式。
初始化程序如下:
正常工作模式
發(fā)送can報文
can報文發(fā)送函數(shù)負責電池管理系統(tǒng)向整車控制器發(fā)送報文,發(fā)送時需將待發(fā)送的數(shù)據(jù)按can協(xié)議格式組合成一幀報文,送入sja1000發(fā)送緩沖區(qū)中,然后啟動發(fā)送命令。can發(fā)送程序如下:
can報文接收函數(shù)主要負責接 收整車控制器發(fā)送的控制指令,來完成對充放電繼電器、風扇以及電池等器件的控制。can接收程序如下:
結語
本文設計的基于cpld的雙can控制器已運用于實際應用中,電池管理系統(tǒng)運行可靠,can報文收發(fā)平穩(wěn),完全適合混合動力汽車的使用。
電池管理系統(tǒng)是混合動力汽車中重要的電子控制單元,具有保障電池正常、可靠和高效工作的作用,是電池與用電設備之間的橋梁。在研制以及批量生產(chǎn)過程中都需要對其內(nèi)部控制參數(shù)進行離線或在線匹配標定,而電池管理系統(tǒng)需要采集和處理大量的數(shù)據(jù),本文選用tms320lf2407作為標定用can控制器。作為電動汽車上的一個can節(jié)點,需要接收整車發(fā)來的can消息來執(zhí)行對外部繼電器、風扇以及電池等器件的控制命令,本文選用sja1000。
雙can硬件電路和 cpld邏輯設計
雙gan硬件電路設計
tms320lf2407基于增強的哈佛結構,是地址線和數(shù)據(jù)線分離的微處理器,對晶振倍頻后,頻率高達40mhz。而sja1000的地址線和數(shù)據(jù)線復用,增加了d s p與sja1000之間讀寫數(shù)據(jù)的難度,這也是本系統(tǒng)設計的難點。常規(guī)的設計方式是在dsp與sja1000之間加一個電平轉換雙向緩沖驅動,其結構框圖如圖1所示。按這種方式設計的電路,當對sja1000進行讀寫操作時,先配置dsp的i/o端口,將ale拉高,鎖存地址,然后通過dsp的i/o端口將cs和rd(wr)拉低,進行讀(寫)數(shù)據(jù),最后拉高rd(wr)和cs。按此方式每次讀寫sja1000寄存器中的值,均需通過程序對ale、cs和rd(wr)信號進行設置,增加了程序源代碼。如果控制器的閃存空間比較緊張,采取這種硬件連接方式顯然是不可取的。而且,為使狀態(tài)寄存器的狀態(tài)位讀寫正確,can報文讀寫時需在程序中加一定延時,這將影響電池管理系統(tǒng)的實時性。
為了盡量減少程序源代碼,節(jié)省寶貴的存儲資源并提高電池管理系統(tǒng)的實時性,本文采用cpld連接雙can控制器的接口電路,實現(xiàn)can報文收發(fā)。
cpld的邏輯設計
cpld具有速度快、體積小、驅動能力強、可在線編程等優(yōu)點;赾pld的邏輯控制電路適合完成譯碼任務,本文選用epm7064芯片,通過譯碼電路的軟件設計,完成sja1000輸入信號的邏輯選通控制。
cpld的輸入信號是dsp發(fā)送的信號,由高位地址a[15…13]、i/o空間選通引腳is以及寫/讀wr信號組成。其中,地址線a13作為sja1000的地址和數(shù)據(jù)的選擇線,地址線a14和a15經(jīng)譯碼后作為片選信號。地址線a13和i/o空間選通信號產(chǎn)生sja1000的地址鎖存信號sja_ale,地址線a13和讀寫信號wr產(chǎn)生sja1000的數(shù)據(jù)和地址讀寫信號。
雙can軟件程序設計
該can控制器的收發(fā)程序包括兩部分:dsp的can收發(fā)程序和sja1000的can收發(fā)程序。每個can收發(fā)程序主要由三個函數(shù)組成:can初始化程序、can報文接收程序和can報文發(fā)送程序。由于dsp的can收發(fā)程序比較容易設計,只需設置can控制器寄存器中的相應位,就可實現(xiàn)can報文的收發(fā)。所以,本文主要介紹sja1000的can報文收發(fā)程序設計。
sja1000的寄存器映射到dsp的i/o空間。本文選擇0x8000作為sja1000地址輸入端口,0xa000作為sja1000數(shù)據(jù)輸入/輸出端口。其程序主要由sja1000初始化、sja1000接收報文和sja1000發(fā)送報文三個了函數(shù)組成。
sja1000初始化
通過向can控制器sja1000模式寄存器寫0x01,讓其進入復位模式,然后分別對sja1000的時鐘分頻寄存器、錯誤報警限額寄存器、中斷使能寄存器、接收代碼和接收屏蔽寄存器、總線時序寄存器和輸出控制寄存器設置,最后向模式寄存器寫0x08,進入正常工作模式。
初始化程序如下:
正常工作模式
發(fā)送can報文
can報文發(fā)送函數(shù)負責電池管理系統(tǒng)向整車控制器發(fā)送報文,發(fā)送時需將待發(fā)送的數(shù)據(jù)按can協(xié)議格式組合成一幀報文,送入sja1000發(fā)送緩沖區(qū)中,然后啟動發(fā)送命令。can發(fā)送程序如下:
can報文接收函數(shù)主要負責接 收整車控制器發(fā)送的控制指令,來完成對充放電繼電器、風扇以及電池等器件的控制。can接收程序如下:
結語
本文設計的基于cpld的雙can控制器已運用于實際應用中,電池管理系統(tǒng)運行可靠,can報文收發(fā)平穩(wěn),完全適合混合動力汽車的使用。
上一篇:C程序設計的常用算法