Flexcan не применяет все фильтры

Я использую МК24Ф12. Я настроил модуль Flexcan для сбора сообщений с устройства с помощью интерфейса систем управления парком. Я включил RxFIFO и установил режим приема идентификаторов как формат A. Затем я заполнил таблицу фильтров (она начинается с 7-го почтового ящика) идентификаторами и в соответствии с RXIMR регистрируется с маской. Остальные фильтры я заполнил 0x40000000, а регистры остальных масок — 0x5FFFFFFFF. Когда я начинаю слушать устройство, я получаю несколько кадров, но вот проблема, я не получаю все сообщения, отправленные устройством, несмотря на то, что они соответствуют фильтрам. я знаю это, потому что если я установлю любой регистр маски равным нулю, я получу все сообщения на шине. я заметил, что фильтр попаданий (регистр RXFIR) равен (0,1,4,5,...), поэтому, другими словами, я получаю сообщения, которые соответствуют фильтрам, хранящимся в регистрах CSn и IDn почтового ящика.

Ниже лог, здесь я добавил 7 фильтров и получил всего 4 типа сообщений. Затем я удалил все фильтры и, как видите, пропустил много сообщений, которые должны были быть пойманы.

[1.003] Filter added (Type: Ext, ID: 0x00FEE900, Mask: 0x00FFFF00)
[1.004] Filter added (Type: Ext, ID: 0x00FEFC00, Mask: 0x00FFFF00)
[1.005] Filter added (Type: Ext, ID: 0x00FEEE00, Mask: 0x00FFFF00)
[1.006] Filter added (Type: Ext, ID: 0x00FEC100, Mask: 0x00FFFF00)
[1.007] Filter added (Type: Ext, ID: 0x00F00400, Mask: 0x00FFFF00)
[1.008] Filter added (Type: Ext, ID: 0x00FEE500, Mask: 0x00FFFF00)
[1.008] Filter added (Type: Ext, ID: 0x00FEEA00, Mask: 0x00FFFF00)

[1.935] CAN.Got frame (Type: Ext, ID: 0x18F00420, Data: FF FF FF 80 0C FF FF FF, Filter: 4)
[2.436] CAN.Got frame (Type: Ext, ID: 0x18FEE520, Data: 58 1C 00 00 FF FF FF FF, Filter: 5)
[2.938] CAN.Got frame (Type: Ext, ID: 0x18FEE920, Data: FF FF FF FF 59 1C 00 00, Filter: 0)
[3.439] CAN.Got frame (Type: Ext, ID: 0x18FEFC20, Data: FF 48 FF FF FF FF FF FF, Filter: 1)
[4.944] CAN.Got frame (Type: Ext, ID: 0x18F00420, Data: FF FF FF C0 12 FF FF FF, Filter: 4)
[5.445] CAN.Got frame (Type: Ext, ID: 0x18FEE520, Data: 59 1C 00 00 FF FF FF FF, Filter: 5)
[6.950] CAN.Got frame (Type: Ext, ID: 0x18FEE920, Data: FF FF FF FF 5A 1C 00 00, Filter: 0)
[7.452] CAN.Got frame (Type: Ext, ID: 0x18FEFC20, Data: FF 46 FF FF FF FF FF FF, Filter: 1)
[8.957] CAN.Got frame (Type: Ext, ID: 0x18F00420, Data: FF FF FF 00 19 FF FF FF, Filter: 4)
[9.458] CAN.Got frame (Type: Ext, ID: 0x18FEE520, Data: 5A 1C 00 00 FF FF FF FF, Filter: 5)


at this point i removed all filters

[34.186] CAN.Got frame (Type: Ext, ID: 0x18F00420, Data: FF FF FF 00 4B FF FF FF, Filter: 0)
[34.688] CAN.Got frame (Type: Ext, ID: 0x18FEE520, Data: 62 1C 00 00 FF FF FF FF, Filter: 0)
[35.190] CAN.Got frame (Type: Ext, ID: 0x18FEE920, Data: FF FF FF FF 63 1C 00 00, Filter: 0)
[35.691] CAN.Got frame (Type: Ext, ID: 0x18FEFC20, Data: FF 34 FF FF FF FF FF FF, Filter: 0)
[36.193] CAN.Got frame (Type: Ext, ID: 0x18FEEE20, Data: 56 FF FF FF FF FF FF FF, Filter: 0)
[36.694] CAN.Got frame (Type: Ext, ID: 0x18FEC120, Data: AD 05 00 00 FF FF FF FF, Filter: 0)
[37.196] CAN.Got frame (Type: Ext, ID: 0x18F00420, Data: FF FF FF 40 51 FF FF FF, Filter: 0)
[37.698] CAN.Got frame (Type: Ext, ID: 0x18FEE520, Data: 63 1C 00 00 FF FF FF FF, Filter: 0)
[39.203] CAN.Got frame (Type: Ext, ID: 0x18FEE920, Data: FF FF FF FF 64 1C 00 00, Filter: 0)
[39.704] CAN.Got frame (Type: Ext, ID: 0x18FEFC20, Data: FF 32 FF FF FF FF FF FF, Filter: 0)
[40.206] CAN.Got frame (Type: Ext, ID: 0x18FEEE20, Data: 58 FF FF FF FF FF FF FF, Filter: 0)
[40.707] CAN.Got frame (Type: Ext, ID: 0x18FEC120, Data: AD 05 00 00 FF FF FF FF, Filter: 0)

Вот изображение значений регистров FlexCAN


person GeorgeMakarov    schedule 25.07.2017    source источник


Ответы (1)


Я обнаружил, что я прочитал биты CODE регистра CS MB, и это было 1 для фильтров 2,3,6,7... это означает, что BUSY. Но если MB используется механизмом FIFO, он не содержит битов CODE, и мы вообще не должны проверять код буфера сообщений. Они могут, если не использовать некоторые биты, держать их в чистоте.

Вопрос закрыт. Вот изображение МБ и структуры FIFO

person GeorgeMakarov    schedule 25.07.2017