datasheet

STM32单片机

文章数:293 被阅读:897017

账号入驻

STM32 OTA例程之ESP8266:你会不会正确使用?

2018-11-03
    阅读数:


前言

这一节,我们来聊聊STM32的FOTA例程中用到的WiFi芯片ESP8266。这里涉及到一个基于该芯片的WiFi模块ESP-01。它是安信可公司基于ESP8266 芯片的WiFi模块。在STM32 FOTA Demo工程里,我们用它来实现无线通信。下面先来认识一下该模块,然后在Demo里重点介绍基于ESP8266 芯片相关底层驱动的实现过程。 


ESP-01模块


ESP-01模块集成ESP8266EX WiFi芯片,支持802.11b/g/n协议,支持UART/GPIO等接口,内嵌LwIP协议栈,支持STA/AP/STA+AP工作模式,是一款低成本的无线模块。


 ESP-01模块采用DIP-8封装。尺寸和引脚定义见下图。提供一个UART接口和两个GPIO口。

STM32F769探索板的CN2接口支持对ESP-01模块的扩展,可以直接将ESP-01模块插在CN2接口上。STM32F769和ESP-01之间通过串口通信,串口配置为:115200波特率,8位数据位,无奇偶校验,1位停止位。连接如下:


AT指令格式



ESP-01的AT指令集就是ESP8266的AT指令集。可以细分为四种类型:

要注意的是,不是每条AT指令都具备上面4种类型,具体要去看该条AT指令的说明。

使用双引号表示字符串数据。比如“123”,就是一个字符串,而123就是数字。

开头的AT指令两个字符必须大写,每条命令以回车换行符结尾“\r\n”


ESP8266的AT指令集又分为:基础AT命令(对模块的配置,串口设置等),WiFi功能AT命令(设置WiFi模式,连接AP等),TCP/IP功能AT命令(建立TCP连接,收发数据等)。


作为TCP客户端工作


模块初始化

程序上电运行后,在开始使用WiFi模块前,必须先对其进行初始化。除了GPIO口以及串口的初始化外,还需要对WIFI模块进行配置,使其工作在我们希望的模式下。在STM32 FOTA Demo里ESP8266应该工作在STATION模式和多连接模式下。所以在初始化的时候,需要通过相应的AT指令进行配置。下面是初始化的代码以及AT指令执行的过程。

连接到AP

上图的黄色部分是WiFi模块的返回状态。必须要接收到"OK\r\n",才能去读取IP地址。连接WiFi热点的过程,需要的时长不一定,有时2、3秒,有时6、7秒。所以这里最好把等待的时间 留长一点,否则经常会出现连接WiFi热点失败的情况。


与服务器建立连接

连接到WiFi热点后,就可以开始与服务器建立连接了。ESP8266支持5个并发连接。

一般我们知道的不是目标服务器的IP地址,而是域名。所以在开始创建连接之前需要先通过DNS服务获该取域名对应的IP地址。ESP8266也提供了相应的AT指令。

下面是代码中的一段和建立连接相关的代码:

发送数据

发送数据过程分两步:

1.发送AT+CIPSEND=<LINK ID>,<LENGTH>命令。说明要往哪个socket通道,发送多少字节的数据。

2.收到WiFi模块返回的"OK\r\n>"后,再发送数据。

下面是例程中,ESP8266发送数据的代码实现。

接收数据的模式

注意:该示例中MQTT和HTTP应用都在一个task里面调用,如果在不同的task实现,接收驱动需要做相应修改。


小结


在例程中,和WiFi模块相关的驱动由三层组成:

在ESP8266_io.c中,是最底层的跟STM32外设打交道的部分。包括初始化引脚,从串口读取和发送数据;

Esp8266.c中是对AT指令的实现。

Wifi.c是WiFi底层驱动和上层的一个接口。我们可以看到它的函数和ESP8266.c中的某些函数名字都很类似。

我们前面讲的内容基本都在这三个文件中,对于如果想更换WIFI模块来讲,它主要涉及到的代码也就是这三部分。


↓↓↓ 点击“阅读全文”,了解更多详情。

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved