ESP8266 über einen STM32F4 ansteuern

Gast #5441300
Lesenswert?
• ▲
▼
Schönen Abend euch,

ich versuche bereits den ganzen Tag einen ESP8266 an meinem STM32F4 
Disco zum Laufen zu bringen.

Ich verwende das ESP Modul von Reichelt (JOY-iT Wifi Modul ESP8266).
Angeschlossen habe ich das ganze wie folgt:

- ESP VCC     -> STM 3v VCC
- ESP GND     -> STM GND
- ESP CH_PD   -> STM 3v VCC
- ESP TX      -> STM PC11 (UART4 TX)
- ESP RX      -> STM PC10 (UART4 RX)

Ich habe mich an der Doku des ESPs gehalten und eine Baudrate von 115200 
verwendet.

Bei der Konfiguration der beiden Pins für UART bin ich mir nicht ganz 
sicher,
aber es sollte eigentlich passen RX und TX mit einem Pullup versehen zu 
haben, oder? Ich habe jedoch auch schon versucht, RX als OpenDrain zu 
konfigurieren und beiden Pins auf NoPull zu setzten, selbiges Ergebnis.
Konfiguriert wurden diese wie folgt:
1
  __HAL_RCC_GPIOC_CLK_ENABLE();
2

3
  GPIO_InitTypeDef uartPinConfiguration;
4
  uartPinConfiguration.Alternate = GPIO_AF8_UART4;
5
  uartPinConfiguration.Mode = GPIO_MODE_AF_PP ;
6
  uartPinConfiguration.Pull = GPIO_PULLUP;
7
  uartPinConfiguration.Pin = GPIO_PIN_10 | GPIO_PIN_11;
8
  uartPinConfiguration.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
9

10
  HAL_GPIO_Init(GPIOC, &uartPinConfiguration);

Nun die Konfiguration des UARTs:
1
  __HAL_RCC_UART4_CLK_ENABLE();
2
  
3
  UART_HandleTypeDef uartConfiguration;
4
  uartConfiguration.Instance = UART4;
5
  uartConfiguration.Init.BaudRate = 115200;
6
  uartConfiguration.Init.Mode = UART_MODE_TX_RX;
7
  uartConfiguration.Init.WordLength = UART_WORDLENGTH_8B;
8
  uartConfiguration.Init.Parity = UART_PARITY_NONE;
9
  uartConfiguration.Init.StopBits = UART_STOPBITS_1;
10
  uartConfiguration.Init.HwFlowCtl = UART_HWCONTROL_NONE;
11

12
  HAL_UART_Init(&uartConfiguration);

Um zu testen ob mein Code funktioniert, versuche ich den AT Command "AT" 
zu senden. Diese soll laut Dokumentation "OK" zurückgeben, sollte alles 
in Ordnung sein.
1
  uint8_t* atCommand = (uint8_t*)"AT\r\n";
2
  HAL_StatusTypeDef status = HAL_UART_Transmit(&uartConfiguration, atCommand, 6, 2000);
3

4
  uint8_t buffer[8];
5
  status = HAL_UART_Receive(&uartConfiguration, buffer, 2, 2000);

Laut dem Status war das senden des AT Befehls erfolgreich.
Beim empfangen läuft mein Code in einen Timeout. Ich habe mal ein 
bisschen in den HAL Treiber hinein debuggt, da scheint die Funktion 
"UART_WaitOnFlagUntilTimeout()" den Timeout zu verursachen.

Leider habe ich keinen Logic Analyzer um damit zu überprüfen ob der ESP 
nicht doch etwas sendet/empfängt.


Ich hoffe jemand kann mir trotzdem auf die Sprünge helfen. Schonmal 
Danke im Voraus.


Beste Grüße
Marcel

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.