STM32-如何处理14个以上的过滤器?
我目前正在使用STM32F103RD处理器,它在CAN1总线上有14个可用的过滤器 我正在连接J1939总线,我需要监控大约20个PGN。如何设置只有14个可用过滤器的20个PGNSTM32-如何处理14个以上的过滤器?,stm32,can-bus,Stm32,Can Bus,我目前正在使用STM32F103RD处理器,它在CAN1总线上有14个可用的过滤器 我正在连接J1939总线,我需要监控大约20个PGN。如何设置只有14个可用过滤器的20个PGN 这20个PGN不是连续的,因此我无法设置允许的特定范围。这20个可能到处都是。您有14个过滤器组,但每个过滤器组都可以使用标识符列表模式(FBMx=0)匹配两个不同的PGN。因此,您实际上可以与此部件匹配多达28个PGN!有关详细信息,请参见第655页的第24.7.4节 如果您需要匹配超过28个PGN,您有两个选项:
这20个PGN不是连续的,因此我无法设置允许的特定范围。这20个可能到处都是。您有14个过滤器组,但每个过滤器组都可以使用标识符列表模式(FBMx=0)匹配两个不同的PGN。因此,您实际上可以与此部件匹配多达28个PGN!有关详细信息,请参见第655页的第24.7.4节 如果您需要匹配超过28个PGN,您有两个选项:
我使用列表模式让它工作。棘手的部分是,PGN需要转换成32位的报头,这样它就可以匹配“can_RI0R”寄存器来触发中断。例如,我希望接收发动机转速,即PGN 61444(0xF004)。需要将其转换为以下标题: 0xC7802004 如何计算:
与掩码模式相比,此方法的唯一警告是,据我所知,您只能从一个ECU接收消息,因为源地址包含在报头中,并且必须完全匹配。也就是说,您只能从发动机ECU(0x00)接收消息。例如,0x18F004XX,其中XX是源地址。使用掩码模式时,您可以忽略源地址位,并从任何ECU接收PGN。Perfect,我将使用列表标识符模式而不是掩码模式对其进行测试。谢谢