Die Infos zu diesem Thema sind für mich widersprüchlich. Die aktuelle Doku (2.7) zur WIRE Lib sagt, dass Master Mode funktioniert, Slave wird nicht erwähnt. Andererseits gibt es keine Fehlermeldung, wenn man für Slave Mode mit wire.begin(sda-pin, scl-pin, slave-adresse) initialisiert. Es gibt aber Fundstellen im Netz, die behaupten, dass ab Version 2.5 auch der Slave Mode funktioniert. Andere Seiten sagen, dass man für den Slave Mode Patches einspielen muss. Ich habe n+1 Versuche hinter mir, alle erfolglos. Der Slave meldet sich nicht, wenn er angesprochen wird. Ein Arduino als Slave wird gefunden und tut das Verlangte. Also kann der Master so verkehrt nicht sein. Wer kann Licht in das Dunkel bringen? Hat jemand ein funktionierendes Programm?
ESP8266EX has one I2C, which is realized via software programming, used to connect with other microcontrollers and other peripheral equipments such as sensors. The pin definition of I2C is as below. Both I2C Master and I2C Slave are supported. I2C interface functionality can be realized via software programming, and the clock frequency is 100 kHz at maximum. https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf Über die Konsequenzen muss man erstmal nachdenken. Zum Beispiel muss die Firmware alle paar Millisekunden signifikant Rechenzeit bekommen. In dieser Zeit kann der ESP auf Daten und Takt nicht reagieren. Viel Glück mit diesem Murks. By the way: Die 100 kHz sind quatsch. Ich habe mit Bit-Banging (in C++) mühelos 500 kHz erreicht. Aber nur im Master Modus.
Fazit nach einer Woche experimentieren und Code lesen: I2C Slave funktioniert mit der letzten Core Version von Github ohne Patches. Das mitgelieferte Beispiel ist allerdings suboptimal. Es fehlt eine Zeile im Setup des Masters: wire.setClock(xxxL); Die maximale Frequenz bei meinem Aufbau (Nodemcu <-> ESP12) für zuverlässigen Betrieb war 35kHz. Das Signal des Masters sieht auch bei 100kHz noch sehr sauber aus. Das Problem ist nur der Sklave, der darunter leidet, dass ihm das Betriebssystem laufend Zeit klaut. Inwieweit das noch optimiert werden kann, habe ich nicht untersucht. Ich werde einen kleinen AVR als Übersetzer zwischen den ESP und den I2C Master setzen. Der nächste Durchgang - so einer kommt - wäre mit dem ESP32. Der soll das besser können.
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.