基于CPLD的电池管理双CAN控制器的设计与实现
CAN报文发送函数负责电池管理系统向整车控制器发送报文,发送时需将待发送的数据按CAN协议格式组合成一帧报文,送入SJA1000发送缓冲区中,然后启动发送命令。CAN发送程序如下:
本文引用地址:https://www.eepw.com.cn/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报文收发平稳,完全适合混合动力汽车的使用。
评论