Serial1 oder hardwareserial ESP32-c3 mini

Guten Tag
viele Posts sind des Lesers Totale Verwirrung !
der ESPc3 mini hat ja laut pinout eine 2ten Serial

static const uint8_t TX = 21;
static const uint8_t RX = 20;

kann ich den einfach mit

Serial1.begin(115200);

AKTIVIEREN oder brauxce ich die umgehung mit

#include <HardwareSerial.h>

HardwareSerial MySerial1(1);

Zu der Numerierung der Hardware Serials habe ich auch nichts gefunden !!
ist der interne nicht der NULL und dann der 2te der 1er
oder wie in einigen Beispielen

Serial.begin(9600);
   MySerial1.begin(9600, SERIAL_8N1, 20, 21);
   #MySerial1.print("MySerial0");

Serial1.begin(9600);
sollte doch die internen RX=20;TX=21 snsprechen ?

Bitte um Aufklärung der leichten verwirrung.
DANKE

Selbst habe ich die noch nicht verwendet, aber HardwareSerial brauchst du. Da es aber die einzige erste serielle ist, wird es Serial0 sein.

Nachtrag:
Im Schaltbild findest du aber noch GPIO0 und GPIO1 (U1TXD + U1RXD), die könntest du als Serial1 nutzen. Auch die habe ich noch nicht als Serial verwendet.

@bmbbsr
Schau hier

DANKE
Frage gibt es dieses Schaubild auch fĂĽr die ESP serie
https://docs.arduino.cc/language-reference/de/funktionen/communication/serial/

Serial1 sprichst du einfach mit z.B.

Serial1.begin

an.
Evtl. musst du die Pins mit ĂĽbergeben. Ich denke hier findest du ein paar Angaben.

aber pass mit den Pins auf, mach dir am besten mal einen kurzen Sketch uns lass dir RX, RX0, RX1, TX, TX0, TX1 ausgeben damit du siehst, wie sie in deiner Platform Version bei deinem gewählten Board wirklich definiert sind!

In der Datei packages\esp32\hardware\esp32\3.2.1\cores\esp32\HardwareSerial.cpp wirst Du fĂĽndig. Eventuell nutzt Du eine andere Core-Version als 3.2.1.

Versuche Serial1.begin(115200);. Wenn der Compiler meckert, ist Serial1 nicht bekannt. Wenn sich an GPIO0 und GPIO1 nichts tut, muĂźt Du noch RX1 und TX1 mit ĂĽbergeben.

Mit "uPesy ESP32C3 Mini" wird folgendes Programm compiliert:

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("\nStart Test serielle Schnittstelle");
  Serial1.begin(115200);

  Serial.print("RX1: "); Serial.println(RX1);
  Serial.print("TX1: "); Serial.println(TX1);
}

void loop() {}

Serial1 ist also bekannt.

1 Like

Ist doch im Link auch gezeigt :wink:

DANKE das wird so manchen helfen

und hier gleich alle 3 FĂĽr den ESP32 !!

void setup() {
  Serial.begin(9600);//com to usb-PC
  delay(1000);
  Serial.println("\nStart Test serielle Schnittstelle");
  Serial1.begin(9600);
  Serial2.begin(9600);
  delay(100);
  Serial2.flush();
  Serial.println("serial 0");
  Serial.print("RX: "); Serial.println(RX);
  Serial.print("TX: "); Serial.println(TX);

  Serial.println("serial 1");
  Serial.print("RX1: "); Serial.println(RX1);
  Serial.print("TX1: "); Serial.println(TX1);
  
  Serial.println("serial 2");
  Serial.print("RX2: "); Serial.println(RX2);
  Serial.print("TX2: "); Serial.println(TX2);

}

void loop() {}

Nicht alle ausgegebenen Pins sind auch tatsächlich nutzbar. So sind in diesem Beispiel GPIO09 und GPIO10 anderweitig belegt, so daß die Standardbelegung von Serial1 nicht nutzbar ist. Hier müssen andere Pins verwendet werden. Serial2 hingegen kann als Standard verwendet werden: