SJA1000的错误处理好似还是比较复杂的的啦,下面是我自己的一些理解,有不对之处还请各位大虾多多指点啊!
SJA1000的错误有:
仲裁丢失;
数据溢出;
总线错误;
错误状态有:
错误主动(Error Active)
错误被动 (Error Passive)
总线关闭;
错误中断:
总线错误中断;
仲裁丢失中断;
错误消极中断;
数据溢出中断;
错误报警中断;
涉及到的寄存器:
状态寄存器(SR);
中断寄存器(IR);
中断使能寄存器(EIR);
仲裁丢失捕捉寄存器(ALC);
错误代码捕捉寄存器(ECC);
错误报警限制寄存器(EWLR);
TX错误计数寄存器(TXERR);
RX错误计数寄存器(RXERR);
处理中断当然是从中断寄存器说起了;
中断寄存器:只说和错误有关的位啦;
IR.7:BEI
总线错误中断;
当CAN控制器检测到总线错误且中断使能寄存器(EIR)中的BEIE被置位时此位被置位
当前的错误代码可以通过错误代码捕捉寄存器(ECC)获得;其中可以分为:
位错误;
格式错误;