2017-07-25 5 views
0

J'utilise MK24F12. J'ai ajusté le module Flexcan pour recueillir les messages de l'appareil à l'aide de Fleet Management Systems Interface. J'ai activé RxFIFO et défini le mode d'acceptation d'ID au format A. Puis j'ai rempli la table de filtrage (elle commence à la 7ème boîte aux lettres) avec des ID et des registres RXIMR avec le masque. Les autres filtres sont remplis avec 0x40000000 et les registres restants avec 0x5FFFFFFF. Quand je commence à écouter l'appareil, j'obtiens quelques images, mais voici le problème que je ne reçois pas tous les messages envoyés par l'appareil, bien qu'ils correspondent aux filtres. Je sais que parce que si je place n'importe quel registre de masque comme zéro je reçois tous les messages sur le bus. J'ai remarqué que le filtre de hit (registre RXFIR) est (0,1,4,5, ...), donc en d'autres termes je reçois des messages qui correspondent aux filtres stockés dans les registres CSn et IDn de MailBox. Ci-dessous est le journal, ici j'ai ajouté 7 filtres et j'ai reçu seulement 4 types de messages.Flexcan ne s'applique pas à tous les filtres

Puis j'ai enlevé tous les filtres et comme vous pouvez le voir, j'ai sauté beaucoup de messages qui supposaient être pris.

[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) 

est ici l'image de FlexCAN registers' values

Répondre

0

J'ai trouvé que je lis des bits de code du registre CS de MB et il était de 1 pour les filtres 2,3,6,7 ... cela signifie BUSY. Mais si MB est utilisé par le moteur FIFO, il ne contient pas de bits CODE et nous ne devrions pas du tout vérifier le code tampon du message. Ils pourraient, s'ils n'utilisent pas certains bits, les garder à l'écart.

La question est classée. Voici l'image de MB and FIFO structure