Forum: Mikrocontroller und Digitale Elektronik STM32 + Infineon WLAN Modul: Durchsatz?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin K. (mk279)


Lesenswert?

Hallo zusammen,

wie von Tam letztens beschrieben 
(Beitrag "News-Roundup: ST partnert mit Qualcomm, Arduino aktualisiert IDE uvam"), ist es aktuell nicht 
optimal um WLAN-Controller für STM32-µC bestellt.

Hat hier jemand schon mal ein Infineon-Modul/ Controller mit einem STM32 
integriert? (https://github.com/Infineon/AIROC-Wi-Fi-Bluetooth-STM32)
Z.B. ein Murata 1DX 
(https://www.murata.com/en-eu/products/connectivitymodule/wi-fi-bluetooth/overview/lineup/type1dx). 
Wieviel Durchsatz konnte da erzielt werden (iperf TCP, oder http 
upload)? Mit welchem STM32? Ich würde gerne LWIP nutzen.

Ich hatte einen ATWINC1500 
(https://www.microchip.com/en-us/product/atwinc1500) per SPI an einen 
STM32F429 angebunden. Dazu hatte ich einen LWIP-Treiber geschrieben. 
Beim Upload auf die per SDIO-angeschlossene SD-Karte komme nicht über 
80kBytes/s Durchsatz hinaus.

Der ATWINC1500 wird auf dem MAC-Layer betrieben, d.h. den ganzen 
Protokoll- Overhead (IP, TCP) muss der STM32 abarbeiten. Probeweise lief 
es ohne LWIP und direkter Nutzung von HTTP über SPI besser, aber nicht 
berauschend: 450kBytes/s Durchsatz.

Probeweise war ich auch schon bei ESP32-NG. Vor der Integration von LWIP 
habe ich dann abgebrochen, weil mir die (zwar Prototyp-haften) 0,32 
MBit/s 
(https://github.com/drorgl/stm32-lwip-esp-hosted/tree/master/stm32-lwip) 
arg wenig erscheinen.

Zu Beitrag "Wlan mit STM32" gab's kaum 
Antworten.

Danke schonmal!

von Frank K. (fchk)


Lesenswert?

Andere Alternative:
https://www.amazon.de/dp/B01MY5JIJ0/
per Ethernet an ein Board Deiner Wahl. Funktioniert garantiert und ist 
günstig.

fchk

von Martin K. (mk279)


Lesenswert?

Frank K. schrieb:
> Andere Alternative:
> https://www.amazon.de/dp/B01MY5JIJ0/
> per Ethernet an ein Board Deiner Wahl. Funktioniert garantiert und ist
> günstig.

Durchsatz bringt ein (TP-Link-) Router schon.
Dann hätte ich aber gleich einen Linux-fähigen SoC nehmen können und den 
WLAN-Chip per PCIe, USB oder auch SDIO anbinden können- oder gar einen 
RPi Zero W.

Der externe Router ist auch uninteressant, wg.
* langer Bootzeit
* nicht integrierter Lösung (keine einzelne Platine)
* höheren Kosten usw.

Danke trotzdem, als Bastellösung, evtl. für jemanden sinnvoll.

von Frank K. (fchk)


Lesenswert?

Martin K. schrieb:

> Durchsatz bringt ein (TP-Link-) Router schon.
> Dann hätte ich aber gleich einen Linux-fähigen SoC nehmen können und den
> WLAN-Chip per PCIe, USB oder auch SDIO anbinden können- oder gar einen
> RPi Zero W.

Und warum hast Du nicht?

Zumindest gibt Dir so ein Aufbau einen Messwert, was im optimalen Fall 
erreichbar wäre.

> * höheren Kosten usw.

Die meisten Bastler hier haben eh nur Einzelstückzahlen. Da sind dann 
die Stückkosten realistisch gesehen fast egal. Wieviel 100 Stück sind 
denn bei Dir in der Planung?

fchk

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Vielleicht ist ein WizFixxx etwas für Dich: https://docs.wiznet.io/

Die Teile gibt es vom kleinen bis zum dicken WiFi-Modul. Zum Beispiel 
ein WizFi360 mit bis zu 2Mbps für knapp 5 EUR. IP-Stack ist auch schon 
dabei.

von Martin K. (mk279)


Lesenswert?

Frank M. schrieb:
> Vielleicht ist ein WizFixxx etwas für Dich: https://docs.wiznet.io/
>
> Die Teile gibt es vom kleinen bis zum dicken WiFi-Modul. Zum Beispiel
> ein WizFi360 mit bis zu 2Mbps für knapp 5 EUR. IP-Stack ist auch schon
> dabei.

Danke Frank M., die WiFi-Module von wiznet kannte ich noch nicht.

von Martin K. (mk279)


Angehängte Dateien:

Lesenswert?

Habe jetzt selbst eine Messaufbau gemacht und habe jetzt Resultate- 
falls es wen interessiert ;-)

Um zu schneller testen zu können habe ich ein fertiges Board
gefunden: Ein Arduino https://docs.arduino.cc/hardware/portenta-h7/
Ist für einen breiteren Einsatz zwar völlig überteuert, aber für einen 
schnellen Prototypen offenbar ganz nett.
Da ist ein STM32H747 und ein Murata 1DX (Chip: CYW4343W) drauf, der per 
SDIO angebunden ist.
Die Arduino-basierte SW war nicht zu gebrauchen: 50 kBytes/s im Upload.

Mit der STM32 Cube SW + LWIP + Infineon Treiber + AsyncHTTP kam ich dann 
aber auf

1500 kBytes/s im HTTP-Upload.

Das ist der erste Versuch und erstmal nicht weiter optimiert. Das 
Ergebnis ist für meine Anwendung aber jetzt schon ausreichend.

Hier mal die Links der verwendeten SW:
* STM32 Cube SW auf dem Arduino Portenta 
https://github.com/skjafar/Portenta_Cube_Template
* Infineon-SW für CYW4343W 
https://github.com/Infineon/AIROC-Wi-Fi-Bluetooth-STM32
* HTTP-Server: Basierend auf 
https://github.com/khoih-prog/AsyncWebServer_STM32

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Martin K. schrieb:
> Mit der STM32 Cube SW + LWIP + Infineon Treiber + AsyncHTTP kam ich dann
> aber auf

Klasse, wie kompliziert war es den Infineon Treiber einzubinden?

von Martin K. (mk279)


Angehängte Dateien:

Lesenswert?

Niklas G. schrieb:
> Klasse, wie kompliziert war es den Infineon Treiber einzubinden?

Eigentlich einfach:
In der STM32Cube IDE SW Packs auswählen und nach Schaltplan vom Portenta 
konfigurieren (siehe Bild und Ausschnitt aus cybsp.h unten). Der 
CMSIS-Pack  von Infineon war sogar schon der IDE bekannt und 
auswahlbereit. Nachdem es dann gebaut hat, lief es auch schon.

Uneigentlich unnötig kompliziert, weil die STM32Cube IDE bei der 
Code-Generierung mit den zwei Cores des STM32H747 offenbar 
Schwierigkeiten hat.
Für eine Dual-Core MCU legt die IDE drei Projekte an: Ein übergeordnetes 
und zwei untergeordnete für die beiden Cores. Dummerweise wurden alle 
SW-Packs nur ins übergeordnete Projekt integriert.
Also waren die Source- und Include-Pfade komplett durcheinander :-/.
Siehe auch 
https://community.st.com/t5/stm32cubemx-mcus/linked-resources-update-issue-using-stm32cubeide/td-p/627010

Weitere Fallstricke:
Das Portenta-Board nutzt einen PMIC, den man wohl bald nach dem Reset 
konfigurieren muss (siehe 
https://github.com/skjafar/Portenta_Cube_Template/blob/master/CM7/Core/Src/main.c)

Die SWO-Pins vom Portenta sind etwas schlecht erreichbar
(siehe 
https://github.com/skjafar/Portenta_Cube_Template/blob/master/README.md)
Ich habe dann ein Kabel mit 1.27mm-Pitch und 0.635mm-Pitch Kabel 
genutzt. Gab's nicht einfach so an jeder Ecke, also selber bauen.

Einstellungen für die cybsp.h:
1
#define CYBSP_BT_UART_CTS      PF9
2
#define CY_WIFI_COUNTRY_CUSTOM      WHD_COUNTRY_GERMANY
3
#define CYBSP_BT_UART_TX      PA14
4
#define CYBSP_USER_BTN      NC
5
#define COUNTRY_CUSTOM_ENABLE      true
6
#define CYBSP_BT_POWER      PJ12
7
#define COMMAND_CONSOLE_UART_TX      NC
8
#define COMMAND_CONSOLE_UART_RX      NC
9
#define CYBSP_WIFI_HOST_WAKE      PJ13
10
#define CYHAL_ISR_PRIORITY_DEFAULT      7
11
#define SDMMC_CLK_FREQ_OVERRIDE      0
12
#define CYBSP_WIFI_WL_REG_ON      PJ1
13
#define CYBSP_BT_DEVICE_WAKE      PJ14
14
#define CYBSP_BT_HOST_WAKE      PE10
15
#define CYBSP_WIFI_HOST_WAKE_IRQ_EVENT      CYHAL_GPIO_IRQ_RISE
16
#define CYHAL_UART_MAX_INSTANCES      3
17
#define CYBSP_BT_UART_RX      PF6
18
#define CYBSP_BT_UART_RTS      PF8
19
#define _CYHAL_SDIO_DMA_BUFFER_SIZE      4096

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Martin K. schrieb:
> Eigentlich einfach:
> In der STM32Cube IDE SW Packs auswählen und nach Schaltplan vom Portenta
> konfigurieren

Super, danke. Dann ist das ja echt eine Option wenn ein ESP32 nicht 
geeignet ist. Es gibt ja nicht gerade viele WiFi-Module die man per SDIO 
anbinden kann wo man dann seinen eigenen IP-Stack nutzen kann.

von Martin K. (mk279)


Lesenswert?

Niklas G. schrieb:
> Martin K. schrieb:
>> Eigentlich einfach:
>> In der STM32Cube IDE SW Packs auswählen und nach Schaltplan vom Portenta
>> konfigurieren
>
> Super, danke. Dann ist das ja echt eine Option wenn ein ESP32 nicht
> geeignet ist. Es gibt ja nicht gerade viele WiFi-Module die man per SDIO
> anbinden kann wo man dann seinen eigenen IP-Stack nutzen kann.

Auf jeden Fall! Mit den Ergebnissen werde ich das Modul jetzt auf meinem 
eigenen Board einsetzten.

ESP-Hosted-FG nutzt auch SDIO: 
https://github.com/espressif/esp-hosted/tree/master/esp_hosted_fg

Da hatten mich aber wie im ersten Post geschrieben, die schlechte 
Messwerte anderer abgeschreckt, die Integration zu Ende zu machen.

Habe gerade gesehen, dass die Liste bei PCB Artitsts jetzt auch seit 
Ende 2023 auch die Infineon-Chips als Option aufführt:
https://pcbartists.com/design/embedded/stm32-wifi-options

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.