在 kea128_mscan.c 文件中,可以通过修改 CAN_Init() 函数中的 MSCAN->CANIDAR_BANK_1[0] 语句来实现 CAN ID 的过滤功能。以下是一个示例代码,用于过滤 0x18ff5018、0x18fEE23A、0x1FEE6EE CAN ID 前 2 个字节:

void CAN_Init(void) {
    // 其他初始化代码
    
    // 设置 CAN ID 过滤器
    MSCAN->CANIDAR_BANK_1[0] = 0x18;   // 第一个过滤器的第一个字节
    MSCAN->CANIDAR_BANK_1[1] = 0xFF;   // 第一个过滤器的第二个字节
    MSCAN->CANIDAR_BANK_1[2] = 0x50;   // 第一个过滤器的第三个字节
    MSCAN->CANIDAR_BANK_1[3] = 0x18;   // 第一个过滤器的第四个字节
    MSCAN->CANIDAR_BANK_1[4] = 0x18;   // 第二个过滤器的第一个字节
    MSCAN->CANIDAR_BANK_1[5] = 0xFE;   // 第二个过滤器的第二个字节
    MSCAN->CANIDAR_BANK_1[6] = 0xE2;   // 第二个过滤器的第三个字节
    MSCAN->CANIDAR_BANK_1[7] = 0x3A;   // 第二个过滤器的第四个字节
    MSCAN->CANIDAR_BANK_2[0] = 0x1F;   // 第三个过滤器的第一个字节
    MSCAN->CANIDAR_BANK_2[1] = 0xEE;   // 第三个过滤器的第二个字节
    MSCAN->CANIDAR_BANK_2[2] = 0x6E;   // 第三个过滤器的第三个字节
    MSCAN->CANIDAR_BANK_2[3] = 0xE6;   // 第三个过滤器的第四个字节
    
    // 其他初始化代码
}

在上述代码中,我们通过修改 MSCAN->CANIDAR_BANK_1 数组和 MSCAN->CANIDAR_BANK_2 数组的相应元素,可以实现对 CAN ID 的过滤。每个元素都表示一个字节,所以需要分别指定 CAN ID 的每个字节。

请注意,MSCAN->CANIDAR_BANK_1 和 MSCAN->CANIDAR_BANK_2 数组都是 unit8_t 数据类型的数组,数组大小不能超过 8 位数据。在示例代码中,我们已经分别使用了 8 个元素来表示过滤器的配置。


原文地址: https://www.cveoy.top/t/topic/pkpb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录