STM32提高篇: WIFI通讯
STM32提高篇: WIFI通讯
- 一.WIFI通讯介绍
- 1.WiFi的频段5G和2.4G
- 2.WiFi的信道
- 二.ESP32固件烧录及驱动
- 1.一个AT指令响应的完成
- 2.测试其他指令
- 三.Wifi功能初始化和TCP通讯
- 四.volatile关键字
一.WIFI通讯介绍
Wi-Fi,又称“无线网路”,是Wi-Fi联盟的商标,一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常写作“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。
Wi-Fi这个术语经常被误以为是指无线保真(Wireless Fidelity),类似历史悠久的音频设备分类:长期高保真(1930年开始采用)或Hi-Fi(1950年开始采用)。即便是Wi-Fi联盟本身也经常在新闻稿和文件中使用“Wireless Fidelity”这个词,Wi-Fi还出现在ITAA的一个论文中。事实上,Wi-Fi一词是没有任何意义,也没有全写的。
1999年,几家富有远见的公司联合起来组成了一个全球性非营利性协会——无线以太网兼容性联盟(Wireless Ethernet Compatibility Alliance, WECA),其目标是使用一种新的无线网络技术,无论品牌如何,都能带来最佳的用户体验。在2000年,该小组采用术语“Wi-Fi”作为其技术工作的专有名称,并宣布了正式名称:Wi-Fi Alliance。
1.WiFi的频段5G和2.4G
2.4G Wi-Fi与5G Wi-Fi最本质的区别即工作频段(无线电波的频率)不一样,如下表所示,5G Wi-Fi频段有更高的频率和频宽,可以提供更高的速率和更小的信道干扰。
2.WiFi的信道
目前用的频段有2个5G和2.4G频段,每个频段又分为若干频道,又称为信道。如果把频段理解为高速公路的话,那么信道可以理解高速公路上的车道。
2.4G:
在标准协议里将2.4GHz频段划分出13个相互交叠的信道,每个信道的频宽是20MHz(802.11g、802.11n每个信道占用20MHz,802.11b每个信道占用22MHz),每个信道都有自己的中心频率。
这13个信道可以找出3个独立信道,即没有相互交叠的信道。独立信道由于没有频率的交叠区,相邻AP使用这3个独立信道不会彼此产生干扰。如下图中的1、6、11就是三个互不交叠的独立信道。
5G:
标准协议将5GHz频段分为24个20MHz宽的信道,且每个信道都为独立信道。这为WLAN提供了丰富的信道资源,更多的独立信道也使得信道绑定更有价值,信道绑定是将两个信道绑定成一个信道使用,能提供更大的带宽。如两个20MHz的独立信道绑定在一起可以获得40MHz的吞吐量,这好比将两条道路合并成一条使用,自然就提高了道路的通过能力。
下图中,黑色的半圆表示独立信道,红色的半圆表示标准协议推荐的信道绑定。
二.ESP32固件烧录及驱动
烧录中:
测试AT命令集:
使用UART2和ESP32进行数据交互,PE4默认使能。
选择STM32的USART2:
默认高电平:
UART2发送AT指令函数:
void Inf_ESP32_Init(void)
{/* 接收串口数据: 通过中断的方式 . 必须先调用先开中断,当数据接收完毕之后,再关闭中断1. 如果碰到了空闲帧,会产生中断2. 如果收到的数据>=128个字节, 也会结束这次接收*/HAL_UARTEx_ReceiveToIdle_IT(&huart2, rxBuff, 128);/* 1. 测试esp32是否正常: "AT\r\n" */Inf_ESP32_SendCmd("AT\r\n");/* 2. 重启模块 并进入正常模式 */Inf_ESP32_SendCmd("AT+RST=0\r\n");HAL_Delay(3000);Inf_ESP32_SendCmd("AT\r\n");/* 3. 查询版本信息 */Inf_ESP32_SendCmd("AT+GMR\r\n");
}
/*
当碰到空闲帧 或者收到的数据大于等于128
size: 表示实际收到的字节数
*/
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *