AnsweredAssumed Answered

CAN filter in FMI field

Question asked by Jack Peacock on Jan 15, 2014
I set up CAN1 for mask filters as follows:
CAN 1, Btr 0129000a, Esr 00000000, Mcr 00000040, Msr 00000c00
       Tsr 1c000000, Rf0r 00000000, Rf1r 00000000, Ier 0003875b
filter Fmr 2a1c0e00, Fm1r 00000000, Fs1r 00000000, Fa1r 0380ce03, Ffa1r 0fffedfc
       Fir0 fff80000, fe180e00
       Fir1 f0181000, f0181010
       Fir9 f018e000, fff8e030
       Fir10 f018f000, fff8f010
       Fir11 fff81000, fff81010
Flter Fir9 is for a CANopen NMT-EC incoming heartbeat message, COB-ID 0x7nn, where nn is the node ID, no RTR, standard 11-bit IDE.  The other half of the filter passes CANopen Node Guard messages (RTR set).  I would expect the FMI field for the incoming message to be 9, for filter 9, but instead it reports it as filter 4, which is inactive.  The contents of Fir4 are:
Fir4 fff86020, fff85030
set up for CANopen PDO1 function group.

All filters are dual 16 bit, mask mode only.  All messages are 11-bit standard IDE.  No RTR used.

For other mesasges the filter FMI field is correct, but with a COB-ID of 0x70f it always returns filter 4 in the FMI field.  Every filter is set up to exactly match the CANopen function group in the high 4 bits so there should be no overlap on filtering with group 0xe, the NMT-EC messages.

Has anyone used CAN filters in 16 bit mask mode, with multiple filters and looking at the FMI field to route incoming messages?
  Jack Peacock

Outcomes