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!
Antworten:
Trotz anderer Kommentare ist die Lösung selbst in Ordnung. Ich sehe jedoch ein paar kleinere Probleme.
10k Pull-Up-Widerstände am Bus sind bei weitem nicht steif genug, insbesondere wenn Sie höhere Busgeschwindigkeiten verwenden möchten.
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.
quelle
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.
quelle