午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

STM32 OTA例程之ESP8266

 xpxys99 2019-09-28

前言

這一節(jié),我們來(lái)聊聊STM32的FOTA例程中用到的WiFi芯片ESP8266。這里涉及到一個(gè)基于該芯片的WiFi模塊ESP-01。它是安信可公司基于ESP8266 芯片的WiFi模塊。在STM32 FOTA Demo工程里,我們用它來(lái)實(shí)現(xiàn)無(wú)線通信。下面先來(lái)認(rèn)識(shí)一下該模塊,然后在Demo里重點(diǎn)介紹基于ESP8266 芯片相關(guān)底層驅(qū)動(dòng)的實(shí)現(xiàn)過(guò)程。

ESP-01模塊

ESP-01模塊集成ESP8266EX WiFi芯片,支持802.11b/g/n協(xié)議,支持UART/GPIO等接口,內(nèi)嵌LwIP協(xié)議棧,支持STA/AP/STA+AP工作模式,是一款低成本的無(wú)線模塊。

ESP-01模塊采用DIP-8封裝。尺寸和引腳定義見(jiàn)下圖。提供一個(gè)UART接口和兩個(gè)GPIO口。

STM32 OTA例程之ESP8266

STM32F769探索板的CN2接口支持對(duì)ESP-01模塊的擴(kuò)展,可以直接將ESP-01模塊插在CN2接口上。STM32F769和ESP-01之間通過(guò)串口通信,串口配置為:115200波特率,8位數(shù)據(jù)位,無(wú)奇偶校驗(yàn),1位停止位。連接如下:

STM32 OTA例程之ESP8266

AT指令格式

ESP-01的AT指令集就是ESP8266的AT指令集??梢约?xì)分為四種類(lèi)型:

STM32 OTA例程之ESP8266

要注意的是,不是每條AT指令都具備上面4種類(lèi)型,具體要去看該條AT指令的說(shuō)明。

使用雙引號(hào)表示字符串?dāng)?shù)據(jù)。比如“123”,就是一個(gè)字符串,而123就是數(shù)字。

開(kāi)頭的AT指令兩個(gè)字符必須大寫(xiě),每條命令以回車(chē)換行符結(jié)尾“\r\n”

ESP8266的AT指令集又分為:基礎(chǔ)AT命令(對(duì)模塊的配置,串口設(shè)置等),WiFi功能AT命令(設(shè)置WiFi模式,連接AP等),TCP/IP功能AT命令(建立TCP連接,收發(fā)數(shù)據(jù)等)。

作為T(mén)CP客戶(hù)端工作

模塊初始化

程序上電運(yùn)行后,在開(kāi)始使用WiFi模塊前,必須先對(duì)其進(jìn)行初始化。除了GPIO口以及串口的初始化外,還需要對(duì)WIFI模塊進(jìn)行配置,使其工作在我們希望的模式下。在STM32 FOTA Demo里ESP8266應(yīng)該工作在STATION模式和多連接模式下。所以在初始化的時(shí)候,需要通過(guò)相應(yīng)的AT指令進(jìn)行配置。下面是初始化的代碼以及AT指令執(zhí)行的過(guò)程。

STM32 OTA例程之ESP8266

STM32 OTA例程之ESP8266

連接到AP

STM32 OTA例程之ESP8266

STM32 OTA例程之ESP8266

上圖的黃色部分是WiFi模塊的返回狀態(tài)。必須要接收到'OK\r\n',才能去讀取IP地址。連接WiFi熱點(diǎn)的過(guò)程,需要的時(shí)長(zhǎng)不一定,有時(shí)2、3秒,有時(shí)6、7秒。所以這里最好把等待的時(shí)間 留長(zhǎng)一點(diǎn),否則經(jīng)常會(huì)出現(xiàn)連接WiFi熱點(diǎn)失敗的情況。

與服務(wù)器建立連接

連接到WiFi熱點(diǎn)后,就可以開(kāi)始與服務(wù)器建立連接了。ESP8266支持5個(gè)并發(fā)連接。

一般我們知道的不是目標(biāo)服務(wù)器的IP地址,而是域名。所以在開(kāi)始創(chuàng)建連接之前需要先通過(guò)DNS服務(wù)獲該取域名對(duì)應(yīng)的IP地址。ESP8266也提供了相應(yīng)的AT指令。

下面是代碼中的一段和建立連接相關(guān)的代碼:

STM32 OTA例程之ESP8266

STM32 OTA例程之ESP8266

發(fā)送數(shù)據(jù)

發(fā)送數(shù)據(jù)過(guò)程分兩步:

1.發(fā)送AT+CIPSEND=<LINK ID>,<LENGTH>命令。說(shuō)明要往哪個(gè)socket通道,發(fā)送多少字節(jié)的數(shù)據(jù)。

2.收到WiFi模塊返回的'OK\r\n>'后,再發(fā)送數(shù)據(jù)。

下面是例程中,ESP8266發(fā)送數(shù)據(jù)的代碼實(shí)現(xiàn)。

STM32 OTA例程之ESP8266

STM32 OTA例程之ESP8266

接收數(shù)據(jù)的模式

STM32 OTA例程之ESP8266

注意:該示例中MQTT和HTTP應(yīng)用都在一個(gè)task里面調(diào)用,如果在不同的task實(shí)現(xiàn),接收驅(qū)動(dòng)需要做相應(yīng)修改。

小結(jié)

在例程中,和WiFi模塊相關(guān)的驅(qū)動(dòng)由三層組成:

在ESP8266_io.c中,是最底層的跟STM32外設(shè)打交道的部分。包括初始化引腳,從串口讀取和發(fā)送數(shù)據(jù);

Esp8266.c中是對(duì)AT指令的實(shí)現(xiàn)。

Wifi.c是WiFi底層驅(qū)動(dòng)和上層的一個(gè)接口。我們可以看到它的函數(shù)和ESP8266.c中的某些函數(shù)名字都很類(lèi)似。

我們前面講的內(nèi)容基本都在這三個(gè)文件中,對(duì)于如果想更換WIFI模塊來(lái)講,它主要涉及到的代碼也就是這三部分。

STM32 OTA例程之ESP8266

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多