Myślałem o stworzeniu modułów dla płytki rozwojowej, które zrobiłem kilka dni temu, które będą zawierały interfejsy spi / i2c.
Problem polega na tym, że nie włączyłem rezystorów podciągających do pinów MCU na płycie głównej i myślałem o dodaniu ich do modułów, aby były bardziej „ogólne”, aby każdy użytkownik mógł z nich korzystać bez konieczności dodawania dodatkowych rezystorów w płyta prototypowa.
Ale potem stanąłem przed kolejnym problemem. Jeśli dodam rezystory podciągające w dodatkowych modułach i podłączę na przykład dwa lub więcej modułów do tej samej magistrali, dostanę te rezystory równolegle, aby opór spadł i nie spełnił swojej funkcji.
Ale jeśli dodam rezystory podciągające do płyty głównej, będę mieć te piny w MCU zawsze jako aktywne niskie.
Główne pytanie brzmi:
Jak podłączyć wiele modułów do tej samej magistrali, mając na każdym z nich rezystory podciągające, ale nie ustawiać ich równolegle, gdy masz więcej niż jeden moduł? Czy to jest możliwe?
A może najlepszym rozwiązaniem jest włączenie rezystorów podciągających w MCU i nie obejmuje ich modułów?
Dzięki.-
Odpowiedzi:
Zakładam, że całkowita długość każdego z twoich autobusów jest mniejsza niż 1 metr, co jest typowe dla zwykłego I 2 C i SPI. Również pojemność magistrali mieści się w zakresie specyfikacji.
Powinien być tylko jeden (1) zestaw rezystorów podciągających. W rezultacie najlepsze miejsce dla nich znajduje się na głównej płycie kontrolera. Nie nakładaj pull-up na moduły.
Jeśli chcesz mieć pull-up w niektórych przypadkach, a nie mieć ich w innych przypadkach.
edytuj: Szczerze mówiąc, myślę, że błędem jest to, że Sparkfun umieszcza pull-upy na modułach slave I 2 C. Niestety, nie każdy, kto kupuje moduły, zdaje sobie sprawę, że nadmierne podciąganie może stanowić problem. Byłoby lepiej, gdyby płyty kontrolne (zamiast płyt peryferyjnych slave) miały podciągnięcia ze zworkami lutowanymi. Och ... Zaczekaj ... Arduino nie nosi (opcjonalnie) podciągnięć (choć może powinno). A więc chodźmy wszędzie podciągnięcia. Łatwiejsze początkowe doświadczenie po wyjęciu z pudełka. Ale dodaj kilka modułów podrzędnych, a magistrala przestanie działać.
aktualizacja (maj 2015):
- Powiązana dyskusja w komentarzach w innym wątku.
- W swoich ostatnich modułach SparkFun zaczął dodawać mostki lutownicze między Vcc a rezystorami podciągającymi I 2 C ( przykład ). Umożliwia to łatwiejsze odłączanie podciągnięć.
aktualizacja (grudzień 2015):
Podobne pytania dotyczące rozwiązywania problemów I 2 C z wieloma modułami pojawiają się na forach dyskusyjnych. Próba rozszerzonej ogólnej odpowiedzi.
źródło
Jedną z opcji jest użycie pakietów rezystorów SIL lub DIL i dopasowanie ich do gniazd w każdym module. Budując system z wieloma modułami, wyjmij je z każdego modułu oprócz ostatniego. Oszczędza to trochę miejsca na desce nad zworkami.
Odmiany tego tematu mogą obejmować przełączniki FET do podłączania lub odłączania rezystorów, kontrolowanych przez pojedynczą zworkę lub zapasowy pin na złączu (tak, że jeśli podłączony jest inny moduł, rezystory są automatycznie odłączane)
źródło