CAN总线报文接收与预处理策略

需积分: 44 141 下载量 56 浏览量 更新于2024-08-10 收藏 9.9MB PDF 举报
"CAN报文接收和点云预处理在嵌入式系统中是关键操作,尤其是在使用MCU如PIC18F45K系列的设备上。报文接收涉及接收缓冲区的管理,其中MAB(消息接纳缓冲区)用于接收来自总线的下一个报文。系统有两个接收缓冲区,允许MCU同时处理一个缓冲区的数据,而另一个缓冲区接收新的报文或存储已接收的报文。接收过程中的关键标志是RXFUL位,当报文进入接收缓冲区时,该位被置1,提示MCU处理报文。若启用接收中断,模块会发出中断信号表明有效报文已接收。 报文类型的确定基于RXBnCON或BnCON寄存器中的过滤器命中位,以及EXID位的状态。标准标识符报文的标识符存储在SIDL和SIDH寄存器中,而扩展标识符报文的标识符则存储在SIDL、SIDH、EIDL和EIDH寄存器中。RTR(远程传输请求)帧的处理需特别注意,如果接收缓冲区未配置为自动处理RTR,固件需要手动响应。 接收模式可以通过RXM位设置,这些位在模式0下控制RXBnCON寄存器,而在模式1和2下控制BnCON寄存器和EXID屏蔽器。模式0下,RXM位可选择接收标准或扩展标识符报文,而模式1和2下,EXID位配合RXM1位控制接收。模式11(或RXM1=1)会接收所有报文,包括错误帧,这在调试时有用,但在实际系统中应避免使用,因为总线错误应被忽略。 接收优先级取决于工作模式。在模式0中,RXB0是高优先级缓冲区,拥有两个过滤器,而RXB1是低优先级,有四个过滤器。在模式1和2中,16个接收过滤器可以动态分配给任一接收缓冲区,编号较低的缓冲区优先级更高。当报文匹配多个接收条件时,它会被放入优先级更高的缓冲区。 需要注意的是,一旦报文被接收,MAB的内容会完全转移到接收缓冲区,覆盖所有寄存器内容。因此,每次接收报文后,都应假设缓冲区中的寄存器已被修改。对于点云预处理,这些基础知识至关重要,因为它们涉及到数据的有效获取和处理,为后续的算法分析和处理奠定了基础。"