Eu estava pensando em fazer um módulo para uma placa de desenvolvimento que fiz alguns dias atrás, que incluirá interfaces spi / i2c.
O problema é que eu não incluí resistores pull-up nos pinos do MCU na placa principal e estava pensando em adicioná-los nos módulos para torná-los mais "genéricos" para que todos os usuários pudessem usá-los sem a necessidade de adicionar resistores extras. a placa protótipo.
Mas então eu enfrentei o próximo problema. Se eu adicionar os resistores pull-up nos módulos extras e conectar, por exemplo, dois ou mais módulos ao mesmo barramento, colocarei esses resistores em paralelo para que a resistência caia e não cumpra sua função.
Mas se eu adicionar os resistores de pull-up à placa principal, terei esses pinos no MCU sempre ativos baixos.
Portanto, a principal questão é:
Como ter vários módulos conectados ao mesmo barramento, tendo em cada um deles os resistores de pull-up, mas não obtê-los em paralelo quando você tem mais de um módulo? Isso é possível?
Ou a melhor solução aqui é ativar os resistores de pullup no MCU e não os incluir nos módulos?
Obrigado.-
Respostas:
Suponho que o comprimento total de cada um de seus ônibus seja inferior a 1 metro, o que é típico para I 2 C e SPI comuns . Além disso, a capacitância do barramento está dentro das especificações.
Deve haver apenas um (1) conjunto de resistores de pull-up. Como resultado, o melhor lugar para eles é na placa controladora principal. Não coloque os pull-ups nos módulos.
Se você deseja receber pull-up em alguns casos e não em outros casos.
edit: Francamente, acho que é um erro o Sparkfun colocar pull-ups nos módulos escravos I 2 C. Infelizmente, nem todo mundo que compra módulos percebe que o pull-up excessivo pode ser um problema. Seria melhor se as placas controladoras (em vez das placas periféricas escravas) tivessem pull-ups com jumpers de solda. Ah ... espere ... O Arduino não carrega as extensões (opcionais) (embora talvez deva). Então, vamos esquivar pull-ups em todos os lugares. Experiência inicial fácil e imediata. Mas adicione alguns módulos escravos e o barramento deixará de funcionar.
update (maio de 2015):
- Discussão relacionada em comentários em outro tópico.
- Nos módulos recentes, o SparkFun começou a adicionar jumpers de solda entre Vcc e os resistores pull-up I 2 C ( exemplo ). Isso permite desconectar os pull-ups mais facilmente.
update (dez 2015):
Perguntas semelhantes sobre a solução de problemas do I 2 C com vários módulos continuam aparecendo nos quadros de mensagens. Tente uma resposta geral estendida.
fonte
Uma opção é usar os pacotes de resistores SIL ou DIL e encaixá-los nos soquetes de cada módulo. Ao criar um sistema com vários módulos, retire-os de todos os módulos, exceto o último. Isso economiza um pouco de espaço na placa sobre os jumpers.
Variações sobre esse tema podem incluir interruptores FET para conectar ou desconectar os resistores, controlados por um único jumper ou um pino sobressalente no conector (para que, se outro módulo estiver conectado, os resistores sejam desconectados automaticamente)
fonte