LV16-31-ESP8266模块-04-ESP8266实验
本文主要是STM32开发——ESP8266模块 相关实验 的一些基础知识相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows | windows11 |
Ubuntu | Ubuntu16.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
SecureCRT | Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日 |
开发板 | 正点原子 i.MX6ULL Linux阿尔法开发板 |
uboot | NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03) |
linux内核 | linux-4.15(NXP官方提供) |
STM32开发板 | 正点原子战舰V3(STM32F103ZET6) |
点击查看本文参考资料
- 通用
分类 | 网址 | 说明 |
官方网站 | https://www.arm.com/ | ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档 |
https://www.st.com/content/st_com/zh.html | ST官方网站,在这里我们可以找到STM32的相关文档 | |
https://www.stmcu.com.cn/ | 意法半导体ST中文官方网站,在这里我们可以找到STM32的相关中文参考文档 | |
http://elm-chan.org/fsw/ff/00index_e.html | FatFs文件系统官网 | |
教程书籍 | 《ARM Cortex-M3权威指南》 | ARM公司专家Joseph Yiu(姚文祥)的力作,中文翻译是NXP的宋岩 |
《ARM Cortex-M0权威指南》 | ||
《ARM Cortex-M3与Cortex-M4权威指南》 | ||
开发论坛 | http://47.111.11.73/forum.php | 开源电子网,正点原子的资料下载及问题讨论论坛 |
https://www.firebbs.cn/forum.php | 国内Kinetis开发板-野火/秉火(刘火良)主持的论坛,现也做STM32和i.MX RT | |
https://www.amobbs.com/index.php | 阿莫(莫进明)主持的论坛,号称国内最早最火的电子论坛,以交流Atmel AVR系列单片机起家,现已拓展到嵌入式全平台,其STM32系列帖子有70W+。 | |
http://download.100ask.net/index.html | 韦东山嵌入式资料中心,有些STM32和linux的相关资料也可以来这里找。 | |
博客参考 | http://www.openedv.com/ | 开源网-原子哥个人博客 |
http://blog.chinaaet.com/jihceng0622 | 博主是原Freescale现NXP的现场应用工程师 | |
cortex-m-resources | 这其实并不算是一个博客,这是ARM公司专家Joseph Yiu收集整理的所有对开发者有用的官方Cortex-M资料链接(也包含极少数外部资源链接) |
点击查看相关文件下载
分类 | 网址 | 说明 |
STM32相关 | STM32F103xx英文数据手册 | STM32F103xC/D/E系列的英文数据手册 |
STM32F103xx中文数据手册 | STM32F103xC/D/E系列的中文数据手册 | |
STM32F10xxx英文参考手册(RM0008) | STM32F10xxx系列的英文参考手册 | |
STM32F10xxx中文参考手册(RM0008) | STM32F10xxx系列的中文参考手册 | |
Arm Cortex-M3 处理器技术参考手册-英文版 | Cortex-M3技术参考手册-英文版 | |
STM32F10xxx Cortex-M3编程手册-英文版(PM0056) | STM32F10xxx/20xxx/21xxx/L1xxxx系列Cortex-M3编程手册-英文版 | |
STM32 HAL库开发实战 | 野火STM32开发教程在线文档——基于F103系列开发板 | |
STM32库开发实战指南 | 野火STM32开发教程在线文档——基于野火霸道开发板 | |
SD卡相关 | SD卡相关资料——最新版本 | 有关SD卡的一些资料可以从这里下载 |
SD卡相关资料——历史版本 | 有关SD卡的一些历史版本资料可以从这里下载,比如后边看的SD卡2.0协议 | |
SD 2.0 协议标准完整版 | 这是一篇关于SD卡2.0协议的中文文档,还是比较有参考价值的,可以一看 | |
ESP32 | SD卡相关资料——最新版本 | 这个⼿册介绍了 ESP8266EX 的产品参数。 |
ESP8266 系列入门教程 | 一个入门手册(安信可官网) | |
ESP8266 AT 指令集 | 这是一篇关于ESSP8266的AT指令集的文档(安信可官网) | |
ESP8266 AT 指令使用实例 | 这是一篇关于ESSP8266的AT指令集使用实例的文档(安信可官网) | |
ESP-AT 用户指南 | 本指南详细介绍 ESP-AT 是什么、如何连接硬件、以及如何下载和烧录 AT 固件(乐鑫官网) | |
乐鑫官方技术文档 | 这里是乐鑫官方技术文档的入口,文档都可以来这里找(乐鑫官网) |
一、硬件连接
ATK-MW8266D 模块可直接与正点原子战舰 STM32F103 开发板板载的 ATK 模块接口( ATK MODULE)进行连接,具体的连接关系,如下表所示:
注意,若要使用正点原子战舰 STM32F103 开发板的 ATK MODULE 接口连接ATK-MW8266D 模块,需要用跳线帽将开发板板载的 P8 接线端子的 PB10(TX)和 GBC_RX以及 PB11(RX)和 GBC_TX 用跳线帽进行短接,如下图所示:
二、ATK-MW8266D 模块 TCP 透传实验
1. 功能说明
在本实验中,开发板主控芯片通过串口与 ATK-MW8266D 模块进行通讯, 并在上电后自动根据配置信息, 配置 ATK-MW8266D 模块连接 WIFI、 TCP 服务器(与 ATK-MW8266D模块所连接 WIFI 在同一局域网的电脑作为 TCP 服务器),成功连接 WIFI 后, 将在串口调试助手和 LCD 上显示 ATK-MW8266D 模块的 IP 地址,随后便可通过按键对 ATK-MW8266D模块进行 AT 指令测试和配置其进入或退出透传模式, AT 指令测试的测试结果将显示在串口调试助手上,当模块进入透传模式后,可通过按键发送数据至 TCP 服务器,同时也可接收来自 TCP 服务器的数据,并实时显示在串口调试助手上。
2. 源码解读
我们能够在./Drivers/BSP 目录下看到 ATK_MW8266D 子文件夹,该文件夹中就包含了 ATK-MW8266D 模块的驱动文件,如下图所示:
2.1 ATK-MW8266D 模块接口驱动
atk_mw8266d_uart.c 和 atk_mw8266d_uart.h 是开发板与 ATK-MW8266D模块通讯而使用的 UART 驱动文件。
由于 ATK-MW8266D 模块通过 UART 发送给主控芯片的数据的长度是不固定的,因此主控芯片就无法直接通过接收到数据的长度来判断 ATK-MW8266D 模块传来的一帧数据是否完成。 对于这种通过 UART 接收不定长数据的情况, 可以通过 UART 总线是否空闲来判断一帧的传输是否完成, 恰巧 STM32 的 UART 提供了总线空闲中断功能,因此可以开启 UART 的总线空闲中断,并在中断中做相应的处理, 具体的实现过程可以查看 ATK-MW8266D 模块的模块接口驱动代码。
2.2 ATK-MW8266D 模块驱动
atk_mw8266d.c 和 atk_mw8266d.h 是 ATK-MW8266D 模块的驱动文件,包含了 ATK-MW8266D 模块初始化、硬件复位、发送 AT 指令的相关 API 函数和部分 AT 指令的封装函数。函数比较多,下面仅介绍几个重要的 API 函数。
2.2.1 atk_mw8266d_init()
1 | /** |
从上面的代码中可以看出,函数 atk_mw8266d_init()会对 ATK-MW8266D 模块进行硬件复位(拉低 ATK-MW8266D 模块的 RST 引脚,随后拉高), 然后初始化主控芯片与ATK-MW8266D 模块的 UART,最后进行 AT 指令测试,若 AT 指令测试成功,则说明ATK-MW8266D 模块及其通讯接口初始化成功,反之,则初始化失败。
2.2.2 atk_mw8266d_at_test()
该函数用于对 ATK-MW8266D 模块进行 AT 指令测试,可以由此判断主控与ATK-MW8266D 模块的通讯是否无误,具体的代码,如下所示:
1 | /** |
从上面的代码中可以看出, 该函数会通过 UART 向 ATK-MW8266D 模块发送“AT”字符串(函数 atk_mw8266d_send_at_cmd()会根据通讯规则在字符串末尾添加换行符),并在一段时间内等待 ATK-MW8266D 模块的“OK”响应,如果收到 ATK-MW8266D 模块的“OK”响应,说明主控芯片与 ATK-MW8266D 模块的 UART 通讯正常, AT 指令测试成功,反之,则说明 AT 指令测试失败,主控芯片不能与 ATK-MW8266D 模块进行正常的通讯。
2.2.3 atk_mw8266d_send_at_cmd()
该函数主要实现主控芯片与 ATK-MW8266D 模块的 AT 指令传输,本驱动代码中的大部分驱动函数都是基于该函数实现的, 但由于 ATK-MW8266D 的 AT 指令众多,在驱动代码中无法一一实现, 因此在使用 ATK-MW8266D 模块的时候,可以参考驱动文件中的驱动函数,对函数
atk_mw8266d_send_at_cmd() 进行简单的封装,即可实现相应的功能。函数atk_mw8266d_send_at_cmd()的具体代码,如下所示:
1 | /** |
从上面的代码中可以看出,函数 atk_mw8266d_send_at_cmd()函数会将待发送的 AT 指令加上换行符后通过 UART 发送至 ATK-MW8266D 模块, 随后等待 ATK-MW8266D 模块的响应,并判断响应中是否包含期望等待的响应, 如果有,则说明本次 AT 指令传输成功。