SJA1000
SJA1000
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
CAN
报文
CAN 报文发送函数负责电池管理系统向整车控制器发送报文,发送时需将待发送的数据按
CAN 协议格式组合成一帧报文, 送入 SJA1000 发送缓冲区中,然后启动发送命令。 CAN 发 送
程序如下:
if((TempData & 0x10) != 0x10) //CAN 控制器空闲
{
if((TempData & 0x08) != 0x0) // 最近一次发送已成功
{
if((TempData & 0x04) == 0x04)
//CPU 可以向发送缓冲器写报文
{
…… // 配置发送报文
SJA1000_WRITE(REG_ COMMAND,0x01);// 发送报文指令
}
评论3