0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用SPI玩转WiFi,RT-Thread ESP-Hosted驱动深度适配指南 | 技术集结

RT-Thread官方账号 2025-07-09 19:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

还在为MCU的WiFi连接方案发愁?RT-Thread社区开源ESP-Hosted驱动,通过标准SPI接口即可实现,并且该仓库已整理成RT-Thread软件包。RT-Thread ESP-Hosted项目在MIT license下作为一个整体,但包含第三方代码在其他许可下。请仔细阅读以下不同许可代码的说明。

目录


用途


概述


使用


硬件连接


构建ESP32固件


检查启动


固件更新


芯片支持

1

用途


用于MCU的spi接口WiFi驱动,适用于已适配RT-Thread的MCU。

已接入RT-Thread的spi设备驱动和wlan框架,与硬件无关代码。

该驱动使用rt-thread标准的spi设备通讯,wlan框架实现wifi命令行的支持

提供esp-idf命令一样的WiFi API调用

上代码:rt-thread_esp-hosted(https://github.com/Evlers/rt-thread_esp-hosted)


2

概述


该存储库已将ESP-Hosted-MCU适配于RT-Thread系统,⽬前仅⽀持SPI总线协议,并使⽤RT-ThreadSPI Device进⾏SPI总线操作。


这个版本的ESP-Hosted提供:

⼀个标准的802.3⽹络接⼝,⽤于发送和接收802.3帧

⽀持蓝⽛/BLE的标准HCI接⼝

ESP32芯⽚配置和控制Wi-Fi的控制接⼝

⽤于升级ESP固件的OTA接⼝

ESP-Hosted-MCU解决⽅案利⽤主机现有的TCP/IP 和 蓝牙/BLE 协议栈SPI/SDIO/UART 等硬件外设连接到ESP固件,软件层非常薄。


虽然这个项目没有为主机提供标准的802.11接口,但它提供了⼀种简单的方法,既Remote Procedure Calls(RPCs)用于配置Wi-Fi。对于主机和ESP板之间的RPC,ESP-Hosted-MCU使用了Protobuf(https://developers.google.com/protocol-buffers),这是⼀种独立于语⾔的数据序列化机制。


关于ESP-Hosted-MCU的详细信息可以在ESP-Hosted README(https://github.com/Evlers/rt-thread_es

p-hosted/blob/master/esp-hosted/README.md)中找到。


3

使用


1添加这个仓库

将存储库克隆到RT-Thread项目中的packageslibraries目录。

在RT-Thread项目的librariespackages文件夹中,在其Kconfig文件中包含用于ESP-HostedKconfig文件。

例如,将ESP-Hosted包含在libraries目录中:

menu"External Libraries" source"$RTT_DIR/../libraries/rt-thread_esp-hosted/Kconfig"endmenu

2配置 ESP-Hosted

env窗口中使用menuconfig命令

选中Using esp-hosted for espressif

→ExternalLibraries [*]Usingesp-hostedforespressif --->

进入Using esp-hosted for espressif菜单,配置esp-hosted:

---Usingesp-hosted for espressif ESP-HostedConfigure ---> # ESP-Hosted 配置Selectthe transport interface(SPI) ---> # 选择传输接口 Slave chipset to be used(Slave as ESP32C6) ---> # 选择从机芯片 [ ] Enable raw throughput transport ---- # 启用原始吞吐量传输 [ ] Enable Transport level packet statistics # 启用传输级别数据包统计(8) The maximum number of simultaneous sync rpc requests # 同步RPC请求的最大数量(8) The maximum number of simultaneous async rpc requests # 异步RPC请求的最大数量(20) The priority of the esp-hostedrpc thread # RPC线程的优先级(5120) The stack size of the esp-hostedrpc thread # RPC线程的堆栈大小(20) The priority of the esp-hostedtransport thread # 传输线程的优先级(1024) The stack size of the esp-hostedSPI thread # SPI线程的堆栈大小(8) The numberforesp-hostedSPI queue # SPI传输队列的数量(esp-hosted)Setthe spi device name # SPI设备名称(spi1)Setthe spi bus name # SPI总线名称(30000000)Setthe maximum spi frequency(Hz) # SPI传输的最大频率 Selectthe pin name ornumber(Name) ---> # 选择引脚名称或编号(PE.7)Setthe SPI CS pin name # SPI CS引脚名称(PE.5)Setthedataready pin name # 数据就绪引脚名称(PE.6)Setthe handshake pin name # 握手引脚名称(PE.4)Setthe reset pin name # 复位引脚名称 [*] Use thread initialization # 使用线程初始化(2048) The stack size of the init thread # 初始化线程的堆栈大小(20) The priority of the init thread # 初始化线程的优先级 [*] Enable Bluetooth ---> # 启用蓝牙/BLE HCI接口 Selecthci interface(Usingvhci device drivers) ---> # 选择HCI接口(vhci) The vhci device name # vhci设备名称 Wi-FiConfigure ---> # Wi-Fi 配置(40) Max number of WiFistaticRX buffers # 静态RX缓冲区最大数量(60) Max number of WiFi dynamic RX buffers # 动态RX缓冲区最大数量 Typeof WiFi TX buffers(Dynamic) ---> # WiFi TX缓冲区类型(16) Max number of WiFi cache TX buffers # WiFi TX缓存最大数量(40) Max number of WiFi dynamic TX buffers # TX动态缓冲区最大数量 [ ] WiFi CSI(Channel State Information) # Wi-Fi CSI [ ] WiFi AMPDU TX # AMPDU TX(数据聚合) [ ] WiFi AMPDU RX # AMPDU RX(数据聚合)(752) Max length of WiFi SoftAP Beacon # SoftAP Beacon最大长度(32) WiFi mgmt short buffer number # WiFi mgmt short buffer数量 [*] Enable WPA3-Personal # WPA3-Personal [ ] WiFi FTM # WiFi FTM [*] Power Managementforstation at disconnected # Wi-Fi PM [ ] WiFi GCMP Support(GCMP128 and GCMP256) # Wi-Fi GCMP [ ] WiFi GMAC Support(GMAC128 and GMAC256) # Wi-Fi GMAC(7) Maximum espnow encrypt peers number # espnow加密对等数量 [ ] Enable802.11R(Fast Transition) Support # 802.11R

ESP-Hosted Configure菜单中,主要是传输接口从机芯片以及传输以为的引脚配置,其他的默认即可。


Select hci interface选项用于选择使用vhci设备驱动或者NimBLE hci驱动 的HCI接口。


选择 vhci设备驱动 将创建一个字符类型设备,该设备将模拟蓝牙HCI接口。


选择NimBLE hci 驱动将直接接入NimBLE协议栈。

Wi-Fi Configure菜单中,主要是关于ESP32WiFi参数配置。


WiFi AMPDU TXWiFi AMPDU RX选项建议关闭,在测试中发现开启后,Wi-Fi容易丢包,可能是由于路由器不遵循标准协议导致。


4

硬件连接


4e73c638-5cb4-11f0-9cf1-92fbcf53809c.png

如果您熟悉esp-idf,您也可以尝试修改引脚

或者使⽤Flash Download Tool(https://dl.espressif.com/public/flash_download_tool.zip) 烧录firmware目录中对应芯片的固件。


5

构建ESP32固件


$cdesp-hosted/slave$rm-rf sdkconfig build$idf.py set-target

其中 可以是 “esp32”, “esp32s2”, “esp32s3”, “esp32c2”, “esp32c3”, “esp32c5”, “esp32c6”

执行以下命令配置项目

$idf.py menuconfig

这将打开项目配置窗口。 要选择SPI传输接口,导航到ESP-Hosted Configuration -> Transport layer -> SPI interface -> select然后退出菜单配置。

要构建并烧录应用程序到ESP设备,请运行

$idf.py -p build flash

收集ESP固件日志使用

$idf.py -p monitor


6

检查启动


1从机日志

在成功烧录后,您应该在ESP日志中看到以下信息:

I (412) NETWORK_ADAPTER:*********************************************************************I (422) NETWORK_ADAPTER: ESP-Hosted-MCU Slave FW version :: 1.0.0I (432) NETWORK_ADAPTER: Transport used :: SPI onlyI(442) NETWORK_ADAPTER:*********************************************************************

2主机日志

您应该在主机日志中看到以下信息:

\ | /- RT - Thread Operating System/ | \ 5.0.2build Feb15202509:39:292006-2022CopyrightbyRT-Thread teamlwIP-2.1.2initialized![4] I/SFUD: Found a Winbond flash chip. Sizeis16777216bytes.[9] I/SFUD: norflash flash device initialized successfully.[14] I/SFUD: Probe SPI flash norflashbySPI device spiflash success.[I/FAL] RT-Thread Flash Abstraction Layer initialize success.[39] I/sal.skt: Socket Abstraction Layer initialize success.[I/FAL]The FAL blockdevice(filesystem) created successfully[154] I/SDIO: SD card capacity 31166976 KB.found part[0], begin: 2097152, size: 29.738GB[167] I/filesystem: sd card mount to '/sdcard'[1265] I/transport: Features supported are:[1266] I/transport: - WLAN over SPI[1269] I/transport: - HCI over SPI[1273] I/transport: - BLE only[1276] I/transport: Chipis: ESP32c6[1279] I/vhci.dev: Host BT Support: Enabled[1283] I/vhci.dev: BT Transport Type: vhci devices[2387] I/WLAN.dev: wlaninitsuccess[2424] I/WLAN.lwip: eth deviceinitok name:w0[2426] I/WLAN.dev: wlaninitsuccess[2444] I/WLAN.lwip: eth deviceinitok name:w1


7

固件更新


ESP-Hosted支持通过传输接口升级ESP32固件,升级过程如下:

msh />esp_ota /flash/network_adapter.binesp-hosted ota update startederasing the ota partition..writing: [==================================================] 100% 1084496 | 100 KB/sfirmware write success!!slave will restart after 5 sec

esp_ota命令可以支持在线下载或者本地文件作为固件升级包。

在线下载方式需要依赖webclient软件包:

msh />esp_ota https://file.server.com/network_adapter.binesp-hosted ota update startederasing the ota partition..writing: [==================================================] 100% 1084496 | 81 KB/sfirmware write success!!slave will restart after 5 secmsh />


8

芯片支持



4e86ddcc-5cb4-11f0-9cf1-92fbcf53809c.png

‘x’ 表示不支持

‘o’ 表示已测试和支持

‘*’ 表示理论上支持,但未经检验的


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动
    +关注

    关注

    12

    文章

    1928

    浏览量

    88204
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1866

    浏览量

    99817
  • WIFI
    +关注

    关注

    82

    文章

    5468

    浏览量

    212011
  • RT-Thread
    +关注

    关注

    32

    文章

    1540

    浏览量

    44286
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于RT-ThreadSPI通讯

         sdk 目前还不支持 spi,没有 spi 就失去了很多乐趣,如 easyflash、spi 的屏幕,蓝讯的这次活动我接到了模拟 spi 的任务,下面介绍如何写
    的头像 发表于 08-22 09:28 2609次阅读

    BL808 RT-Thread Wi-Fi驱动适配

    BL808 WiFi 属于 SOC 单芯片型无线 MCU,片上集成 WiFi 功能,移植 RT-Thread 过程中,需要使用 RT-Thread wlan 框架。
    的头像 发表于 12-04 11:38 1657次阅读

    RT-Thread设备驱动开发指南基础篇—以先楫bsp的hwtimer设备为例

    RT-Thread设备驱动开发指南》书籍是RT-thread官方出品撰写,系统讲解RT-thread IO设备
    的头像 发表于 02-20 16:01 3175次阅读
    <b class='flag-5'>RT-Thread</b>设备<b class='flag-5'>驱动</b>开发<b class='flag-5'>指南</b>基础篇—以先楫bsp的hwtimer设备为例

    RT-Thread Nano硬核移植指南:手把手实现VGLite图形驱动适配 | 技术集结

    VGLite是NXP提供的轻量级2D图形API,本文将手把手带你实现VGLite图形驱动适配RT-Thread。文章分为上、下两篇,将手把手教您移植。上篇对RT-ThreadNano内
    的头像 发表于 07-17 14:40 3042次阅读
    <b class='flag-5'>RT-Thread</b> Nano硬核移植<b class='flag-5'>指南</b>:手把手实现VGLite图形<b class='flag-5'>驱动</b><b class='flag-5'>适配</b> | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    基于MM32F5270开发板RT-Thread SPI驱动适配指南

    1、第一次给RT-Thread添加芯片SPI驱动  为MM32F5370开发板添加SPI驱动支持的过程。
    发表于 09-02 14:59

    RT-Thread编程指南

    RT-Thread编程指南——RT-Thread开发组(2015-03-31)。RT-Thread做为国内有较大影响力的开源实时操作系统,本文是RT
    发表于 11-26 16:06 0次下载

    RT-ThreadSPI的细节内容

    作为通信协议的两大基础,IIC和SPI两者的应用都非常广泛,上一篇文章讲过了RTT上IIC的移植与实践。 《一步到位!教你RT-Thread上设备IIC驱动移植》 讲完IIC,自然少不了SPI
    的头像 发表于 09-30 15:35 4581次阅读
    <b class='flag-5'>RT-Thread</b>上<b class='flag-5'>SPI</b>的细节内容

    RT-Thread全球技术大会:萤石研发团队使用RT-Thread技术挑战

    RT-Thread全球技术大会:研发团队使用RT-Thread技术挑战         审核编辑:彭静
    的头像 发表于 05-27 11:36 1864次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:萤石研发团队使用<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>技术</b>挑战

    RT-Thread文档_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文档_RT-Thread 潘多拉 STM32L475 上手指南
    发表于 02-22 18:23 10次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手<b class='flag-5'>指南</b>

    RT-Thread文档_RT-Thread SMP 介绍与移植

    RT-Thread文档_RT-Thread SMP 介绍与移植
    发表于 02-22 18:31 9次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> SMP 介绍与移植

    RT-Thread文档_SPI 设备

    RT-Thread文档_SPI 设备
    发表于 02-22 18:36 3次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>SPI</b> 设备

    RT-Thread设备驱动开发指南》基础篇--以先楫bsp的hwtimer设备为例

    一、概述(一)RT-Thread设备驱动RT-Thread设备驱动开发指南》书籍是RT-thread
    的头像 发表于 02-24 08:16 3183次阅读
    《<b class='flag-5'>RT-Thread</b>设备<b class='flag-5'>驱动</b>开发<b class='flag-5'>指南</b>》基础篇--以先楫bsp的hwtimer设备为例

    【好书推荐】RT-Thread设备驱动开发指南

    近年来国内芯片产业和物联网产业的快速崛起,行业发展迫切需要更多人才,尤其需要掌握嵌入式操作系统等底层技术的人才。随着RT-Thread被更广泛地应用于行业中,开发者对嵌入式驱动开发的需求越来越
    的头像 发表于 08-01 08:35 1804次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>设备<b class='flag-5'>驱动</b>开发<b class='flag-5'>指南</b>

    【S32K146 RT-thread】之 SPI驱动适配

    概述RT-ThreadSPI总线的驱动,抽象出了spibus的设备驱动,我们基于S32K146的硬件学习spibus设备驱动
    的头像 发表于 11-01 08:11 1772次阅读
    【S32K146 <b class='flag-5'>RT-thread</b>】之 <b class='flag-5'>SPI</b><b class='flag-5'>驱动</b><b class='flag-5'>适配</b>

    【S32K146 RT-Thread】之 使用SFUD组件驱动spi flash

    【S32K146 RT-Thread】之 使用SFUD组件驱动spi flash
    的头像 发表于 11-21 01:05 1644次阅读
    【S32K146 <b class='flag-5'>RT-Thread</b>】之 使用SFUD组件<b class='flag-5'>驱动</b><b class='flag-5'>spi</b> flash