受到这个帖子(ST U5开发板评测烧录相关问题(官方分享))中的内容的提示,于是想到对WIFI模块也做同样的事情,看行不行。
参考这个示例 - B-U585I-IOT02A compiled demo binary中的“README” - The EMW3080B MXCHIP Wi-Fi module firmware used version is V2.1.11 and the way to update your board with it
are available at [x-wifi-emw3080b](https://www.st.com/en/development-tools/x-wifi-emw3080b.html).
这里提供了三种下载升级wifi固件的方法 - file:///E:/Projects/B-U585I-IOT02A%20-%20Discovery%20kit%20for%20IoT%20node%20with%20STM32U5%20series/x-wifi-emw3080b/Release_notes.html
实验一下第三种方法(*在Windows 10上):
第一步,安装Python - https://www.python.org/
第二步,用 pip3 下载-安装 MXCHIP-Flash:
pip3 install mflash -i https://pypi.tuna.tsinghua.edu.cn/simple
第三步:安装需要的USB驱动 - https://zadig.akeo.ie/
按照教程里的说法,安装完成以后,右键点击文件,应该出现“”,但我这里没有,重启一下机子还是没有,于是到这里来下载 - https://pypi.tuna.tsinghua.edu.cn/simple/mflash/,下载以后还是不行,似乎找不到安装文件,也找不到可执行文件,于是又转到Ubuntu 20.04。
pip3 install mflash -i https://pypi.tuna.tsinghua.edu.cn/simple
安装很顺利:
而且,对于命令的提示很规范,真是做到了让观者一目了然:
顺便说一下,执行上述命令行,会同时打开“MXCHIP”公司的首页:
这是第一次在如此重要的板子上看到国产的重要模块。
再回到这个ST网站上提供的演示示例上来 - "B-U585I-IoT02A_Demo"。这个示例的思路是:将B-U585I-IoT02A探索办配置为一个基于HTTP协议的web服务器,将用户的浏览器作为web客户端,通过一个现有的wifi热点接入,这样用户就可以在自己的网页浏览器——比如android移动电话上浏览到板子上的传感器采集到的数据。
这个示例中的“README”要和STM32CubeIDE中的示例“WiFIBasics”中的“README”结合起来看,因为两者的内容并不完全重复,互有补充。比如,关于输入WIFI的用户名和密码这一项,后者并没有提到,但后者提出要在“main.h”文件中由用户自己提前设定这两项内容。
在Windows 10上测试的时候,接下来的两个流程只能运行一个:
- Network Interface starting
- Network Interface ready
- Device Name : MXCHIP-WIFI
- Device ID : EMW3080B
- Device Version : Vx.y.z
- MAC address: x.y.z.a.b.c
- Network Interface connecting
- Network Interface connected
- IP address : x.y.z.w
在这之后,会提示输入命令,但在之前的帖子([超低功耗STM32U5 IoT探索套件] - 2:wifi)中已经提到了,怎么输入都输入不进去,于是,第二阶段的工作就不进行:
- *** Create TCP socket
- *** TCP socket created
- *** Set port and bind socket
- *** Port and socket binded
- *** Listen for incoming connections
- *** Listening started
于是,也就做不到在电话上浏览传感器数据了。
在Windows中,固件的升级分两步:
(说明在这里:file:///home/mianqi/Downloads/en.x-wifi-emw3080b_v1.0.0/x-wifi-emw3080b/Release_notes.html)
第一步,在SW1的“BOOT”处在默认的“NC”位置的情况下,将demo中提供的“EMW3080updateV2.1.11RevC.bin”文件拖到板子显示的盘符内。
第二步,将在SW1的“BOOT”从默认的“NC”位置推倒对面的“0”位置,然后,按一下板子上的“RST”按钮。大约20秒后,板子上的MCU(U585I)会将上一步拖入的文件写入WIFI模块。等看到提示后,将SW1的“BOOT”推回默认的“NC”位置。
上述第一步也可以通过一个超级终端来做,这里尝试一下PuTTY。
但是,这里(file:///home/mianqi/Documents/Projects/B-U585I-IOT02A/en.x-wifi-emw3080b_v1.0.0/x-wifi-emw3080b/Release_notes.html)的这三句话:
Connect the board to your laptop through USB
Start an hyperterminal on your PC: speed 115200, 8 bit data, no parity, 1 stop bit, no flow control
Download “EMW3080updateV2.1.11RevC.bin” binary file to the board
似乎对用户有误导——以为是在超级终端里向板子下载程序“EMW3080updateV2.1.11RevC.bin”:
实际上,在Ubuntu 20.04更可以通过拖动的方式,将上述文件复制到板子上去:
而这个拖动上去的文件并不会被显示出来:
接下来要做到的工作是:
1、打开超级终端(115200, 8N1, NONE )。
2、将板子上的SW1的BOOT键扳到“0”——这实际上是将MXCHIP芯片设置为BOOT模式。
3、按一下板子上的“RST”键。
4、文档内说要输入“flash”,但实验中发现可以用按一下蓝键代替输入“flash”。
5、在超级终端内观察,等待时间因机子的性能而已,文档上说约20秒,实验中用了不到3秒钟。
6、根据超级终端内的提示,将SW1的BOOT键拨回来(“NC”)。
以下是整个过程的演示视频(视频中板子上还插了一根TYPE-C线,那是这一步不用,下一步要用地。但这个时候要注意调整JP4处的跳线帽,应该是:5V_USB_STLK):
还不错,介绍得挺详细的!
想尝试一下这个办法——直接通过SWD给WIFI模块编程:
不行:
换成这个常规的做法(JP4电源接口处要换回来):
在STM32CubeIDE中将示例“WiFiBasics”编译-运行后,在PuTTY中查看: