Forum: Mikrocontroller und Digitale Elektronik Super Mini ESP32-C3 Board


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hans L. (holzwurm56)


Lesenswert?

Hallo,
ich habe auf Aliexpress ein kleines Board gefunden und will da ein 
bißchen
experimentieren. Ich habe mal präventiv ein paar bestellt, die haben ja
bis zu acht Wochen Lieferzeit. In www gibt es unterschiedliche 
Informationen
über die Funktionen der Pins. Weiß jemand welche Pins man als Input und/
oder Outputs und welche Pins Interrupts verarbeiten können?
https://de.aliexpress.com/item/1005006054605298.html?spm=a2g0o.order_list.order_list_main.35.3b085c5fl1BHSj&gatewayAdapt=glo2deu
Vielen Dank für jede Antwort
Hans

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Schaltplan im Anhang, Datenblatt findest du hier:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/index.html

Beachten: Da drinnen werkelt ein Risc-V Core, Toolchain ist also eine 
andere als bei bisherigen ESP32.

Sind aber nette Teile, und dass sie direkt USB unterstützen, und das 
Board deshalb den CH340 o.Ä. einsparen kann ist beim Stromsparen auch 
von Vorteil.


Ach ja, die eigentliche Frage: Jeder GPIO-Pin ist interruptfähig.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

da kopiert wieder jemand vom anderen.
SeeedStudio bietet schon länger diesen Formfaktor.
https://www.seeedstudio.com/Seeed-XIAO-ESP32C3-p-5431.html
https://www.seeedstudio.com/MCU-c-1946.html?

von Stephan S. (uxdx)


Lesenswert?

Die lesen sich recht interessant, es gibt sogar schon MicroPython dafür.

von Stephan S. (uxdx)


Lesenswert?

Ich habe mal ein Mini-Benchmark ESP32-WROOM gegen ESP32-C3 laufen 
lassen:

Micropython 1.21.0 auf beiden Boards installiert und per REPL Python 
laufen lassen:
1
for i in range(10000000):   # 10^7 Durchläufe
2
    a=3**3
ESP32-WROOM brauchte 57 Sekunden, ESP32-C3 47 Sekunden, (evtl ist das 
Ergebnis nicht repräsentativ)

von Veit D. (devil-elec)


Lesenswert?

Hallo,

dein ESP32C3 Board sollte gleich dem von XIAO sein. Deswegen frage ich 
einmal ob bei dir I2C in Hardware funktioniert oder nicht? "Wir" haben 
im Arduino Forum jemanden der bekommt sein I2C Display mit SSD1306 und 
u2g8 Lib per I2C Hardware nicht zum laufen. Nur per Software I2C. Mit 
Hardware I2C scheint es komplett einzufrieren. laut Aussage. Er sieht an 
den I2C Pins auch keine Signale.
Die Frage wäre funktioniert bei dir irgendwas mit Wire.h Hardware I2C 
(RTC, Sensor, Display, etc.) und Ausgaben auf der Seriellen? Wenn ja 
könnte man den ESP32C3 als Problem ausschließen.

von Stephan S. (uxdx)


Lesenswert?

Mein Board habe ich bei Ali gekauft 
https://www.aliexpress.com/item/1005005955099518.html
Ich arbeite nicht mit Arduino-... sondern mit Micropython.
Tatsächlich kann man den Hardware-I2C nicht nutzen, SoftI2C geht 
einwandfrei.
1
MicroPython v1.21.0 on 2023-10-06; ESP32C3 module with ESP32C3
2
Type "help()" for more information.
3
>>> 
4
>>> from machine import Pin, I2C
5
>>> i2c = I2C(scl=Pin(4), sda=Pin(3), freq=10000)
6
Warning: I2C(-1, ...) is deprecated, use SoftI2C(...) instead
7
>>> from machine import SoftI2C
8
>>> i2c = SoftI2C(scl=Pin(4), sda=Pin(3), freq=10000)
9
>>> i2c.scan()
10
[60]
11
>>>
Auch die GPIOs funktionieren.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

Danke für den Test bzw. Antwort.

von Philipp K. (philipp_k59)


Lesenswert?

Der esp32c3 ist kein herkömmlicher Esp32 (240mhz dual Core), sondern ein 
Singlecore risc-V, Soweit ich ich mich erinnere etwas mehr als die 
hälfte Taktrate.

Das mit dem ssd1306 gab es auch schon auf Facebook, der erste mit Ahnung 
der das ausprobiert hatte, hat es dann doch schnell zum Laufen bekommen.

Das Problem ist das man keinen echten Serial Port als Debug Port hat, da 
kommen viele dann nicht weiter.

Der C3 hat einfach nur kleine Unterschiede im i2C.

von Stephan S. (uxdx)


Lesenswert?

Stephan S. schrieb:
>>>> i2c = SoftI2C(scl=Pin(4), sda=Pin(3), freq=10000)

P.S. Es funktioniert auch mit freq=100000 und 400000

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich liebe solche Antworten.

#Philipp K. schrieb:
> Der esp32c3 ist kein herkömmlicher Esp32 (240mhz dual Core), sondern ein
> Singlecore risc-V, Soweit ich ich mich erinnere etwas mehr als die
> hälfte Taktrate.
Das wissen wir schon.

> Das mit dem ssd1306 gab es auch schon auf Facebook, der erste mit Ahnung
> der das ausprobiert hatte, hat es dann doch schnell zum Laufen bekommen.
Und wie hat er es zum Laufen gebracht? Doch nicht etwa mit Software I2C 
...

> Der C3 hat einfach nur kleine Unterschiede im i2C.
Das wären genau? Das der RISC-V Kern alles intern irgendwie emuliert?

von Philipp K. (philipp_k59)


Lesenswert?

Veit D. schrieb:
> Das wären genau? Das der RISC-V Kern alles intern irgendwie emuliert

Also das weiß ich jetzt nicht, er hat aber ein i2c clock und Data Modul 
die eigenständig arbeiten.

Wieso sollte das simuliert sein, und wenn ja wo ist dann das Problem?

von Veit D. (devil-elec)


Lesenswert?

Hallo,

also mal Butter bei de Fische. Was weißt du wirklich? Hören sagen hilft 
hier nicht weiter. Das Datenblatt zum ESP32C3 hatte ich schon gelesen. 
Hilft mir bzw. dem anderen eigentlichen User mit XIAO ESP32C3 nicht 
weiter.
Wo das Problem ist? I2C in Hardware funktioniert nicht bzw. blockiert 
andere Dinge wie die Serielle. Weil Software I2C und Serielle 
funktionieren. Das ESP Core Package für die Arduino IDE stammt von 
Espressif selbst. Jetzt kann darin ein Fehler sein oder der RISC-V Kern 
hat ein Problem. Letzteres glaube ich jedoch weniger. Ich hatte gehofft 
jemand sagt das Problem liegt genau da,  Lösung x führt zum Erfolg oder 
es gibt dafür keine Lösung. Alles ist möglich. Ich bin nur neugierig, 
ich selbst habe das Teil nicht.

von Peter A. (Firma: Privat) (retep263)


Lesenswert?

also es gibt eine zusätzlich
Release binaries for Tasmota firmware 13.2.0 on ESP32
für den esp32c3 risc-v , dann aber läuft so manches andere nichtmehr.
und der aus FB behält seine info wie er das zum laufen bekommen hat als 
GEHEIM.
das hat er extra so beschrieben !!!
der ist aber auch einer der professionell programiert.

auch beschreibt er die probleme mit dem seriellen monitor.
allerdings auch ohne eine lösung der probleme.

dann gibt es die brzo_i2c-master.zip , ist aber auch keine sichere 
sache.
denn die ist eigentlich für de esp8266 geschrieben , und in wiefern die 
sicher auf dem esp32c3 risc v läuft steht in den sternen.

für privat als hobby ist das bestimmt so okay , wenn das ganze 
allerdings in eine fixe verkaufbare lösung werden soll , vergisses.

manchmal läuft das ganze problemlos an , manchmal halt nicht
und jedes mal zwischen boot und reset herum zu spielen ???

komisch ist nur  !!! das keiner der Verkaufsfirmen ein beispiel  für das 
Problem veröffentlicht.
keiner bietet ein beispiel esp32c3 risc-v und ssd1306 ohne extra 
hardware an

