I2C-Pegelverschiebung

11

Ich entwerfe derzeit eine Schaltung, die Daten von einem Sensor aufzeichnen und die aufgezeichneten Daten in einem EEPROM speichern kann. Meine beiden Geräte (EEPROM und zu Testzwecken eine RTC) sind über einen I2C-Bus mit einem PIC16F887 µC verbunden. Der Spannungsbetriebsbereich der beiden Geräte ist jedoch nicht gleich (5 V für das EEPROM, 3,3 für die RTC), und meine Batterie ist eine 9-V-Batterie.

Deshalb habe ich eine elektronische Schaltung mit einem Pegelumsetzer aus MOSFETs für die SDA / SDL-Verkabelung entworfen. Darüber hinaus habe ich zwei Spannungsregler LM317 hinzugefügt, um die Geräte mit Strom zu versorgen (9 V-> 3,3 V und 9 V-> 5 V). Da ich kein Experte für das Entwerfen solcher Dinge bin, würde ich mich freuen, wenn Sie einen Blick auf das werfen könnten, was ich gemacht habe, und mir sagen könnten, ob ich etwas schrecklich Falsches getan habe!

Geben Sie hier die Bildbeschreibung ein

Al_th
quelle
Nur als Referenz: electronic.stackexchange.com/q/708/4950
PetPaulsen

Antworten:

3

Trotz anderer Kommentare ist die Lösung selbst in Ordnung. Ich sehe jedoch ein paar kleinere Probleme.

  1. 10k Pull-Up-Widerstände am Bus sind bei weitem nicht steif genug, insbesondere wenn Sie höhere Busgeschwindigkeiten verwenden möchten.

  2. Sie benötigen Eingangs- und Ausgangsentkopplungskondensatoren an Ihren Linearreglern und digitalen ICs. 100nF ist ein guter Anfang für die digitalen ICs und für die Linearregler, 100nF an den Eingängen und 1μF an den Ausgängen.

Adam Lawrence
quelle
Vielen Dank für die Entkopplungskondensatorspitze, tatsächlich wird sie auf den meisten Schaltplänen für Linearregler angezeigt, aber ich habe diesen Teil komplett übersprungen! Für den Entkopplungskondensator für die digitalen ICs meinen Sie einen Kondensator zwischen Eingangsspannung und Masse, ist das in Ordnung? (Nur um sicherzugehen, dass ich verstanden habe, was Sie gemeint haben!) Als letztes sagen Sie, dass 10k-Pull-up-Widerstände weit davon entfernt sind, steif genug zu sein, aber im Datenblatt empfehlen sie diese Werte für die 400-kHz-Busgeschwindigkeit. Gibt es ein Problem mit dem Level Shifter? Wie auch immer, dieser Ratschlag war großartig!
Al_th
1
Richtig - Halten Sie die Entkopplungskondensatoren so nah wie möglich an den Strom- und Rückführstiften. Wenn die I2C-Leitungen eine signifikante Kapazität aufweisen, müssen Sie diese Klimmzüge absenken, um die Kanten scharf zu halten. Normalerweise beginne ich mit 1.8k und bewerte von dort aus.
Adam Lawrence
Okay, danke für alles, ich hoffe, es wird Leuten helfen, mit verschiedenen I2C-Geräten herumzuspielen!
Al_th
-4

Ja, Sie haben auf Ihrem Schaltplan Dinge getan, die schrecklich falsch sind. Informationen zur korrekten Pegelverschiebung Ihrer Spannungspegel finden Sie unter (manchmal) nicht bestätigte I2C-Slave-Adresse. Der MAX3373E-IC wird zur Pegelverschiebung verwendet. Bitte beachten Sie, dass Pull-up-Widerstände in den SDA- und SCK-Leitungen angezeigt werden. Bei Verwendung von MAX3373E sind jedoch keine Pull-up-Widerstände erforderlich, da der MAX3373E Pull-ups auf beiden Seiten der E / A-Leitungen eingebaut hat. Es gibt auch andere ICs für die Pegelverschiebung. Sie können zu Digi Key oder Mouser gehen und suchen.

Suirnder
quelle
5
OPs Ansatz ist in Ordnung! NXP hat sogar einen App-Hinweis zum Thema. Sei nicht so schnell zu beurteilen.
Adam Lawrence
Ich sehe, wo ich falsch gelaufen bin. Das Symbol für die FETs wird nicht richtig angezeigt, die Diode fehlt.
Suirnder
1
@Suirnder Es besteht das Risiko, mit begrenztem Wissen zu stark zu wirken. Ich glaube, nicht der erste derartige Beitrag von Ihnen.
Anindo Ghosh
1
@ Meine Güte, ich lerne meine Lektionen. Ich hätte zuerst das Datenblatt auf den FETs überprüfen sollen.
Suirnder