[经验分享] 【DigiKey“智造万物,快乐不停”创意大赛】STM32H7B3板载WiFi的使用

Tristan_C   2023-12-13 22:46 楼主
STM32H7B3板载WiFi的使用
整完了LVGL,接下来就把板载的WiFi模块驱动整活一下。板载的是一片ISM43340_M4G_L44模块,这是一颗Cypress的CYW43340芯片的2.4 & 5 GHz双频Wi-Fi 802.11 a/b/g/n, Bluetooth Low Energy (BLE) 和 Bluetooth 4.0的模块,内部还使用了一颗ST的STM32F405 作为主控芯片,采用SPI或者UART接口,本处就使用SPI接口使用。
224435p1xl52tz276ran76.png
224435gqzogccl47r7syc6.png
在开始之前,考虑到调试测试方便性,先增加一个UART的打印功能。
按照“惯例”,先查看硬件原理图,也可以看到ST也按照“惯例”,使用了USART1作为了串口debug口,引到了ST-Link的虚拟串口上,可以跟PC上位机软件进行通信,那么串口打印自然就可以用这个串口了。
224435lwgg5wrwk4a22oor.png
具体使用的引脚如下
224435d94qq7k7l4l5k253.png
接下来先添加串口的初始化代码
224435emkixjjj5xb6xi58.png
再添加重映射定义
224435sme46nlue4ap6yej.png
然后在main函数中添加初始化,并打印一下做个测试
224435dzqp83k28pmk6m8k.png
编译下载运行
224435r1yfsgmzgm92mug1.png
运行即可看到PC上打印的内容了
224435egfffivy1oyhznon.png
另外,如果要支持浮点数的打印,需要在设置中将如下的两个配置选项都勾选上
224435x66fgis61345zi1r.png
接下来就准备进行今天的主题WiFi的任务了。
ST官方针对使用的这个WiFi模块有一个驱动库的,且应用层也相应做了一些示例,是一个非常好的参考例子。
首先是官方开放的一个驱动库,为了使用这个驱动库,需要用到STM32_Network_Library
224435c1pikbpaxk3koxuk.png
224435n7my86y7y93ayyma.png
为了方便起见,直接拷贝外面的Middlewares整个文件夹
再拷贝应用层的es_wifi_conf相关内容。
224435flvv5e6b09759305.png
224435tyoohi3jjuew1oes.png
224435i4r9w44v5yrarzv4.png
以及对应的驱动应用文件
224435w5kahmkzuk4xykzm.png
然后注意增加头文件和源代码路径
224435m74i7zq0wznz1nnq.png
224435xe3say1638fc3318.png
添加完毕之后,整体的代码框架如图
224435wixb7cq7laiai9a7.png
先做一次编译,无错误提示
224435s6z1ppvqb65s56zz.png
增加一些头文件以
224435zdqve24dkvpkkfwd.png
变量和函数声明
224435tr205drvrdvvdjrd.png
以及始化函数等
224435r4gmy8y0rrqg22tt.png
开始编译,可能会出现各种头文件包含的错误,这时需要一定的耐心,通过将头文件所在路劲添加到ide中等操作解决错误。
224435w08u686ezu3h0xxf.png
添加初始化函数调用到main函数中。并连接到指定SSID和Password的AP上,连接成功之后,通过串口打印分配到的IP地址。
224435ddkirdfeoufffmhd.png
其中WIFI_Get_Access_Points和WIFI_Connect函数的实现代码如下。
224435z1slp56fy66sskv6.png
此时编译下载运行,可以看到成功连接AP路由器,并获得了IP地址为192.168.155.2
224435looq0xa4csmxppoo.png
然后就可以再尝试做一些网络操作,比如同步一下时间。
H7B3I的DEMO中有举了一个从worldtimeapi.org获取时间的例子,这里我也参考从这里去一下时间数据。
224435anytihvuntibvhu4.png
224435zr0e0ere0boeeee8.png
在main函数中调用,该获取时间函数,并在成功之后打印获取到的json格式时间。
224435u2gfv2929tvt1hth.png
可以看到联网成功,并成功获取时间。但时间实际上还有一个时区问题,这里先不做时区处理,只验证网络这块,具体待后续再进行。
224435dy82gzugayhygmhy.png
接下来还可以再做一个天气信息获取。
当前天气可以用http的get方式从api.openweathermap.org获取,获取时,需要指定APPID,城市,单位等信息。其具体实现操作如下。
224435xz4dwz1vwnzph4hw.png
224435yb0gs10kngztfnrw.png
然后同样可以在main函数的获取时间操作成功之后,获取一下杭州的天气信息
224435guchpffzabddlahp.png
运行成功之后串口打印如下
224435vhwy13l33aa179by.png
小结:这次把板载的网络终于还是搞通了,过程还是比较麻烦的,因为是从官方的demo中扣出来需要一点点添加,本文也未能详尽记录,不过好在最终还是成功了。这两次把LVGL和WiFi调通,并获取到了时间和天气信息,也算迈了一大步了,后面再继续完善小制作。

回复评论 (2)

编译报错进行调试是一件头疼的事情


点赞  2023-12-14 10:30
引用: eew_TKwwQ7 发表于 2023-12-14 10:30 编译报错进行调试是一件头疼的事情

移植的文件比较多,会有这个头疼,耐心一个个看就还好的

点赞  2023-12-15 10:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复