Comment gérer plusieurs résistances de rappel sur les modules

9

Je pensais à faire un module pour une carte de développement que j'ai fait il y a quelques jours qui inclura des interfaces spi / i2c.

Le problème est que je n'ai pas inclus de résistances de pull-up dans les broches MCU de la carte principale et pensais les ajouter dans les modules pour les rendre plus "génériques" afin que chaque utilisateur puisse les utiliser sans avoir besoin d'ajouter des résistances supplémentaires dans la carte prototype.

Mais alors j'ai fait face au problème suivant. Si j'ajoute les résistances de pull-up dans les modules supplémentaires et que je connecte par exemple deux modules ou plus au même bus, je mettrai ces résistances en parallèle afin que la résistance baisse et n'accomplisse pas leur fonction.

Mais si j'ajoute les résistances de pull-up à la carte principale, ces broches du MCU seront toujours aussi actives à l'état bas.

La question principale est donc:

Comment avoir plusieurs modules connectés au même bus ayant sur chacun d'eux des résistances de pull-up mais ne pas les mettre en parallèle lorsque vous avez plus d'un module? Est-ce possible?

Ou la meilleure solution ici est d'activer les résistances de pullup dans le MCU et de ne pas les inclure dans les modules?

Merci.-

Sein Oxygen
la source
Créez un module séparé qui contiendra uniquement des résistances de pull-up :)
Alexandr Zarubkin

Réponses:

14

Je suppose que la longueur totale de chacun de vos bus est inférieure à 1 mètre, ce qui est typique des I 2 C et SPI ordinaires . De plus, la capacité du bus est conforme aux spécifications.

Il ne doit y avoir qu'un (1) jeu de résistances de rappel. En conséquence, le meilleur endroit pour eux est sur la carte contrôleur principale. Ne mettez pas les tractions sur les modules.

Si vous voulez avoir un pull-up dans certains cas et ne pas les avoir dans d'autres cas.

  • Ne remplissez pas les résistances de rappel lorsque vous n'en avez pas besoin.
  • Concevez la carte contrôleur principale de sorte que les tractions soient connectées aux lignes de signal via des cavaliers. Retirez les blocs de court-circuitage lorsque vous n'avez pas besoin de tractions.

edit: Franchement, je pense que c'est une erreur que Sparkfun mette des tractions sur les modules esclaves I 2 C. Malheureusement, tous ceux qui achètent des modules ne se rendent pas compte qu'un pull-up excessif peut être un problème. Ce serait plus agréable si les cartes de contrôleur (au lieu des cartes périphériques esclaves) avaient des tractions avec des cavaliers de soudure. Oh ... Attendez ... Arduino ne porte pas les tractions (facultatives) (bien que cela devrait peut-être). Alors, schlep pull-ups partout. Expérience initiale prête à l'emploi plus facile. Mais ajoutez quelques modules esclaves et le bus cessera de fonctionner.

mise à jour (mai 2015):
- Discussion connexe dans les commentaires dans un autre fil.
- Dans leurs modules récents, SparkFun a commencé à ajouter des cavaliers blob à souder entre Vcc et les résistances de pull-up I 2 C ( exemple ). Cela permet de déconnecter plus facilement les tractions.

mise à jour (décembre 2015): des
questions similaires sur le dépannage de I 2 C avec plusieurs modules continuent d'apparaître sur les babillards électroniques. Tentative de réponse générale étendue.

Nick Alexeev
la source
Oui, mon cas était un exemple. Par exemple, tous les modules rtc vendus dans certains magasins incluent les résistances de rappel, alors ... comment traiter ces modules dans ce cas. C'est pourquoi j'ai marqué en gras la question principale. :)
Sein Oxygen
1
@SeinOxygen Si vous avez des modules avec des résistances de pull-up, plus le contrôleur avec ses propres pull-ups, alors toutes ces résistances apparaîtront en parallèle et présenteront un pull-up plus rigide (résistance plus petite). Supposons que vous ayez un total de 3x (trois) résistances de 2,2 kΩ comme tractions. La résistance à la traction totale est de 733 Ω. Cela viole les spécifications I2C. Que faire? Retirez les tractions supplémentaires des modules (peut-être, ils n'auraient pas dû être là en premier lieu).
Nick Alexeev
@SeinOxygen Plus d'informations sur les valeurs de pull-up I2C dans ce fil .
Nick Alexeev
4

Une option consiste à utiliser des packs de résistances SIL ou DIL et à les insérer dans des prises sur chaque module. Lors de la construction d'un système avec plusieurs modules, retirez-les de chaque module sauf le dernier. Cela permet d'économiser un peu d'espace sur les cavaliers.

Les variations sur ce thème peuvent inclure des commutateurs FET pour connecter ou déconnecter les résistances, contrôlés par un seul cavalier, ou une broche de rechange sur le connecteur (de sorte que si un autre module est branché, les résistances sont automatiquement déconnectées)

Brian Drummond
la source