当前位置: 首页 > news >正文

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 *
http://www.xdnf.cn/news/82441.html

相关文章:

  • Unity 脚本使用(二)——UnityEngine.AI——NavMesh
  • vscode使用笔记
  • spdlog日志库使用教程(含踩坑问题解决)
  • 2.6 递归
  • 2025.4.22学习日记 JavaScript的常用事件
  • 多模态大语言模型arxiv论文略读(三十四)
  • QEMU源码全解析 —— 块设备虚拟化(21)
  • go中map和slice非线程安全
  • 不可变数据:基于持久化数据结构的状态管理
  • Seata 分布式事务 快速开始
  • 动态规划算法:完全背包类问题
  • 应用案例|兵器重工:某体系需求视图模型开发
  • [论文阅读]ConfusedPilot: Confused Deputy Risks in RAG-based LLMs
  • docker容器,mysql的日志文件怎么清理
  • 【安装neo4j-5.26.5社区版 完整过程】
  • matlab设置不同颜色的柱状图
  • 华为网路设备学习-19 路由策略
  • 植物大战僵尸杂交版v3.6最新版本(附下载链接)
  • ROS 快速入门教程01
  • 加油站小程序实战教程13充值规则配置
  • 健康生活新指南
  • Java转Go日记(六):TCP黏包
  • npm i 出现permission denied
  • 树莓派学习专题<8>:使用V4L2驱动获取摄像头数据--获取摄像头支持的分辨率
  • 【Nova UI】六、SASS 赋能组件库:通用方法与混入的变革力量
  • 安宝特分享|AR智能装备赋能企业效率跃升
  • 记录一次使用面向对象的C语言封装步进电机驱动
  • IDEA热加载
  • vue3 + element-plus中el-drawer抽屉滚动条回到顶部
  • drupal7可以从测试环境一键部署到生产环境吗