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!
Andere Alternative: https://www.amazon.de/dp/B01MY5JIJ0/ per Ethernet an ein Board Deiner Wahl. Funktioniert garantiert und ist günstig. fchk
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.
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
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.
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.
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
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?
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
|
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.