巧用CPLD雙控製器設計電池管理係統
發布時間:2013-12-21 責任編輯:mikeliu
【導讀】 電dian池chi管guan理li係xi統tong作zuo為wei混hun合he動dong力li汽qi車che中zhong重zhong要yao的de電dian子zi控kong製zhi單dan元yuan,不bu但dan要yao保bao障zhang電dian池chi正zheng常chang工gong作zuo,而er且qie還hai必bi須xu盡jin可ke能neng的de高gao效xiao與yu可ke靠kao,是shi電dian池chi與yu電dian子zi設she備bei之zhi間jian的de紐niu帶dai。利li用yongCPLD來進行其係統設計,功效卓絕,讓人眼前為之一亮!
雙CAN硬件電路和CPLD邏輯設計
雙CAN硬件電路設計
MS320LF2407基於增強的哈佛結構,是地址線和數據線分離的微處理器,對晶振倍頻後,頻率高達40MHz。而SJA1000的地址線和數據線複用,增加了DSP與SJA1000之間讀寫數據的難度,這也是本係統設計的難點。常規的設計方式是在DSP與SJA1000之間加一個電平轉換雙向緩衝驅 動,其結構框圖如圖1所示。按這種方式設計的電路,當對SJA1000進行讀寫操作時,先配置DSP的I/O端口,將ALE拉高,鎖存地址,然後通過 DSP的I/O端口將和()拉低,進行讀(寫)數據,最後拉高()和。按此方式每次讀寫SJA1000寄存器中的值,均需通過程序對ALE、和() 信號進行設置, 增zeng加jia了le程cheng序xu源yuan代dai碼ma。如ru果guo控kong製zhi器qi的de閃shan存cun空kong間jian比bi較jiao緊jin張zhang,采cai取qu這zhe種zhong硬ying件jian連lian接jie方fang式shi顯xian然ran是shi不bu可ke取qu的de。而er且qie,為wei使shi狀zhuang態tai寄ji存cun器qi的de狀zhuang態tai位wei讀du寫xie正zheng確que,CAN報文讀寫時需在程 序中加一定延時,這將影響電池管理係統的實時性。

圖1 一般雙CAN控製器的硬件結構圖
為了盡量減少程序源代碼,節省寶貴的存儲資源並提高電池管理係統的實時性,本文采用CPLD連接雙CAN控製器的接口電路,實現CAN報文收發。其硬件結構如圖2所示。 
圖2 基於CPLD的雙CAN控製器硬件結構圖
CPLD的邏輯設計
CPLD具有速度快、體積小、驅動能力強、可在線編程等優點。基於CPLD的邏輯控製電路適合完成譯碼任務,本文選用EPM7064芯片,通過譯碼電路的軟件設計,完成SJA1000輸入信號的邏輯選通控製。
CPLD的輸入信號是DSP發送的信號,由高位地址A[15…13]、I/O空間選通引腳以及寫/讀信號組成。其中,地址線A13作為 SJA1000的地址和數據的選擇線,地址線A14和A15經譯碼後作為片選信號。地址線A13和I/O空間選通信號產生SJA1000的地址鎖存信號 SJA_ALE,地址線A13和讀寫信號產生SJA1000的數據和地址讀寫信號。
雙CAN軟件程序設計
該CAN控製器的收發程序包括兩部分:DSP的CAN收發程序和SJA1000的CAN收發程序。每個CAN收發程序主要由三個函數組成: CAN初始化程序、CAN報文接收程序和CAN報文發送程序。由於DSP的CAN收發程序比較容易設計,隻需設置CAN控製器寄存器中的相應位,就可實現 CAN報文的收發。所以,本文主要介紹SJA1000的CAN報文收發程序設計。
從表1中可以看到,SJA1000的寄存器映射到DSP的I/O空間。本文選擇0x8000作為SJA1000地址輸入端口,0xA000作為 SJA1000數據輸入/輸出端口。其程序主要由SJA1000初始化、SJA1000接收報文和SJA1000發送報文三個子函數組成。其收發函數的流程如圖3所示。

圖3 SJA1000發送報文程序流程圖
SJA1000初始化
通過向CAN控製器SJA1000模式寄存器寫0x01,讓其進入複位模式,然後分別對SJA1000的時鍾分頻寄存器、錯誤報警限額寄存器、中斷使能寄 存器、接收代碼和接收屏蔽寄存器、總線時序寄存器和輸出控製寄存器設置,最後向模式寄存器寫0x08,進入正常工作模式。初始化程序如下:
#define SJA1000_Data_Port portA000
ioport unsigned int portA000; //定義數據輸入/輸出端口
#define SJA1000_Address_Port port8000
ioport unsigned int port8000; //定義地址輸入端口
……
SJA1000_WRITE(REG_MODE, 0x01);
TempData= SJA1000_READ(REG_MODE);
//向模式寄存器寫0x01,進入複位模式
while((TempData & 0x01) != 0x01); //等待SJA1000複位
……
do
{
SJA1000_WRITE(REG_MODE, 0x08);
TempData= SJA1000_READ(REG_MODE);
}while ((TempData & 0x01)!=0x00); //等待SJA1000進入正常工作模式
發送CAN報文
CAN報文發送函數負責電池管理係統向整車控製器發送報文,發送時需將待發送的數據按CAN協議格式組合成一幀報文,送入SJA1000發送緩衝區中,然後啟動發送命令。CAN發送程序如下:
if((TempData & 0x10) != 0x10) //CAN控製器空閑
{
if((TempData & 0x08) != 0x0) //最近一次發送已成功
{
if((TempData & 0x04) == 0x04)
//CPU可以向發送緩衝器寫報文
{
…… //配置發送報文
SJA1000_WRITE(REG_ COMMAND,0x01);//發送報文指令
}
}
}
接收CAN報文
CAN報文接收函數主要負責接收整車控製器發送的控製指令,來完成對充放電繼電器、風扇以及電池等器件的控製。CAN接收程序如下:
if(TempData != 0)
{
if((TempData & 0x80) == 0x80) //總線關閉
{
…… //總線關閉處理
}
if((TempData & 0x02) == 0x02) //數據溢出
{
…… //數據溢出處理
}
if((TempData & 0x01) == 0x01) //RXFIFO存在完整有效的報文
{
…… //讀取緩衝區報文
}
}
小編總結:利用CPLD設計的管理係統,不但十分有效,而且設計簡單,編程輕鬆,不失為一個理想的選擇!
相關閱讀:
AMS為鋰電池電量監測和均衡帶來更簡單耐用的新架構
用於為汽車電池測量係統的傳感器接口
飛思卡爾動力電池組的主動均衡技術和方案實現
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 從技術研發到規模量產:恩智浦第三代成像雷達平台,賦能下一代自動駕駛!
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
按鈕開關
白色家電
保護器件
保險絲管
北鬥定位
北高智
貝能科技
背板連接器
背光器件
編碼器型號
便攜產品
便攜醫療
變容二極管
變壓器
檳城電子
並網
撥動開關
玻璃釉電容
剝線機
薄膜電容
薄膜電阻
薄膜開關
捕魚器
步進電機
測力傳感器
測試測量
測試設備
拆解
場效應管
超霸科技



