[ESP32]ESP32 SPI 到 WIFI透传

一、前言

本篇文章是为了记录自己开发过程。

在大一的单片机课程设计中首次接触到WIFI透传,但是ESP8266+Uart的速度不是很高,就想着能不能用SPI或者是SDIO来替换。后来在网上没找到相关的例程便想着自己写一个,查阅乐鑫的手册发现,普通的ESP32的SPI接口的MISO速率只能达到10MHzs,而ESP32-S3的MISO速率能60MHz,不过最终还是选择了普通的ESP32。

二、功能

  1. 从SPI上读取WIFI数据
  2. 向SPI上发送WIFI数据
  3. 获取ESP32当前的WIFI信息(如SSID、PSWR、IP地址、soft或者是Station模式等)
  4. 配置ESP32的WIFI信息并能断电储存
  5. 能够控制ESP32重启

三、 实现

透传方案选择

1.ESP32每收到一组数据就进行转发

     这个办法对速度较低的通信具有一定的可行性,但速度一但变快则会丢包

2.存储转发

    使用链队对数据进行存储再经由SPI转发出去,这种方式对数据具有一定的缓冲能够应付较快的数据。

确定和使用存储转发的模式后,解决SPI通信的问题。SPI虽为全双工通信,但作为从机永远无法主动与主机进行通信,所以引入一根信号线告诉主机有WIFI信息的到来,让主机准备读取。

主机发送信息之前会先发送一个控制命令来告诉从机接下来进行那种操作。

主\从数据交互格式

        在解决基本的读写操作后除了传送要透传的数据,还要传输配置信息。配置信息使用JSON格式进行传输。主机对数据进行编码传输,从机先将配置信息保存后再解码应用。

ESP32数据存储方式

        ESP32模组一般自带一个SPI Flash,这就好办了直接上SPIFFS文件系统,将JSON格式的配置信息以文件的方式保存在SPI Flash中。这个一般设置分区表

四、效果展示

STM32接收来自WIFI上的JPEG数据

使用另一个ESP32-S3采集ov2640的JPEG数据通过WIFI发送给透传模块,在经由透传模块发送给STM32,最终STM32使用串口发送给正点原子的ATK-CAM软件。可以看到发送320 240的JPEG图片能达到18FPS,速度能达到85KB/s。

WIFI接受来自STM32的数据

STM32直接通过透传模块发送JPEG给ATK-CAM,速度能达到75KB/s。

边发边收

这个是电脑和STM32之间进行的通信

ATK-CAM <--uart-- STM32 <---WIFI-->NETAssist

这个速度就拉了,只有20KB

五、结语 

基本实现了WIFI数据透传,也算是满足了我最开始能作为遥控车的视频图传的要求,但还是有些瑕疵,因此就不分享给大家了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值