我正在构建基于Atmega2560芯片的定制Canbus IO模块。该模块将具有10个高电流输出,包括pwm控制和电流反馈,20个数字输入,5个模拟输入和4个0-5v模拟输出。我一直在研究搞清楚我将要使用的J1939消息结构。这些模块将是由主ECU控制的从属设备。由于这些模块中的多个模块可能位于同一个网络中,因此我为每个模块添加了一个CAN地址开关,以便用户可以选择每个单元的CAN ID 1-25
我不明白为什么这个示例代码来自mcp_can库& &的接收到的可以使用0x1FFFFFFF的Id。什么样的比特会丢失?因为这条指令会丢失3个MSB位。 if((rxId & 0x80000000) == 0x80000000) // Determine if ID is standard (11 bits) or extended (29 bits)
sprintf(msgString