前言
這一節,我們來聊聊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指令集??梢约毞譃樗姆N類型:
要注意的是,不是每條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=,
2.收到WiFi模塊返回的"OK\r\n>"后,再發送數據。
下面是例程中,ESP8266發送數據的代碼實現。
接收數據的模式
注意:該示例中MQTT和HTTP應用都在一個task里面調用,如果在不同的task實現,接收驅動需要做相應修改。
小結
在例程中,和WiFi模塊相關的驅動由三層組成:
在ESP8266_io.c中,是最底層的跟STM32外設打交道的部分。包括初始化引腳,從串口讀取和發送數據;
Esp8266.c中是對AT指令的實現。
Wifi.c是WiFi底層驅動和上層的一個接口。我們可以看到它的函數和ESP8266.c中的某些函數名字都很類似。
我們前面講的內容基本都在這三個文件中,對于如果想更換WIFI模塊來講,它主要涉及到的代碼也就是這三部分。
-
接口
+關注
關注
33文章
8496瀏覽量
150834 -
STM32
+關注
關注
2266文章
10871瀏覽量
354789 -
WIFI
+關注
關注
81文章
5286瀏覽量
203276
原文標題:STM32 OTA例程之ESP8266:你會不會正確使用?
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論