beschriebe probleme mit dem prozessor und der i2c gibt es zu haufe  in 
den foren , ohne echte lösung

: Bearbeitet durch User
von Peter A. (Firma: Privat) (retep263)


Lesenswert?

das problem mit dem esp32c3 risc v prozessor ist das er keine der 
beschrieben ports , spi , i2c , tx/rx seriel HW ,in wirklichkeit hat !!!
alles nur per Software in einem task mit den gpio's simuliert.
genau deshalb gibt es diese probleme , sowohl mit der i2c als auch mit 
der spi und dem tx/rx als externe rs232.
aber auch die serielle über den usb , ist nur eine JTAG , somit auch nur 
software. und da gibt einer der china ingenieuren zu erkennen das nicht 
sicher ist wiegut das programiert ist.

von Philipp K. (philipp_k59)


Lesenswert?

Veit D. schrieb:
> also mal Butter bei de Fische.

Ich befürchte das es jemand der Ahnung hat mit den ersten einschlägigen 
Google Ergebnissen oder Beachtung der vorhandenen issues der arduino-esp 
Repos in 20 Minuten hinbekommt.

Nur tappt man da ohne ein paar Tests leider im Dunkeln wenn man helfen 
möchte und das gerät nicht hat. I2c ist halt kein Hexenwerk.

Es kann halt soviel falsch laufen.

Peter A. schrieb:
> und der aus FB behält seine info wie er das zum laufen bekommen hat als
> GEHEIM.

Das war ironisch weil es wohl zu einfach ist, so habe ich das 
verstanden.

von Dirk S. (dirkst)


Lesenswert?

Gruss

 Ich frag mal.
 Und wie sieht es beim ESP32C3
 für eine praktische Anwendung
 mit ADC, BLE und Smartphone aus?
 Informell bin ich bei den ESPs
 und
 ADC schon distanziert.
  Geht aber auch extern.
 Das microPython steht bei mir im
 Interesse,
 ( C(++) kann es durchaus auch
  sein.)

Dirk St

von Peter A. (Firma: Privat) (retep263)


Lesenswert?

anbei der FB Beitrag zu dem Display problem

https://www.facebook.com/groups/808892179257035
XIAO ESP32-C3 I2C Oled

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich vermute der geheime Geheimprogrammierer hat das mit der Espressif 
IDE programmiert und mit der API dafür.
https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/api-reference/peripherals/i2c.html
https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32c3/api-reference/peripherals/i2c.html
Gut zu wissen das es möglich ist wenn man weiß wie.

von Veit D. (devil-elec)


Lesenswert?

Dirk S. schrieb:
> Gruss
>
>  Ich frag mal. Und wie sieht es beim ESP32C3 ...

Ich würde ja wenn dann den ESP32S3 nehmen. Der hat den Xtensa LX7 "ESP 
Standard-Core".

von Stephan S. (uxdx)


Lesenswert?


von Philipp K. (philipp_k59)


Lesenswert?

Stephan S. schrieb:
> This document is not updated for ESP32-C3 yet.

doch isses..bzw. gibts auch schon im Repo.. kommt man irgendwo ganz 
unten drauf.

habe ich zwar mal drübergeschaut, konnte aber keine unterschiede 
finden.. da ich den nicht habe, auch nicht speziell gesucht....

: Bearbeitet durch User
von Philipp K. (philipp_k59)


Lesenswert?

Da ich den Esp32-C3 sowieso mal ausprobieren wollte probierte ich das 
mit dem Display am Xiao-ESP32-C3.

Das ganze war in 5 Minuten erledigt..

Ich brauchte das Board nur auspacken und 4 Jumper Kabel zum SSD1306 
Display verstrippen.

Dazu U8g2 HW-I2C Democode den ich mal etwas abgeändert habe genutzt (Ich 
vermute mal das klappt auch ohne abändern.)

Es funktionierte, welch ein Wunder!

Was etwas Übung forderte war über die SMD-Taster zwischen den Pin 
Headern in den Flashmode zu kommen.. ich musste doppelt resetten, bzw. 
das Board stromlos machen damit das Programm startete, trotz des 
SW-Reset am Ende vom Flashtool.

von Dieter S. (hotsystems)


Lesenswert?

