Mudança de nível I2C
Atualmente, estou projetando um circuito que pode gravar dados de um sensor e salvá-los em uma EEPROM. Meus dois dispositivos (EEPROM e, para fins de teste, um RTC) são conectados via um barramento I2C a um PIC16F887 µC. No entanto, a faixa de operação da tensão de dois dispositivos não é a mesma (5v para a EEPROM, 3,3 para o RTC) e minha bateria é de 9V.
Por isso, projetei um circuito eletrônico com um deslocador de nível composto por MOSFETs para a fiação SDA / SDL. Além disso, adicionei dois reguladores de tensão LM317 para alimentar os dispositivos (9V-> 3.3V e 9V-> 5V). Como não sou especialista em projetar essas coisas, agradeceria se você pudesse dar uma olhada no que eu fiz e me dizer se fiz algo terrivelmente errado!
— Al_th
Apenas para referência: electronics.stackexchange.com/q/708/4950
Apesar de outros comentários, a solução em si é boa. Eu vejo alguns problemas menores embora.
Os resistores de pull-up de 10k no barramento não são suficientemente rígidos, especialmente se você deseja usar velocidades de barramento mais altas.
Você precisa de capacitores de desacoplamento de entrada e saída em seus reguladores lineares e CIs digitais. 100nF é um bom começo para os ICs digitais e para os reguladores lineares, 100nF nas entradas e 1μF nas saídas.
Obrigado pela ponta do capacitor de desacoplamento, na verdade ela é mostrada no esquema mais regulador linear, mas eu pulei completamente esta parte! Para o capacitor de desacoplamento dos ICs digitais, você quer dizer um capacitor entre a tensão de entrada e o terra, tudo bem? (Só para ter certeza de que entendi o que você quis dizer!) Por fim, você diz que os resistores pull-up de 10k estão longe de serem suficientemente rígidos, mas na folha de dados eles recomendam esses valores para a velocidade do barramento de 400kHz. Há algum problema com o deslocador de nível? Enfim, esse conselho foi ótimo!
Correto - mantenha os capacitores de desacoplamento o mais próximo possível dos pinos de alimentação e retorno. Se houver alguma capacitância significativa nas linhas I2C, será necessário abaixar esses pullups para manter as bordas afiadas. Normalmente começo com 1.8k e avalio a partir daí.
— 21813 Adam Lawrence
Ok, obrigado por tudo, espero que ajude as pessoas a brincar com diferentes dispositivos I2C!
Sim, você fez coisas esquemáticas terrivelmente erradas. Para nivelar corretamente seus níveis de tensão, consulte Endereço secundário I2C não reconhecido (algumas vezes) O MAX3373E IC é usado para alteração de nível. Observe que os resistores pull-up são mostrados nas linhas SDA e SCK. No entanto, ao usar o MAX3373E, os resistores pull-up não são necessários, pois o MAX3373E possui pull-ups embutidos nos dois lados das linhas de E / S. Existem outros CIs disponíveis para mudança de nível também. Você pode ir para Digi Key ou Mouser e pesquisar.
— Suirnder
A abordagem do OP está bem! O NXP ainda tem uma nota sobre o aplicativo . Não seja tão rápido em julgar.
Eu vejo onde errei. O símbolo para os FETs não é exibido corretamente, o diodo está ausente.
@Suirnder Há riscos inerentes a se deparar com muito conhecimento limitado. Não é o primeiro post desse tipo por você, acredito.
— Anindo Ghosh #
@ Deus estou aprendendo minhas lições. Eu deveria ter verificado a folha de dados dos FETs primeiro.