ESP32-S3-DevKitC-1

Ich habe mich erst vor kurzem entschlossen mich mit dem ESP32 zu beschäftigen. Ich wollte den I2C Bus mit dem S3 nutzen, leider habe ich festgestellt das der keine Standardpins 21 und 22 hat. Wie kann ich den I2C mit dem S3 nutzen?

In dem du die Doku liest!

Du kannst die default Pins nutzen, oder selber deine Wunschpins bestimmen.

S3 GPIO8 SDA, GPIO9 SCL. Am sonsten kann man noch 18, 19 nehmen dan wehre das I2C0

Hier sieht man die Standardeinstellungen der Arduino-IDE an den Pind 8 und 9.

ich meine, man kann beliebige Pins nehmen.

Wire.begin(SDA,SCL);

wobei für SDA und SCL die gewünschten Pins eingesetzt werden. Hab ich schon mal gemacht und funktioniert.

Man kann ja auch einfachen Sketch aufspielen, dan sollte es immer funktionieren, habe bemerkt das die Core 3.xx bei manschen ESP32 andere GPIO nehmen.
Nutze nur IDE 1.8.19 mit dem Core 2.0.17, vor allem als Portable, so mansche Bibliotheken machen noch Probleme mit Core 3.xx.

#include<SPI.h>
#include <Wire.h>

void setup() {
  Serial.begin(115200);
  Serial.println("****** SPI Pins Test *****");
  Serial.print("MOSI = ");
  Serial.println(MOSI);
  Serial.print("MISO = ");
  Serial.println(MISO);
  Serial.print("SCK = ");
  Serial.println(SCK);
  Serial.println( );
  Serial.println("****** I2C Pins Test ******");
  Serial.print("SDA = ");
  Serial.println(SDA);
  Serial.print("SCL = ");
  Serial.println(SCL);

}

void loop() {
  // put your main code here, to run repeatedly:

}

Bei meinem ESP32C3 kommt das raus

****** SPI Pins Test *****
MOSI = 11
MISO = 13
SCK = 12

****** I2C Pins Test ******
SDA = 8
SCL = 9

Hallo,
ich fange gerade erst selbst mit Arduino und ESP32-S3 an.

Der S3 hat 2 unabhängige i2c Schnittstellen die beliebig an GPIO verteilt werden können. Auch mit unterschiedlicher Frequenz meine ich.

Das läuft bei mir:

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <Wire.h>
#define SDA_1 0
#define SCL_1 1

void setup(void) {
  Wire.begin(SDA_1, SCL_1);
  lcd.init();
  lcd.noBacklight();
  lcd.setCursor(1, 0);
  lcd.print("Hello, world !");
  lcd.setCursor(2, 1);
  lcd.print("ESP32-S3 I2C");
}

Gruß
Jochen

Ja, dank der Pinmatrix ist es möglich, die spezielle interne Hardware mit (nahezu) jedem Pin zu verbinden. Daher schrieb ich "Standardeinstellung der Arduino-IDE". Mit einer anderen Entwicklungsumgebung oder einer neueren Arduino-IDE oder einer spezielen Hardwareauswahl könnte es anders sein. Im Zweifel gibt die pins_arduino.h Auskunft :wink:

Ich habe jetzt das ganze getestet, die Standardpins bei dem S3 sind SDA GPIO8 und SCL GPIO9. Leider ist das in der ganzen Doku vom S3 nirgendwo vermerkt. Dank eurem Forum bzw. irgendwo im tiefen des Internets habe ich das herausgefunden. Diese beiden Pins sollte man auf der Doku nachziehen. Danke nochmals für die Unterstützung.

Diese beiden Pins sollte man auf der Doku nachziehen.

Die Pins können/werden bei jedem ESP anders sein!
Dutzende Varianten, es gibt.

Es wurde schon gesagt:

  1. Du kannst sie selber bestimmen
  2. In der betreffenden pins_arduino.h stehen die default Werte für deine Boardauswahl.

Lesen bildet, habe doch geschrieben welsche sind der Standard.

Alleine reicht das nicht, man muss auch verstehen, was man liest.

Und sorgfältig überprüfen, was man liest oder gesagt bekommt.

  1. lesen
  2. testen
  3. goto 1

Fantasie und Hoffnung sind selten gute Freunde in der µC Welt.

Zeig (Link posten) uns doch mal die Doku von der du sprichst.
Evtl. hast du da nur "etwas" übersehen.

Auszug S3 Doku.pdf (261.6 KB)
Hier ist ein Auszug aus der Datei (Original ist 13MB groß).

Warum sollte man das in der Doku nachtragen, wenn die Pins doch frei wählbar sind?
Siehe die von mir verlinkte original Espressiv Wire Dolu.

Ja und ?
Das interessiert bei einem Link absolut nicht. Außer dass durch den Download meine Internetverbindung extremst belastet wird. :wink:
Und der Auszug ist def. nicht hilfreich. Aber egal, wenn du keine richtigen Infos lieferst, bin ich raus.

Und genau diese Info wird man sicher auch in der geheimen Doku finden.
Wo wir wieder beim "nicht Lesen" sind.

Ich finde die ESP-Dokus anspruchsvoller als die Arduino-Dokus. Das wird durch die vielen verschiedenen Varianten der ESP32-Familie nur noch schlimmer. Vermutlich steht die gesuchte Information irgendwo, nur die richtige Stelle zu finden, kann schon etwas anspruchsvoll sein.

Ich habe mir angewöhnt, einen Blick in die packages\esp32\hardware\esp32\2.0.14\variants\esp32s3\pins_arduino.h zu werfen, um Klarheit zu erlangen. Ein Ausschnitt:

static const uint8_t TX = 43;
static const uint8_t RX = 44;

static const uint8_t SDA = 8;
static const uint8_t SCL = 9;

static const uint8_t SS    = 10;
static const uint8_t MOSI  = 11;
static const uint8_t MISO  = 13;
static const uint8_t SCK   = 12;

Auch Serial.print(SDA); Serial.print('\t');Serial.println(SCL); kann helfen :wink: