I2C: dispositivos de 3,3V e 5V sem mudança de nível no barramento de 3,3V?

12

eu realmente preciso de um deslocador de nível se usar dispositivos de 5V em um barramento I2C que possua pull-ups para 3,3V? No meu entendimento, os dispositivos apenas puxam as linhas (SDA, SCL) para baixo (para o solo) e nunca direcionam sua tensão de alimentação para o barramento. Portanto, não vejo uma razão para uma mudança de nível, desde que todos os dispositivos detectem a tensão dos pull-ups (3,3V) como alta lógica. Esse deve ser o caso de dispositivos usando 5V como fonte.

No meu caso, eu tenho um IC cujas entradas não são tolerantes a 5V como mestre e eu poderia alimentar meus escravos com 3,3V, mas usar 5V é mais fácil no meu circuito e permite taxas de clock (internas) mais altas para os escravos.

Jannis
fonte
2
Para resumir: - Nenhum chip está em perigo ao usar dispositivos com 5V como Vdd em um barramento I2C usando pull-ups para 3,3V - Pode ou não funcionar, dependendo das tolerâncias, do design interno do chip, ...
Jannis
2
Correto - sem perigo de danos, apenas sem garantia de operação correta.
Adam Lawrence

Respostas:

15

De acordo com a versão 4 do Eu2C especificação ,

"Devido à variedade de dispositivos tecnológicos diferentes (CMOS, NMOS, bipolares) que podem ser conectados ao barramento I2C, os níveis dos lógicos '0' (LOW) e '1' (HIGH) não são fixos e dependem da o nível associado de VDD. Os níveis de referência de entrada são definidos como 30% e 70% de VDD; VIL é 0.3VDD e VIH é 0.7VDD. Consulte a Figura 38, diagrama de temporização. VIH = 3,0 V, mas todos os novos dispositivos exigem essa especificação de 30% / 70%. Consulte a Seção 6 para obter as especificações elétricas. " (página 9)

Mais detalhadamente nas especificações, você verá que esse é o0,7×VDD mínimo de tensão lógica alta:

trecho do NXP I2C spec rev.  4

Para o seu sistema 5V:

0,7×5V=3.5V

0,3×5V=1.5V

Para mim, o pull-up de 3,3 V parece marginal, especialmente se algum dos seus dispositivos de 5V usar o 'novo' padrão de para a lógica HIGH.0,7×VDD

Sua milhagem pode variar, mas é sempre melhor estar dentro das especificações sempre que possível ...

Adam Lawrence
fonte
Obrigado pela limpeza stevenvh. Eu estava correndo ontem.
11308 Adam
11

A resposta de Cees está incorreta, em particular o "sempre" e "qualquer". As E / Ss do microcontrolador podem precisar de 0,6 Vdd no mínimo para um nível alto, outras têm no mínimo 0,7 Vdd e, como Madmanguruman indica que esse é o padrão para o I2C. 0,7 Vdd é 3,5 V em uma fonte de 5 V, portanto 3,3 V já é muito baixo.

Mas é ainda pior. Os reguladores de tensão geralmente têm uma tolerância de 5% em sua tensão de saída nominal; portanto, no pior caso, 5 V podem ser 5,25 V e 0,7 Vdd se tornam 3,675 V. Entrada mínima para um nível alto. Se os 3,3 V tiverem uma tolerância negativa de 5%, então os 3,3 V se tornarão 3.135 V. Portanto, com as tolerâncias levadas em conta, a entrada pode muito bem ser meio voltagem muito baixa, ou 15%.

Então,

Portanto, não vejo uma razão para uma mudança de nível, desde que todos os dispositivos detectem a tensão dos pull-ups (3,3V) como alta lógica. Esse deve ser o caso de dispositivos usando 5V como fonte.

é uma conclusão prematura. Sempre verifique as folhas de dados e faça o cálculo.

stevenvh
fonte
-1

Eu sinto que as outras respostas não responderam realmente à pergunta de Jannis. Ele perguntou sobre o uso de dispositivos de 5V em um barramento de 3.3V (presumivelmente 3.3V MCU). Concordo que ter as flexões ligadas a 3,3V será bom, por exemplo, seguro para o dispositivo mestre, uma vez que os pinos SDA / SCL somente serão puxados para baixo, como ele mencionou. Cuidado para que os escravos e o mestre precisem compartilhar um terreno comum (pinos Vss equipotenciais) para proteger o MCU da sobretensão, mas isso provavelmente seria o caso. Portanto, o método de Jannis deve funcionar, sem um deslocador de nível.

DavidW_10MI
fonte
2
Bem-vinda!! Notei que você é um novo colaborador e, portanto, talvez não tenha percebido que está respondendo a uma pergunta com mais de seis anos. O sistema constantemente levanta questões antigas, para que sejam revisadas. Lembre-se disso.
Edgar Brown