Hallo Community Ich versuche gerade ein kleines Projekt zu realisieren bei dem im diverse Schnittstellen (UART, SPI, I2C) verwenden möchte. Bei der Beschaltung und Betrieb dieser Schnittstellen habe ich aber noch einige Unklarheiten und bräuchte etwas Hilfe. Das Board das ich verwende ist ein Arduino Mega 2560 R3 Erstmal zwei Grundlegende Fragen: 1. Das Board wird mit 5V Betrieben. Der Logik-Output-Pegel des Boards ist gemäss Datenblatt damit minimal 4.2V für HIGH und maximal 0.9V für LOW. Gilt dies für alle Schnittstellen, also auch für die Anschlüsse von SPI, UART und I2C? Ich frage deshalb weil viele Peripheriegeräte für diese Schnittstellen einen Logik-Pegel von 3.3V verwenden. 2. Die digitalen Ein/Ausgänge können mit einem Internen Pull-Up-Widerstand beschalten werden, welcher sich manuell aktivieren lässt. Ist dies für die Datenleitungen von SPI, UART und I2C auch möglich? Falls ja, müssen diese manuell aktiviert werden? Oder haben diese Schnittstellen schon einen fixen Pull-Up-Widerstand da dieser ja eigentlich immer benötigt wird? Die nächsten Fragen beziehen sich etwas spezifischer auf Peripherie. Im ersten Fall geht es konkret um das RTC Modul Ds3231. https://www.distrelec.ch/Web/Downloads/_t/ds/ds3231_eng_tds.pdf 3. Das Modul möche ich am I2C Bus betreiben. Dieses IC kann gemäss Datenblatt mit 2.3V - 5.5V versorgt werden. (Datenblatt ab Seite 2) Für den Fall dass ich es wie mein Board mit 5V Betreibe liegen die Logik-Pegel für den Eingang damit zwischen 3.5V und 5.3V für den HIGH Zustand und -0.3V bis 1.5V für LOW. Da ich die Antwort auf Frage 1 noch nicht kenne gehe ich mal davon aus, dass das Board auf dem I2C Bus mit 5V Logik-Pegel arbeitet. Da nun beide Komponenten (RTC und u-Controller-Board) mit diesem Pegel glücklich zu sein scheinen, kann ich das RTC IC also direkt verwenden ohne Pegel-Korrektur? 4. Die Frage bezieht sich wieder auf das DS3231 Modul. Im Datenblatt sind für die Datenleitungen externe Pull-Up-Widerstände verlangt. (Seite 9) Angenommen das Board hat eigene Pull-Up-Widerstände für die Schnittstelle (Frage 2), brauche ich dann noch zusätzliche manuel hinzuzufügen? Falls ja, in welchem Bereich sollten die Liegen? Würde es schaden, wenn ich die Widerstände einfüge obwohl das Board schon welche hätte? 5. In meinem Projekt möchte ich gerne einen externen Speicher ansprechen. Es gibt ja Speicherbausteine mit seriellen Interfaces wie z.B. EEPROM ICs welche per SPI angesteuert werden können. Diese Speicher verlangen oftmals deutlich niedrige Logik-Pegel. Dementsprechend wird eine Pegel-Korrektur von Seitens des Mikrocontrollers nötig sein. In diesem Forum gibt es schon Beiträge dazu. In denen ist von "Voltage-Level-Shiftern" die Rede wie z.B. den TXB0104 http://www.ti.com/lit/ds/symlink/txb0104.pdf Sind diese notwendig oder genügt ein einfacher Spannungsteiler, also zwei Widerstände, um auf die gewünschte Spannung zu kommen? Besten Dank für jede Hilfe und freundliche Grüsse!
I2C braucht die Pullup, die es braucht! Leitungslänge, Anzahl Teilnehmer, Versorgungsspannung und noch ein paar Dinge spielen eine Rolle. Levelshifter können nötig werden. Auf dem SPI Bus würde ich Pullup an den jeweiligen CS anbringen. Damit die Slaves sich nicht aus versehen angesprochen fühlen. Denn sonst könnte ISP versagen. Levelshifter können nötig werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.