Philipp K. schrieb:
> Was etwas Übung forderte war über die SMD-Taster zwischen den Pin
> Headern in den Flashmode zu kommen.. ich musste doppelt resetten, bzw.
> das Board stromlos machen damit das Programm startete, trotz des
> SW-Reset am Ende vom Flashtool.

Entspricht eigentlich allen "nackten" ESP's.

Reset drücken und festhalten.
Boot drücken und festhalten.
Reset loslassen.
Boot loslassen.
Flashen....danach Reset drücken und er läuft. ;)

von Dieter S. (hotsystems)


Lesenswert?

Veit D. schrieb:
> "Wir" haben
> im Arduino Forum jemanden der bekommt sein I2C Display mit SSD1306 und
> u2g8 Lib per I2C Hardware nicht zum laufen. Nur per Software I2C. Mit
> Hardware I2C scheint es komplett einzufrieren. laut Aussage.

Mittlerweile gibt es da aber eine Lösung.
Also u2g8 funktioniert auch am ESP32-C3 mit I2C Hardware.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Dieter S. schrieb:
> Veit D. schrieb:
>> "Wir" haben
>> im Arduino Forum jemanden der bekommt sein I2C Display mit SSD1306 und
>> u2g8 Lib per I2C Hardware nicht zum laufen. Nur per Software I2C. Mit
>> Hardware I2C scheint es komplett einzufrieren. laut Aussage.
>
> Mittlerweile gibt es da aber eine Lösung.
> Also u2g8 funktioniert auch am ESP32-C3 mit I2C Hardware.

Habe ich gelesen.  :-)  Sehr schön.

von Steve van de Grens (roehrmond)


Lesenswert?

Dieter S. schrieb:
> Reset drücken und festhalten.
> Boot drücken und festhalten.
> Reset loslassen.
> Boot loslassen.
> Flashen....danach Reset drücken und er läuft

Das ist sooooo kompliziert, gibt es dafür keine App?

von Dieter S. (hotsystems)


Lesenswert?

Steve van de Grens schrieb:
> Das ist sooooo kompliziert, gibt es dafür keine App?

Nö, aber man kann sich dafür zertifizieren lassen.

von Jack D. (jack_d908)


Lesenswert?

Die Probleme mit der Hardware-I2C lassen sich leicht lösen, wenn man 
sich das ESP32C3-Datenblatt ansieht. Darin heißt es, dass es sich bei 
den I2C-Leitungen um offene Drain-Pins handelt. Diese Pins müssen an VCC 
hochgezogen werden, damit sie ordnungsgemäß funktionieren.
Beim XIAO ESP-C3 sind keine Pullups mit den Standard-I2C-Pins verbunden 
und diese müssen daher vom Benutzer hinzugefügt werden. Laut Espressif 
sollen die Werte bei einer Geschwindigkeit von 400kHz bei etwa 2K und 
bei einer Geschwindigkeit von 100kHz bei 5K liegen.
Der ESP32-C3-(super)mini verwendet Pull-up-Widerstände mit einem Wert 
von 10K, die auf den Standard-I2C-Leitungen montiert sind. Hardware-I2C 
wird hier wahrscheinlich funktionieren, aber nur für niedrige 
Geschwindigkeiten (<50 kHz) und kurze Kabel.
Es ist möglich, die I2C-Pins auf andere Pins zu verlegen, aber man 
sollte dann die benötigten Pull-up-Widerstände hinzufügen.

von Rainer W. (rawi)


Lesenswert?

Jack D. schrieb:
> Darin heißt es, dass es sich bei
> den I2C-Leitungen um offene Drain-Pins handelt.

Das ist bei I2C so und der ESP sollte da keine Ausnahme machen.

> Diese Pins müssen an VCC hochgezogen werden, damit sie
> ordnungsgemäß funktionieren.

Das steht schon so in der I2C-Spezifikation (Kap. 3.1.1 SDA and SCL 
signals). Der ESP32C3 kann da nichts für. Das ist seit 42 Jahren so.
https://www.nxp.com/docs/en/user-guide/UM10204.pdf

: Bearbeitet durch User
von Stephan S. (uxdx)


Lesenswert?

Bei einem ESP32-C3 von Ali sind an GPIO8 und GPIO9 jeweils 10k nach +3.3 
verbaut

