CAN总线双滤波器配置与错误处理

需积分: 42 15 下载量 58 浏览量 更新于2024-08-06 收藏 2.43MB PDF 举报
"双滤波器配置在QR码编码标准中的应用及CAN总线错误处理机制" 在STC16F系列单片机中,配置双滤波器是提高CAN(Controller Area Network)通信效率和准确性的重要手段。双滤波器允许接收到的信息只需通过其中一个滤波器就能被接收,提升了数据处理速度。每个滤波器由4个ACR(Acceptance Code Register,接受码寄存器)和4个AMR(Acceptance Mask Register,接受屏蔽寄存器)组成,它们共同决定了哪些CAN帧会被接收。 对于CAN标准帧的双滤波器配置,第一个滤波器结合了ACR0、ACR1、AMR0、AMR1以及ACR3、AMR3的低4位,用于匹配11位标识符、RTR(Remote Transmission Request,远程传输请求)位和数据场的第1字节。第二个滤波器则利用ACR2、AMR2以及ACR3、AMR3的高4位,仅匹配11位标识符和RTR位。接收信息时,每个位的比较至少有一个滤波器表示接受,RTR位为"1"或数据长度代码为"0"表示无数据字节,此时滤波器1将根据从开始到RTR位的部分进行接收。若没有数据字节需要过滤,AMR1和AMR3的低4位应设置为"1",确保整个标准识别码的验证。 CAN总线的错误处理机制由一系列错误寄存器和计数器构成。例如,错误信息寄存器(ECC)包含了RXWRN(接收警告)、TXWRN(发送警告)、EDIR(错误方向)、ACKER(ACK错误)、FRMER(帧格式错误)、CRCER(CRC错误)、STFER(位填充错误)和BER(位错误)等标志,用于监控通信过程中的各种错误情况。当RXERR或TXERR计数达到96,对应的警告标志会被置位。 接收错误计数器(RXERR)记录了当前接收错误的数量,只读且在BUS-OFF事件后硬件清零。而发送错误计数器(TXERR)则反映了发送错误计数,同样只读,并在初始化时设为0或在BUS-OFF后设为127。 这些机制确保了CAN总线在STC16F系列单片机中的稳定通信,通过精确的滤波和全面的错误检测,提高了系统的可靠性和鲁棒性。用户可以通过配置这些滤波器和错误管理机制,优化其在特定应用场景下的CAN通信性能。
2024-10-24 上传
2024-10-24 上传