ESP32 als i2c IO-Expander für Raspberry Pi?

3 Antworten

Warum nimmst du da nicht einfach einen Arduino Nano oder dergleichen der kann in dem Fall genau das selbe und zudem auch als I2C Slave arbeiten.

Es gibt glaub ich sogar Arduino kompatible HATs für den Pi wo dann eben ein Atmega oder STM32 drauf sitzt und die kannst du beide entsprechend Programmieren.

Das ist ein wenig schwierig, weil der ESP32 in der Software keine Routinen für die Funktion als I2C Slave besitzt. Es gibt einige die das mit Polling und noch ein paar Tricks zusätzlich machen, aber das ist ziemlich ineffizient es ohne Interruptsteuerung zu machen.

Du solltest mit dem ESP32 über SPI kommunizieren, ist besser und auch schneller.

manjel49ambaum 
Fragesteller
 16.06.2022, 13:49

Danke für deine Antwort. SPI wird bei meinem aktuellen Setup schwierig, weshalb ich möglichst I2C nehmen möchte. Wäre ein Raspberry Pico besser geeignet? oder was wäre sonst eine Alternative wenn ich auf i2c bleiben möchte?

0
communicator9  16.06.2022, 13:55
@manjel49ambaum

Ist genau das gleiche Problem.

Du kannst das aber mit fast jedem Mikrocontroller machen wenn du in C programmierst.

Über den SPI kannst du ja mit unterschiedlichen Chip Select Signalen mehrere Slaves ansprechen.

0
manjel49ambaum 
Fragesteller
 16.06.2022, 13:54

Und bezüglich ineffizienz: ist die zykluszeit des ESP's davon betroffen? oder was meinst du damit? ich möchte möglichst keine Daten im ESP auswerten sondern wirklich nur als Expander verwenden

0
communicator9  16.06.2022, 13:58
@manjel49ambaum

Ja aber du musst ja im ESP auch ein Programm am laufen haben das z.B. die Messungen des AD-Wandlers steuert, die Messergebnisse in Register schreibt, die du dann abholen kannst, usw. die "Expander Software" halt.

Wenn du aber keine Interruptsteuerung für den I2C hast, dann musst du die Schnittstelle ständig abfragen, das ist nicht grad effizient.

0
communicator9  16.06.2022, 14:05
@communicator9

Wenn du nicht viele Daten übertragen willst und der Port Expander keine zeitkritischen Signale bedienen muss, dann kannst du auch über UART kommunizieren.

Das hätte auch den Vorteil dass der Port Expander weiter weg vom Master betrieben werden kann, wenn du dir eine RS232 oder RS485 Schnittstelle draus machst.

0

Hallo,

ja klar kann der esp / arduino / etc auch als i²C-Slave fungieren..der bekommt dann vom raspi (master) die befehle, und darauf kann der Slave reagieren , Funktion abarbeiten, und antworten ..

Woher ich das weiß:Hobby – Zuerst Hobby, dann Beruflich, jetzt beides :)