Portenta H7 mit Nextion Serielle Schnittstelle

Hallo zusammen ich bräuchte mal Hilfe.

Ich habe einen Portenta H7 und ein Nextion Display und würde gerne Serielle Strings einlesen und auch demensprechen auf dem Display Texte ausgeben.

Komisch ist wenn ich es an einen Arduino Mega anschliese über Schnittelle 0,1 dann funktioniert es.

Ich würde gerne bei dem Portenta die UART 1 oder UART 2 nutzen.

Kann mir vielleicht jemand einen Code zeigen wie man fortlaufend ohne Fehler einlesen kann? hab das noch nie gesehen.

Vielen Dank

void setup() {
  // STARTE COMMUNICATION
  Serial.begin(9600);
  Serial1.begin(9600);
  Serial2.begin(9600);
  Serial3.begin(9600);
 


  // DEFINIERTE E/As
  pinMode(ESTOPIN, INPUT_PULLUP); 
  pinMode(KEYSWITCH, INPUT_PULLUP); 
  pinMode(RESETEXT, INPUT_PULLUP); 
  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT); 
  pinMode(OUT3, OUTPUT); 
  pinMode(OUT4, OUTPUT); 
  pinMode(OUT5, OUTPUT); 
  pinMode(OUT6, OUTPUT); 
  pinMode(OUT7, OUTPUT); 
  pinMode(OUT8, OUTPUT); 
} 


//#####################################################################################################
//AUFRUF PROGRAMM
//#####################################################################################################

