Skip to content

ARMmbed/wifi-x-nucleo-idw01m1

Repository files navigation

Prototype Driver for STM Wi-Fi Expansion Boards based on the SPWFxx Module for STM32 Nucleo

Currently supported expansion boards

  • X-NUCLEO-IDW01M1, by setting mbed configuration variable idw0xx1.expansion-board to value IDW01M1
  • X-NUCLEO-IDW04A1, by setting mbed configuration variable idw0xx1.expansion-board to value IDW04A1. You might also need to define macro IDW04A1_WIFI_HW_BUG_WA (see beyond).
- **The boards above are now DEPRECATED and NOT RECOMMENDED FOR NEW DESIGN.**

Configuration examples

Generic concepts

For the ones, which might be less familiar with the "The mbed configuration system" in general, here is a link which points to the latest version of the respective mbed OS 5 handbook tutorial.

Furthermore, with respect to this driver, pls. refer to files mbed_app_idw01m1.json and mbed_app_idw04a1.json regarding additional reference for what is explained beyond.

IDW01M1

Add the following lines to the target_overrides-section of your mbed_app.json file.

            "idw0xx1.expansion-board": "IDW01M1",
            "drivers.uart-serial-txbuf-size": 512,
            "drivers.uart-serial-rxbuf-size": 512

IDW01M1 is the default value in the mbed_lib.json file, so setting the expansion board is not mandatory for IDW01M1, while setting the TX & RX buffer sizes is highly recommended.

IDW04A1

Add the following lines to the target_overrides-section of your mbed_app.json file.

            "idw0xx1.expansion-board": "IDW04A1",
            "drivers.uart-serial-txbuf-size": 512,
            "drivers.uart-serial-rxbuf-size": 512

Further configuration macros

All configuration options mentioned in this section are optional and when required have to be added to the macros-section of your mbed_app.json file, e.g.:

    "macros": [..., "IDW04A1_WIFI_HW_BUG_WA", "SPWFSAXX_RESET_PIN=D7"]

Beyond you can find the list of available configuration macros each with a short explanation:

  • IDW04A1_WIFI_HW_BUG_WA: activates the HW bug workaround for IDW04A1
  • SPWFSAXX_WAKEUP_PIN: defines module wakeup pin (requires value)
  • SPWFSAXX_RESET_PIN: defines module reset pin (requires value)
  • SPWFSAXX_RTS_PIN: defines RTS pin of the UART device used (requires value)
  • SPWFSAXX_CTS_PIN: defines CTS pin of the UART device used (requires value)

Note: if the values of both SPWFSAXX_RTS_PIN and SPWFSAXX_CTS_PIN are different from NC, hardware flow control - if available on your development board - will be enabled on the used UART device (provided you are using mbed-os version greater than or equal to v5.7.0).

Module firmware

Please make sure that you are using the latest major.minor releases of the firmware available for the expansion boards as have been used for the development of this driver. The driver has been developed with the following FW versions installed:

Regarding information on how to perform a FW update you may refer to X-CUBE-WIFI1, especially to document "X-NUCLEO-IDW0xx1- FW upgrading over UART_v1.2.pdf" which is contained within folder "Documentation" of the X-CUBE-WIFI1 software archive you need to download.

The actual firmware .bin or .hex files can be found under

  • STSW-WIFI001 for what concerns expansion board X-NUCLEO-IDW01M1 and under
  • STSW-WIFI004 when considering X-NUCLEO-IDW04A1.

Known limitations

  • Like explained in issue #11, sockets might fail to close in case they are connected to a streaming server (e.g. a RFC 864 test server).
  • As highlighted by issue #13, the module FW limits the maximum segment size for TCP to 730 bytes, while the maximum UDP datagram length might even be further limited (but usually is also equal to 730 bytes).