J'utilise un MCU 16 bits, PIC24HJ64GP504 , pour écrire une application CAN. Fondamentalement, c'est la communication entre ma carte et un autre nœud qui continue d'envoyer des données à ma carte en utilisant CAN à 1 Mbit / s. Je configure le module ECAN dans mon PIC24 pour fonctionner à 1 Mbit / s. J'ai écrit le code de telle manière que pendant les 10 premières ms, le module ECAN accepte tous les messages provenant de l'autre côté, puis j'ai reconfiguré le module ECAN pour accepter uniquement les messages avec l'ID de message 0x13.
Voici maintenant le problème .. L'autre nœud et ma carte sont mis sous tension au même instant. L'autre nœud commence à transmettre des messages après environ 40 ms après la mise sous tension. Mais je ne peux pas en obtenir de message sur ma carte. Maintenant, si j'allume d'abord ma carte, donnez-lui un peu de temps pour reconfigurer le module ECAN avec de nouveaux filtres et installez-vous puis allumez l'autre nœud, alors tout fonctionne parfaitement.
Maintenant, la partie la plus étrange .. Si j'ai un analyseur de bus CAN connecté entre ma carte et l'autre nœud et même si j'allume les deux nœuds en même temps, tout fonctionne bien ... pas besoin d'alimenter ma carte en premier. J'ai essayé cela avec trois analyseurs de bus différents de différents fabricants et j'ai obtenu les mêmes résultats.
Il me semble que lors de la reconfiguration du module ECAN, il faut un certain temps pour s'installer. Et avec l'introduction de l'analyseur de bus dans le bus, ce temps est en quelque sorte écourté pour que tout fonctionne parfaitement. Mais je ne sais pas exactement quel pourrait être le problème.
Je me bats avec ce problème depuis sept jours.
PS: Aujourd'hui, j'ai vérifié avec une portée et découvert que si l'autre nœud commence à transmettre après 170 ms après la mise sous tension, alors tout fonctionne bien. Avant cela, mon appareil ne recevra aucun message de lui à moins que l'analyseur de bus ne soit connecté. Le pire, c'est que je ne peux pas retarder la transmission de l'autre nœud, le firmware de ce nœud est propriétaire.
J'ai également lu dans un forum aujourd'hui que CAN a besoin de la résistance de 120 Ω au nœud pour le faire fonctionner (même si mon nœud n'en a pas et qu'il fonctionne bien, à condition de disposer d'un certain temps pour régler après la reconfiguration). Je soupçonne que l'introduction de l'analyseur de bus modifie d'une manière ou d'une autre certains paramètres électriques du réseau de sorte que le temps mis par mon nœud pour s'installer après la reconfiguration est écourté. Mais je ne suis pas sûr.. :(