void loop() {

    delay(500);
	// Falls es was zu lesen gibt, lesen wir es. Wenn nicht, dann eben nicht
	if(Serial1.available())
	{                                   					//++++++++++++++++++++++++++++++++++++++++++
		String data_from_display="";                        // LADE SCHNITSTELLE UND SCHREIBE STRING
														    //++++++++++++++++++++++++++++++++++++++++++
		while(Serial1.available())
		{                                
			data_from_display += char(Serial1.read());
		}
		Serial.println(data_from_display);
		sendData(data_from_display);
	}

	ESTOPIN =     digitalRead(5);                             	//+++++++++++++++++++++++++++++++++++++++++++
	KEYSWITCH =   digitalRead(1);                             	// EINLESEN VON EINGÄNGEN
	RESETEXT=     digitalRead(2);                               //+++++++++++++++++++++++++++++++++++++++++++
 
	delay(30);															                    //+++++++++++++++++++++++++++++++++++++++++++
  if(KEYSWITCH == HIGH){
    Serial1.print("t4.pco=0");                               
	  Serial1.write(0xff);
	  Serial1.write(0xff);
	  Serial1.write(0xff);                                	      // FUNKTION MELDUNG KEYSWITCH OFF/ON                         
    Serial1.print("t4.pco=63488");                             //+++++++++++++++++++++++++++++++++++++++++++
	  Serial1.write(0xff);
	  Serial1.write(0xff);
	  Serial1.write(0xff);
	  Serial1.print("t4.txt=\"OFF !\"");                          
	  Serial1.write(0xff);
	  Serial1.write(0xff);
	  Serial1.write(0xff);
    delay(100);

Wieso ist das komisch ?
Bei mir funktioniert es auch am Mega, also ganz normal.

Was genau geht denn am Portenta nicht ?
Hast du bedacht, das der Portenta mit 3,3 Volt arbeitet und das Nextion mit 5 Volt ?

Der Portenta sitzt auf dem breakout board und sie werden beide mit 5V USB gespeist.
Ich versteh nur nicht warum am UART1,2 keine Signale kommen

Bitte keine Doppelpostings..

Es geht hier nicht um die Speisespannung, sondern um die Spannung der Pins, also die Spannung die vom Controller verarbeitet wird.

Das heißt es kann so gar nicht funktionieren wenn die Spannung am Nextion 5V und die TX/RX Leitung am Portenta 3,3V brauch?

Genaueres dazu findest du in den zugehörigen Datenblättern.
Ich kenne den Portenta weiter nicht, da ich den nicht verwende.

Und deinen Sketch kann ich nicht prüfen, da dieser unvollständig ist.

Kannst du mal den Code überfliegen ob du etwas auffälliges siehst ich probiere die ganze Woche schon daran rum... ich komm nicht drauf..

Wo hast Du das her?
unter techspecs sehe ich das nicht.

Da steht eindeutig 3.3 V

Das sind die Daten vom Nextion Display das es mit 3,3V und 5V arbeiten kan.
Der Portenta H7 steckt in 5V USB momentan, weil ich es im Büro nicht anderst machen kann. Der Portenta H7 läuft mit 3,3V

Der Portenta kann nur 3.3V.
Der Nextion sollte auch nur mit 3.3V ausgeben. Somit ist das Hardwaresetup darauf anzupassen.

Und für Dein einlesen schreib ich Dir mal was.

Laut Nextion erkennt er das automatisch, also am Display selbst kann ich in den Settings dazu leider nichts eintragen.
Ich weiß nur das das Display mit 3V auf High umschaltet
komische Sache.

Das mit dem Einlesen sollte so sein, das er Strings sauber einließt max 10Zeichen Input
Output Text maximal 40 Zeichen

Versuch den mal:

// Forensketch
// https://forum.arduino.cc/


byte idx;
constexpr byte maxChars {20};
char data_from_display[maxChars] = {'\0'};
void setup()
{
  Serial.begin(115200);
  Serial1.begin(9600);
  Serial.println(F("\r\nStart...\r\n"));
}

void  loop()
{
  if (Serial1.available())
  {
    char myChar = Serial1.read();
    if (!isControl(myChar))
    {
      data_from_display[idx] = myChar;
      idx++;
    }
    else if (!idx)
    {
      // sendData(data_from_display);
      Serial.println(data_from_display);
      memset (data_from_display, '\0', maxChars);
      idx = 0;
    }
  }
}

Der liest auf Serial1 ein und wenn der String zu Ende ist kommt normalerweise mindestens ein Steuerzeichen - dann gibts die Ausgabe auf dem SerMon.
(Ohne Überlaufsperre - also sollten die ankommenden Strings auch nciht länger als 19 Zeichen sein)

Habs mal reingeladen, tut sich nichts auch kein Serieller Monitor.

hab jetzt mal den billigsten Sketch gebaut. Und das Display bekommt mal Daten.
Vom Display zum Arduino tut noch nicht damit.

Aber ich will das schon super einlesen können ohne Bugs..
Ich probiere da jetzt schon ewig dran rum, bestimmt das ganze Forum durchforstet aber keine richtige Info wie man es "RICHTIG" macht. Ich will auch auf den Portenta nur den M7 Core der M4 ist überflüssig für mich vorerst.

void setup() {
 Serial.begin(9600);
 Serial1.begin(9600);
 Serial.println("USB");
}

void loop() {
 Serial.println ("SENDING...");
 Serial1.print("SYSSTATE.txt=\"DISPLAY BEKOMMT DATEN !\"");          //TEXTFENSTER SYSSTATE (SYSTEMFENSTER)                
	  Serial1.write(0xff);
	  Serial1.write(0xff);
	  Serial1.write(0xff);
    delay(100);

}

Achte drauf:

Entweder änderst das im Code oder im Sermon unten rechts.

Wieso komisch ?
Dein Problem ist immer noch, der Portenta verträgt keine 5 Volt am Pin.
Ob der das lange überlebt, k.A.

Ok ich check das mal kurz

Das ist eine sehr gute frage
Aber ich kann ja kein Widerstand in die RX/TX Pins zwischen Nextion und Portenta löten oder?
Wenn ja wie hoch müsste der den sein?

Ich habe bis jetzt nur mit 5V direkt gearbeitet, ich will das Ding in eine kleine Steuerung mit Wifi einbinden da hat ein Mega Board klein platz.

Der Portenta steck gerade auf einen Breakoutboard das ich einfach besser dran komme

Geht leider auch nicht