====如何让CAN总线能收到远程帧==== DEL下可以正常接收远程帧。注意我们提供的CAN例程只是一个非常简单的示例以供参考,如果认真阅读can_test代码,你会看到有一行是接收包的过滤器: rfilter.can_mask = (main_opts->extended) ? CAN_EFF_MASK : CAN_SFF_MASK 这意味着can_test只接收匹配你ID的帧,其它默认会丢弃掉。远程帧并不匹配你原来的id,而是有一个0x40000000基数,比如你希望收到ID为1的远程帧,那你实际上收到的是ID 0x40000001。 如果您希望收到所有的包,那您需要把掩码全改为0。 rfilter.can_mask = 0x00000000U; 在can_test.c中按上述方法更改并重新编译,加载到文件系统执行时,当发送远程帧你会看到: Running the test as RECEIVER [ INFO ] Testing with 1000 loops [ INFO ] Starting the thread for the ID 0x1 [ DEBUG ] Frame 1 with ID 0x40000001 received [ ERROR ] Different CAN-frames at loop 1 * EXPECTED: ID 0x001 | DLC 0x00 | DATA * RECEIVED: ID 0x40000001 | DLC 0x00 | DATA root@ccardimx28js:~# 注意,系统预编译自带的can_test并不总是同Digi测试过的例程保持一致。如果您按上述方法没法得到想要的结果,请参考Digi用于接口功能测试的示例: {{:digi:embedded:linux:del:del设备和接口:can_test_v2.1.zip|can_test v2.1}}