STM32U599 reagiert nicht: Keine Funktion auf dem Custom Board

OP #7428146
Lesenswert?

Hallo Leute,

ich besitze ein Custom Board mit dem neuen U599ZJT6Q LQFP144 und habe testweise einen GPIO auf den Startpegel HIGH gesetzt. In einer while-Schleife toggelt dieser Pin jede Sekunde. Das Programm wird erfolgreich auf den Chip geladen, was im CubeProgrammer ersichtlich ist. Allerdings bleibt der Pin auf LOW und es findet keine Schaltung statt. Ich habe ebenfalls den Boot0 auf den Flashspeicher eingestellt. Zusätzlich habe ich sowohl den internen Oszillator als auch einen externen Oszillator ausprobiert, jedoch ohne Erfolg. Hat jemand eine Idee, woran es liegen könnte, dass der Chip überhaupt nicht reagiert?

#7428151
Lesenswert?

Anatol G. schrieb:

Hat jemand eine Idee, woran es liegen könnte, dass der Chip überhaupt nicht reagiert?

Da wirst du uns etwas mehr zeigen müssen als nur blumige Worte zu deiner Software. Schaltplan und Minimal-Programm zum Nach- vollziehen deines Problem wäre das Mindeste. Auch das "Custom Board" macht den unwissenden Beobachter erst mal nachdenklich und mistrauisch .... das ist bis jetzt nur Herumstochern im Nebel.

#7428160
Lesenswert?

Deine Test Pins kann ich im Schaltplan nicht finden. Vielleicht ist es noch zu früh am Morgen.

1
  while (1)
2
  {
3
    printf("Hello world");
4
    HAL_GPIO_WritePin(test2_GPIO_Port, test_Pin, GPIO_PIN_SET);
5
    HAL_Delay(1000);
6
    HAL_GPIO_WritePin(test2_GPIO_Port, test_Pin, GPIO_PIN_RESET);
7
    HAL_Delay(1000);
8
    /* USER CODE END WHILE */
9
  }

Hier beschreibst du <test2_GPIO_Port> aber benutzt <test_Pin>. Soll das so sein? Also 2 vs. "nicht 2"?

Es fehlt die *.h Datei (Definition der Ports und Pins, üblicher- weise main.h) die das klären könnte.

Beitrag #7428197 wurde von einem Moderator gelöscht.
Gast #7428205
Lesenswert?

Wastl schrieb:

mit step into komme ich bis zu diesem code und bei timeout-- hänge ich fest.

Das ist schwer nachvollziehbar, denn "timeout" kommt in deinem Quelltext nicht vor.

Führe das Programm schrittweise aus, eine Funktion nach der anderen (Step over), um zu sehen, welche hängt oder abbricht.

Dann machst du das nochmal, gehst aber in die problematische Funktion rein (Step into). Bis du die Zeile(n) gefunden hast, die das Problem auslöst. Berichte, was du gefunden hast.

OP #7428206
Lesenswert?

Hier bin ich über step-into stehen geblieben und habe die while schleife ausgeblendet. dann schaltet er zumindest auf HIGH

1
void Error_Handler(void)
2
{
3
  /* USER CODE BEGIN Error_Handler_Debug */
4
  /* User can add his own implementation to report the HAL error return state */
5
  __disable_irq();
6
//  while (1)
7
//  {
8
//  }
9
  /* USER CODE END Error_Handler_Debug */
10
}

dann bleibe ich aber im HAL_GetTick stecken beim aufrufen vom Delay

1
__weak uint32_t HAL_GetTick(void)
2
{
3
  return uwTick;
4
}
Angehängte Dateien:
Gast #7428221
Lesenswert?

Anatol G. schrieb:

Wo finde ich das?

In deinem Quelltext und im Reference manual.

HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1)

https://www.st.com/resource/en/reference_manual/rm0456-stm32u5-series-armbased-32bit-mcus-stmicroelectronics.pdf (Kapitel 7.3.3)

Oh, ich sehe gerade dass bei diesem Modell auch eine "latency" für das RAM eingestellt werden muss (Kapitel 6.3.4). Das scheint in deinem Quelltext zu fehlen.

Gast #7428245
Lesenswert?

Für "wait state 0" hat CubeMX wohl keinen Code generiert, weil das die Standardvorgabe ist.

Und FLASH_LATENCY_1 passt wohl denn du nutzt "Vcore range 4" mit 16 MHz.

Die Latencies sind dann wohl nicht deine Problemursache. Ich hatte darauf getippt, weil das bei meinen ersten Versuchen (mit anderen STM32 Modellen) oft der Knackpunkt war, wenn das Programm ein Stück weit erfolgreich lief und dann plötzlich abbrach oder andere Fehlfunktionen zeigte.

OP #7428308
Lesenswert?

Also Ziel, mit dem Chip ist es primär einen 800x480px Display zu betreiben (ohne touch). Habe nun den Code neu gemacht, nur mit dem LTDC und Touchgfx. Ich habe wieder die eine while-schleife herausgenommen und der Display leuchtet weiß. Also die zugehörigen IOs werden geschaltet (im touchgfx habe ich einen roten Hintergrund mit einem blauen Button in der Mitte).

inzwischnen bleibe ich im code hier hängen:

1
/**
2
  * @brief This function handles Hard fault interrupt.
3
  */
4
void HardFault_Handler(void)
5
{
6
  /* USER CODE BEGIN HardFault_IRQn 0 */
7

8
  /* USER CODE END HardFault_IRQn 0 */
9
  while (1)
10
  {
11
    /* USER CODE BEGIN W1_HardFault_IRQn 0 */
12
    /* USER CODE END W1_HardFault_IRQn 0 */
13
  }
14
}

Also ich hatte mal das F746 board mit touchgfx hinbekommen(youtube: How to integrate TouchGFX in a custom board (The long way round)), aber da war der Code noch so das man den Task Manuel einfügen musste. Beim neun Chip habe ich das so verstanden, dass das automatisch geht, aber leider zeigt dieser nicht an. Muss ich den Task doch irgendwie starten?

Angehängte Dateien:
OP #7428970
Lesenswert?

VDD11 ist nur für USB und DSI zuständig.

Ich hatte aber noch einen Fehler der Display on/off mus auf HIGH. Jetzt ist es richtig, dass die Hintergrundbeleuchtung an ist und das Display schwarz ist. Leider zeigt das Display immer noch nicht an, was ich im touchgfx eingestellt habe (roter Hintergrund)

OP #7432655
Lesenswert?

Also, ich hatte Kontakt mit ST, und sie sagten mir, dass es kein Problem sein sollte, wenn ich den LDO nutze. Letztendlich lag das Problem sowieso an etwas anderem. Es ist frustrierend, dass die Display-Hersteller so zurückhaltend sind, wenn es um ihre Datenblätter geht. Ich habe das falsche Display erhalten, da es zwei verschiedene Bezeichnungen auf dem Display gibt. Vielen Dank für eure Hilfe. Übrigens, ich konnte die While-Schleife wieder einfügen, da sie keine Auswirkungen hatte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren