即接收错误寄存器(CANREC)和发送错误寄存器(CANTEC)。1
错误计数器μC/TCP-IP在运行过程中维护着一组计数器,用于追踪网络协议栈的各种错误态。如果需要的话,应用程序可以通过检查错误计数器来调试运行当中的问题,包括内存剩余空间较低、性能差或数据包丢失等等。
网络协议的错误计数器被放在一个命名为Net_ ErrCtrs的结构体变量中,可以利用调试器或应用程序(以外部变量的形式引用)在运行时检测该变量。
要使能这些错误统计,必须将net_cfg.h中的 NET_CTR_CFG_ERR_EN配置为DEF_ENABLED。2
相关概念错误状态检测到的错误公布到错误帧经过的其他节点,发送失败的错误信息会尽可能快地重复发送帧,而且根据内部错误计数器的值,每个CAN节点都可有3个错误状态(主动错误、被动错误和总线断开)之一。主动错误状态是一种通常状态,能够不受任何限制地发送信息和主动错误(由显性位组成)。在被动错误状态,可以发送信息和被动错误帧(由隐性位组成)。总线断开会使这个节点暂时不能参与总线通信,当处于这个状态时,既不能接收也不能发送信息。3
CAN中断CAN模块有几个中断源。每个中断源都能独立地使能或关闭。CANINTF寄存器内有中断标志位,CANINTF包含8个主要的中断使能位。CANSTAT寄存器的一个特殊的只读位(ICODE位)配合跳转表使用,可以对中断进行高效的处理。除了错误中断以外,所有中断都对应一个中断源。任何一个错误中断源都能使错误中断标志置位。可以通过读通信状态寄存器 COMSTAT来确定错误中断的来源。
中断可分为2类:接收中断和发送中断。
与接收相关中断的有:接收中断、唤醒中断、接收器溢出中断、接收器警告中断和接收器错误被动中断。
与发送相关中断的有:发送中断、发送器警告中断、发送器被动错误中断和总线关闭中断。3
错误界定CAN具有错误分析功能。每个CAN通信单元能够在3个错误状态之一中工作:错误激活、错误认可、总线关闭。这些错误的区分取决于硬件自带错误计数器(接收错误寄存器、发送错误寄存器)的值。
(1)错误激活状态:如果两个错误计数器的值都在0~127之间,则通信单元是“错误激活”的;一且检测到错误,则产生激活错误标志(6个显性位)。错误激活单元可以正常地参与总线通信。
(2)错误认可状态:如果错误计数器值位于128~255之间,则通信单元是错误认可的;一旦检测到错误,则产生认可错误标志(6个隐性位))。错误认可单元可以参与总线通信,只是在发送错误之后,再启动下一次发送之前处于等待状态。
(3)如果发送错误计数器高于255,则到达总线关闭状态;在这种状态下复位请求位自动置位CAN节点,对总线没有影响。1
本词条内容贡献者为:
王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所