Ich habe Zweifel am I2C-Pullup-Widerstand. Eigentlich entwickle ich ein I2C-Modul mit GPIO-Pins. Ich habe einen externen Pull-up-Widerstand (10k) für die SDA- und SCL-Leitungen verwendet. Muss ich den internen Pull-up auch zusammen mit dem externen Pull-up aktivieren, oder ist der externe Pull-up ausreichend? Wie wirkt sich der kombinierte externe und interne Pull-Up auf die Kommunikation aus? antworten Sie bitte
Danke
Dies hängt von der spezifischen Architektur ab, die Sie verwenden. Wenn der Mikrocontroller, auf den Sie abzielen, über interne Klimmzüge verfügt, müssen Sie sicherstellen, dass sie stark genug sind, wenn Sie es ihnen ermöglichen, die externen Klimmzüge wegzulassen.
Wenn es nicht stark genug ist, müssen Sie es nicht aktivieren und Sie können einfach externe Klimmzüge verwenden.
Wenn der Pull-up durch eine verrückte Architektur immer aktiviert ist, können Sie den internen Pull-up effektiv als Widerstand parallel zum externen Pull-up behandeln, da beide auf VCC hochziehen. Beachten Sie, dass der resultierende Widerstand zu niedrig sein kann, wenn sie parallel sind, also stellen Sie sicher, dass das Endergebnis immer noch ein richtiger Klimmzug sein kann.
Wenn ich es richtig verstehe, möchten Sie diesen I2C-Bus bit-bangen. Es gibt ein paar Dinge, die Sie beachten müssen.
1. AVRs und PICs haben ziemlich hochohmige interne Pullups, sodass Sie sowieso einen externen Widerstand benötigen (2k bis 4,7k).
2. Stellen Sie sicher, dass Ihre GPIOs Open-Drain sind, da der I2C-Bus ein Open-Drain-Bus ist. AVRs oder PICs lassen Sie das jedoch nicht zu. Der Weg, dies zu tun, besteht darin, beim Ansteuern des Busses anstelle des Ausgangsregisters das Richtungsregister zu verwenden und den Ausgangswert auf 0 zu setzen. Wenn Sie also den Bus auf Low treiben möchten, stellen Sie die GPIO-Richtung auf Ausgang und wann Sie den Bus ansteuern möchten hoch auf Eingang gesetzt.
CurtisHx
Benutzer323693
Akshara Prasad