基于CPLD的電池管理雙CAN控制器的設計與實現
CAN報文發送函數負責電池管理系統向整車控制器發送報文,發送時需將待發送的數據按CAN協議格式組合成一幀報文,送入SJA1000發送緩沖區中,然后啟動發送命令。CAN發送程序如下:
本文引用地址:http://www.104case.com/article/201808/387801.htmif((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的雙CAN控制器已運用于實際應用中,電池管理系統運行可靠,CAN報文收發平穩,完全適合混合動力汽車的使用。
評論