Bonsoir,
Merci pour ces réponses. On doit pouvoir simplifier, au moins en partie.
Pourtant, la réponse de Jean-Luc m'amène à demander des précisions et à proposer des réflexions complémentaires.
Reset:
Le circuit des composants D1, R2, R3, C5, BP ne pourra agir qu'en cas d'appui sur le bouton.
Dans un montage définitif aura-t-on accès au bouton ?
Par ailleurs, sans appui sur le bouton, à quoi peut servir de conserver la liaison K3, 6 - IC1, 17 ?
Il faudrait raccorder K3, 6 à une pin Arduino programmée spécifiquement pour faire le reset?
Dans ce cas, les composants anti-rebond deviennent aussi superflus, avec un changement d'état réalisé avec une pin pilotée par soft. Mais suite à quel évènement faudrait-il le déclencher? C'est une disposition plutôt inhabituelle.
J'ai connu d'autres circuits sur lesquels le reset logiciel (par écriture du mot ad'hoc dans un registre) fonctionnait effectivement; le hard reset devenait superflu. Le §9.0 de la datasheet confirme cette possibilité. Et c'est ce que semble faire la bibliothèque CAN (cas Uno); en effet, au démarrage (dans setup()), mcp2515_init() appelle bien la fonction mcp2515_reset() qui procède par écriture d'un mot de reset. Il devrait donc rester possible de (re)faire un reset logiciel ultérieurement, en cas de besoin impératif (à condition de prévoir tout ce qu'il faut dans le logiciel applicatif Arduino; il n'y a sans doute pas seulement le MCP2515 à réinitialiser...).
Il semble donc qu'on devrait pouvoir supprimer sans perte grave toute la filerie de reset.
Résistance de tirage:
"Tx [de MCP2551] ne doit pas flotter tant que MCP2515 n'a pas fini de s' initialiser."
C'est une précaution qui paraît utile. En effet, j'ai constaté ce genre de phénomène sur les pins d'un Arduino Uno en initialisation. MCP2515, en tant que microcontrôleur, peut aussi se comporter ainsi.
Dans ce cas, faudrait-il aussi ajouter une résistance tirant Tx vers GND sur cette liaison, qui n'en possède pas actuellement? Toutefois, les tests ne semblent pas avoir fait apparaître d'anomalies à ce niveau.
Il serait utile de tester le comportement lors d'un démarrage et branchement 'à chaud' sur un bus déjà lancé (2 autres transceivers actifs).
Si néanmoins on retenait d'ajouter une résistance de pull-down, quelle valeur? Comme R4?
Dans le cas du Uno, c'est TXCAN du 2515 qui pilote le TxD du transceiver :
5V sur 5V, pas de problème, a priori. Sur Rx, la valeur actuelle de R4 semble convenir, d'après les tests.
Dans le cas du Due, 3V pour piloter 5V, il ne faut pas en 'faire trop'.
Un test pourrait préciser la valeur. Il serait agréable que celle-ci convienne dans les deux cas, cela éviterait un strap supplémentaire.
Ceci dit, en consultant la datasheet du MCP2551 correspondante, certaines informations inciteraient à ne pas mettre de résistance de tirage vers la masse :
- le tableau sur la 'table de vérité' du circuit montre que si TxD est à 1 ou 'flottant', le bus n'est pas piloté (ce sont les autres transceivers actifs qui éventuellement le pilotent); pour réellement 'émettre', il faut passer par TxD à 0; TxD flottant ou à 1 ne devrait donc pas engendrer un signal intempestif néfaste;
- un schéma de l'architecture interne suggère qu'il y a une résistance interne de tirage vers VDD sur l'entrée TxD;
- enfin MCP2515 et 2551 sont conçus pour fonctionner ensemble; sur leurs schémas, on observe des dispositifs hard internes de reset à la mise sous tension: on peut raisonnablement penser qu'ils ont été harmonisés à la conception pour se synchroniser convenablement.
Ceci ne pousserait-il pas à penser que ce soit plutôt un niveau bas de TxD qui soit susceptible de provoquer une anomalie? La solution actuelle semble déjà convenable, d'après les tests.
En espérant que cet apport sera utile aux choix définitifs; mais, n'ayant pas encore de montage à tester, je peux me tromper...
Cordialement.