von Rainer W. (rawi)


Lesenswert?

Stephan S. schrieb:
> Bei einem ESP32-C3 von Ali sind an GPIO8 und GPIO9 jeweils 10k nach +3.3
> verbaut

Halt ein fauler Kompromiss, der für hohe Geschwindigkeit und lange 
Leitungen nichts taugt, aber bei anderweitiger Verwendung der Pins meist 
nicht stört. 10kΩ bei 3.3V ist für I2C schon heftig.

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Die 10k sind ein Kompromiss... diese "Arduino"-Platinchen werden gerne 
mit ähnlichen "Arduino"-I²C-Boards verknüpft, und dort sind auch jeweils 
10k Pull-Up drauf.
d.H. alles fein, zusammen sind das die geforderten 5k bei 100kHz.
Wenn du zuviele von diesen Breakout-Boards parallel schaltest geht's 
halt nicht mehr.

Und wenn du eigene Hardware/Platinchen über I²C anflanschen willst, 
musst du dich selber um die Pull-Ups kümmern.

von Rainer W. (rawi)


Lesenswert?

Εrnst B. schrieb:
> ... d.H. alles fein, zusammen sind das die geforderten 5k bei 100kHz.
> Wenn du zuviele von diesen Breakout-Boards parallel schaltest geht's
> halt nicht mehr.

Wo hast du diese komische Forderung nach 5kΩ her. Damit bist du bei 3,3V 
mehr als einen Faktor 4 über dem laut Spezifikation zulässigen minimalen 
Wert und weit unter dem maximalen, der dann von deinem Aufbau abhängt.

In der Abbildung in der I2C Spezifikation zum maximalen Pull-Up siehst 
du, dass der Widerstand von der kapazitiven Last abhängt und weit höher 
sein kann (I2C-Specifikationen Rev7 (*) in Figure 41. Rp(max) as a 
function of bus capacitance im Kap 7.1 Pull-up resistor sizing auf S.50)

Um bei 3.3V die zulässigen 3mA zu überschreiten, müsstest du schon 10 
oder mehr Busteilnehmer mit 10kΩ auf den Bus hängen. Das dürfte in der 
Breakout-Boards-Gemeinde dann doch schon eher selten sein.
(I2C-Specifikationen (*) Fig. 42 im Kap 7.1 Pull-up resistor sizing, 
S.50)

Die 3mA sind der Mindestwert, den ein Busteilnehmer im Fast- oder 
Standard-Mode schaffen können muss, d.h. selbst wenn der Strom höher 
ist, ist das noch lange keine Garantie, dass nichts mehr geht.

Diejenigen, die mehr Teilnehmer auf den Bus hängen wollen, müssen dann 
zum Lötkolben greifen und ein paar Pull-Ups entfernen.

*) https://www.nxp.com/docs/en/user-guide/UM10204.pdf

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Rainer W. schrieb:
> Wo hast du diese komische Forderung nach 5kΩ her.

Hierher, ohne die Quellen weiter zu kontrollieren:

Jack D. schrieb:
> Laut Espressif
> sollen die Werte bei einer Geschwindigkeit von 400kHz bei etwa 2K und
> bei einer Geschwindigkeit von 100kHz bei 5K liegen.

von Ran (ran_12)


Angehängte Dateien:

Lesenswert?

Meine Lieben,
ich gebe gerne meinen Senf dazu, weil ich auch diese hübschen
"ESP32C3 Super Mini" Boards bei Aliexpress gekauft habe:
Die wichtigste Info und die häufigste Fehlerquelle ist m.E.,
dass das Pinout-Diagramm praktisch überall falsch ist (es sind sogar
mehrere verschiedene im Umlauf), auch auf den Seiten der
Aliexpress-Händler.
Das "Drüberretten" mit Soft-I2C ist völlig unnötig:

Nehmt das Pinout aus dem Schaltplan (rechts oben).
Das stimmt.

LG Ran

PS:

von Mik L. (mik_l)


Lesenswert?

... bei mir hat sich folgendes Pinout als stimmig erwiesen:

https://microsoft.github.io/devicescript/devices/esp32/esp32c3-supermini

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
Noch kein Account? Hier anmelden.