返回介绍

rw007 SPI WiFi 模块使用

发布于 2021-05-01 04:38:15 字数 12160 浏览 1135 评论 0 收藏 0

本文使用 STM32 Nucleo 系列开发板连接 RW007 WiFi 模块,通过运行 RT-Thread 操作系统,让开发板轻松愉快联网。

STM32F401 Nucleo-64

STM32 Nucleo-64 是 ST 官方推出的开发板,依据搭载的 STM32 芯片型号不同(皆为 LQFP64 封装),分为众多版本,本文所使用的是带 STM32F401RE 芯片的板子 —— STM32F401 Nucleo-64作为本文的示例,使用其他型号的板子也可以参考本文的方法进行操作,通过 RW007 WIFI 模块方便快速联网。

STM32F401 Nucleo-64 开发板

主要特性

  • STM32F401RET6 64 脚 MCU
  • ARM Cortex-M4 内核,84MHz 主频
  • 512KB Flash, 96KB SRAM 存储容量
  • Arduino Uno 和 ST morpho 两类扩展接口
  • 板载 ST-LINK/V2-1 调试编程器、USB 调试串口

Nucleo 上的 Arduino 接口能让开发板与 WiFi 模块「无缝衔接」,值得一提的是,这款开发板还自带了 ST-LINK 和 USB 串口,这就意味着:只需要一根 Mini-USB 线,就能完成开发和调试工作。

快速入门:Getting started with STM32 Nucleo board software development tools

原理图下载:STM32 Nucleo (64 pins) schematics

更多相关信息资料见 ST 官网详情页:STM32 Nucleo-64 development board with STM32F401RE MCU

RW007

RW007 是由上海睿赛德电子科技有限公司开发的高速 WiFi 模块,模块基于 Realtek RTL8710BN(Ameba Z 系列) WIFI SOC,使用 SPI/UART 与主机通信 ,支持 IEEE 802.11b/g/n 网络、 WEP/WPA/WPA2 加密方式和 STA 和 AP 模式。

RW007 WiFi 模块

主要特性

  • Cortex-M4 高性能 MCU
  • 可自由选择的 AT SPI 双模式,工作模式可由主机配置
  • SPI 时钟高达 30Mbps,UART 波特率高达 6Mbps。
  • SPI 模式下有效以太网带宽高达上传 1MBytes/s,下载 1MBytes/s
  • 内置 Bootloader,支持固件升级、安全固件功能。
  • 支持快速连接、airkiss 配网
  • 支持存储多达 5 条连接信息

更多相关信息资料见 RW007 介绍页面:睿赛德科技推出高速Wi-Fi模块RW007:内置RT-Thread物联网操作系统

由睿赛德推出的 WiFi 模块,可以说是 RT-Thread 的「亲儿子」了,操作系统原生支持,相应的网络组件、WLAN 框架都能完美兼容,在跑 RTT 的板子上使用 RW007,几乎不需要过多配置,即插即用式的使用体验,大大减轻了嵌入式开发者的工作量。

准备工作

