本帖最后由 eefocus_4041346 于 2024-9-18 11:08 编辑
调试MIMXRT1021CAG4B的CAN异常 CA CAN1、CAN2两个CAN口都启用时,两者CAN滤波表现情况不一致 2. CAN1、CAN2只启用其中一个CAN口时,CAN掩码寄存器bit0与其余bit采用逻辑不一致。 举例:(以标准帧为例) FLEXCAN_SetRxIndividualMask(EXAMPLE_CAN, RX_MESSAGE_BUFFER_NUM,FLEXCAN_ID_STD(3));RX_MESSAGE_BUFFER_NUM为10 FLEXCAN_SetRxIndividualMask(EXAMPLE_CAN2,CAN2_RX_MESSAGE_BUFFER_NUM,FLEXCAN_ID_STD(3));CAN2_RX_MESSAGE_BUFFER_NUM为2
此时CAN1掩码寄存器为EXAMPLE_CAN->RXIMR[10] = 3。(二进制表示为000 0000 0011) 此时CAN2掩码寄存器为EXAMPLE_CAN2->RXIMR[2] = 3。(二进制表示为000 0000 0011) 设置完成后,实际上CAN1通过的ID以二进制表示为XXX XXXX XX01,即bit0使用与逻辑,bit1使用非逻辑。我测试下来除bit0外其余位用非逻辑 CAN2通过的ID以二进制表示为XXX XXXX XX00。(X表示都通过)与CAN1通道的逻辑不一致。单独启用一个CAN口采用的逻辑为两个CAN都启用时CAN1表现的逻辑。
基于SDK_2_12的FlexCAN 的loopback ,配置没改动,只修改了几个参数,加了一个滤波 用的开发板测试,目前开了一个CAN都有问题,给的掩码是0x0F,实际接收是0x03、0x13这种ID。 图一 :实际使用的参数 图二:调用库函数使用的滤波功能
实际使用的参数
调用库函数使用的滤波功能
还请大神帮忙指点一下,谢谢
|