KEA128 控制器 Keil 环境 CAN 接收过滤:使用库函数文件 kea128_mscan.c 完善 CAN_Init() 函数
在 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 著作权归作者所有。请勿转载和采集!