在把 RW007 畅快跑起来之前,以下准备工作必不可少,你将需要:

  1. STM32 Nucleo-64 开发板(或其他支持 RTT 的板子)
  2. RW007 WiFi 模块
  3. Mini-USB 连接线(连接开发板与电脑)
  4. ENV 编译构建环境(安装使用说明
  5. 开发常用软件(git、Keil5、串口调试等)
  6. 一颗爱折腾的心

硬件准备

开始上路

RT-Thread 包含了 RW007 的软件包,用户无需自己编写驱动程序,下面以 SPI 模式(断开模块上 UART 的电阻 R5 和 R7)为例,介绍如何在 STM32F401 Nucleo-64 上驱动 RW007 模块,并完成 AP 扫描、连接等基本 WiFi 功能。

硬件连接

得益于 Nucleo 上的 Arduino 接口,只需把 RW007 往开发板上一插,即可完成了两者的硬件连接。显然,其他带 Arduino 接口的开发板也能直接插,就是这么简单粗暴……

开发板插接模块

电路连接示意图如下:

电路连接示意图

各 IO 接口与功能之间的对应关系表:

STM32 引脚名封装管脚序号Arduino 接口序号功能
PA55D13BOOT0/CLK
PA66D12MISO
PA77D11MOSI
PB622D10BOOT1/CS
PC739D9INT/BUSY
PA99D8RESET

特别注意!!!

关于pin 序号规则,与旧 bsp 使用封装管脚序号不同,在新的 stm32 bsp 框架中,统一采用顺序编号的方式,对 GPIO 驱动进行管理,移植旧程序时要留意。

pin 序号与引脚名对应关系如下表:

STM32 引脚名管脚序号 pin
PA0 - PA150 - 15
PB0 - PB1516 - 31
PC0 - PC1532 - 47
PD0 - ...48 - ...

bsp/stm32/libraries/HAL_Drivers/drv_gpio.cpins[] 数组中,能清除看到 pinmap 关系。

STM32 bsp 配置(Menuconfig)

步骤一:下载 RT-Thread SDK

打开 rt-thread\bsp\stm32 目录,能看到 RT-Thread 所支持的开发板型号,把 RT-Thread 在 STM32 上跑起来并不是一件难事,但在编译内核组件之前,要先对 bsp 进行简单配置(别慌,通过 Menuconfig 图形化界面即可完成)。

本次实验所使用的 bsp 为 stm32f401-st-nucleo,Github 仓库链接:rt-thread/bsp/stm32/stm32f401-st-nucleo at master · RT-Thread/rt-thread, Gitee 仓库链接:rt-thread/bsp/stm32/stm32f401-st-nucleo at master · RT-Thread/rt-thread. 从 RT-Thread SDK 中分离 stm32f401-st-nucleo 分离 BSP 出来。 进入 rt-thread\bsp\stm32\stm32f401-st-nucleo 文件夹,右键打开 ENV 窗口(前提是已在 windows 下搭好 ENV 环境),输入 scons --dist命令。

通过scons --dist分离 BSP

到此可以把分离出来的 BSP 拷贝到任意的目录中,进行项目的开发。

步骤二 通过 CubeMX 配置 SPI 初始化程序

  1. 查看对应的引脚:

电路连接示意图

2.引脚列表

STM32 引脚名封装管脚序号Arduino 接口序号功能
PA55D13BOOT0/CLK
PA66D12MISO
PA77D11MOSI
PB622D10BOOT1/CS
PC739D9INT/BUSY
PA99D8RESET
  1. CubeMX 配置 SPI

一般 STM32 系列的引脚分配可以通过对应 BSP 中board\CubeMX_Config目录下的CubeMX_Config.ioc打开 CubeMX 工程,进行配置 SPI1,并生成代码,保存退出即可 。

cubemx 配置

CubeMX 配置 SPI

步骤三 :通过menuconfig配置 RW007 软件包

进入 rt-thread\bsp\stm32\stm32f401-st-nucleo 文件夹,右键打开 ENV 窗口(前提是已在 Windows 下搭好 ENV 环境),输入 pkgs --upgrade 更新 ENV 和软件包,再输入 menuconfig 进行系统配置:

menuconfig 界面

附 Menuconfig 常用操作按键:

按键↑↓←→Enter空格Esc
功能列表选择菜单选择确认选中/取消后退

1. 配置开启 SPI 外设

开发板与模块的通讯依赖 SPI 设备,在 bsp 中已经实现了 SPI 驱动,只需在设置中打开即可使用。 进入 Hardware Drivers Config ---> 下的 On-chip Peripheral Drivers,勾选 Enable SPI BUS ---> 选项,并按回车键进入,进一步选中 Enable SPI1 BUS,完成配置:

开启 SPI 外设

如果在 bsp 中的 menuconfig 中没有对应 spi的配置,可以通过修改 Kconfig文件增加对应spi的配置。 Kconfig 的路径在board/Kconfig ,如下面是添加 SPI1的配置。

添加 SPI 配置

2. 配置 RW007 软件包

RT-Thread 通过软件包的形式,对 RW007 模块提供配套驱动支持,系统默认选项不包含软件包,用户需手动开启:通过 Esc 键回到 Menuconfig 主界面,依次进入 RT-Thread online packages --->IoT - internet of things --->Wi-Fi --->,勾选 rw007: SPI WIFI rw007 driver ---> 选项:

使用 RW007 软件包

RW007 软件包 Github 仓库链接:RT-Thread-packages/rw007: RW007 (SPI Wi-Fi module) driver for RT-Thread

紧接着按下 Enter 键进一步设置软件包参数,完成 SPI 总线和 IO 的配置,更改总线设备名称 RW007 BUS NAMEspi1

更改 SPI 总线名称

然后配置 SPI 控制 IO,各管脚号依次按下表填入:

引脚号功能
22CS pin index
5BOOT0 pin index (same as spi clk pin)
22BOOT1 pin index (same as spi cs pin)
39INT/BUSY pin index
9RESET pin index

配置 SPI 引脚

最高 SPI 速率配置:从 v1.1.0 版本起,用户可以根据实际使用情况提高或降低总线速率(默认为 30MHz),为满足对通讯稳定性和传输速度的需求,建议更新至最新版本,对应的 Menuconfig 配置项如下:

SPI 最高速率配置

3. 开启 WiFi 框架

RW007 驱动使用了 WLAN 相关的接口,按以下选项路径打开 WiFi 框架:RT-Thread Components --->Device Drivers --->Using WiFi --->,勾选 Using Wi-Fi framework

开启 WiFi 框架

4. 保存 Menuconfig 配置

完成了上面的 3 步,bsp 配置算大功告成了,但最最重要的一步不能漏 —— 保存 Menuconfig 配置:直接一路狂按 Esc 键退出,在保存提示窗口中选择 Yes 确认即可:

保存 Menuconfig 配置

编译烧写固件

1. 更新本地软件包

根据 RT-Thread 的软件包机制,在 Menucofnig 选中了软件包后,相关代码文件并未添加到工程中。在 ENV 终端输入 pkgs --update 命令,便能从服务器下载所选软件包,更新到本地目录:

下载更新本地软件包

2. 生成 MDK5 项目文件

使用 Keil IDE 可以十分方便对 STM32 程序编译和烧录,在 ENV 终端输入 scons --target=mdk5 -s,生成 Keil5 工程文件:

生成 MDK5 项目文件

3. 编译、下载工程

使用工具栏的 Build 按钮编译工程,出现 0 Error(s) 表示编译成功,将开发板连接电脑,再点击 Download 按钮下载固件到开发板,完成上面所有步骤后,接下来就是见证奇迹的时刻了。

运行、测试模块功能

下载完程序便能自动复位运行,打开串口工具(推荐使用 XShell 等交互型终端),设置参数为 115200 8-1-N。若系统启动正常,且开发板与模块间的通讯也没有问题,会看到如下初始化打印信息:

 \ | /
- RT -     Thread Operating System
 / | \     4.0.1 build Mar  7 2019
 2006 - 2019 Copyright by rt-thread team
lwIP-2.0.2 initialized!
[I/WLAN.dev] wlan init success
[I/WLAN.lwip] eth device init ok name:w0
[I/WLAN.dev] wlan init success
[I/WLAN.lwip] eth device init ok name:w1

rw007  sn: [rw0072795b24400ac48]
rw007 ver: [1.2.3]

msh >

使用 wifi scan 命令扫描周边热点、wifi join ssid password 命令连接路由、ifconfig 命令查看网络配置,验证模块功能:

测试模块功能

常见问题与解决方法

  • Menuconfig 中没看到 rw007 pkg?

    ENV 和 包索引不是最新,执行 pkgs --upgrade 命令更新软件包源。

  • Keil 编译错误?

    是否已经把软件包替换为 RW007 适配版本,新老版本 stm32 bsp 中 spi 接口稍有差异。

  • 运行后串口无输出?

    1. 检查开发板与电脑的连接是否正常
    2. 检查串口工具参数配置,应为 115200, 8, 1, None
  • 运行出现 wspi device not found

    确认 RW007 软件包中总线的设备名为 spi1,否则会导致设备挂载失败。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文