11个版本 (7个破坏性更新)
0.7.1 | 2024年7月17日 |
---|---|
0.6.0 | 2024年6月4日 |
0.4.0 | 2024年3月12日 |
0.1.1 | 2023年11月27日 |
#89 in 嵌入式开发
1,506 每月下载量
3MB
71K SLoC
esp-wifi
Espressif微控制器的WiFi、BLE和ESP-NOW驱动程序
当前支持
如果单元格包含破折号(—),则表示该功能不支持该芯片。勾号(✓)表示存在某些驱动程序实现。波浪号(˜)表示已实现但存在错误。空单元格表示该功能在芯片中存在但尚未实现。
WiFi | BLE | Coex | ESP-NOW | |
---|---|---|---|---|
ESP32 | ✓ | ✓ | ✓ | ✓ |
ESP32-C2 | ✓ | ✓ | ✓ | ✓ |
ESP32-C3 | ✓ | ✓ | ✓ | ✓ |
ESP32-C6 | ✓ | ✓ | ✓ | ✓ |
ESP32-H2 | — | ✓ | — | — |
ESP32-S2 | ✓ | — | — | ✓ |
ESP32-S3 | ✓ | ✓ | ✓ | ✓ |
最低支持的Rust编译器版本:1.72.0.0
使用方法
导入
确保为您的芯片启用了正确的功能。有关更多示例,请参阅[示例]。
[dependencies.esp-wifi]
# A supported chip needs to be specified, as well as specific use-case features
features = ["esp32s3", "wifi", "esp-now"]
链接配置
请确保包含目标rom函数
# .cargo/config.toml
rustflags = [
"-C", "link-arg=-Tlinkall.x",
"-C", "link-arg=-Trom_functions.x",
]
截至编写本文时,如果您已使用cargo generate
,则您将已具有linkall
标志。从模板生成不包括rom_functions
标志。
优化级别
必须使用2或3级优化进行构建,否则可能甚至无法连接或广播。
要使它对您的调试构建也生效,请将以下内容添加到您的Cargo.toml
[profile.dev.package.esp-wifi]
opt-level = 3
Xtensa注意事项
在此crate中,使用CCOMPARE0
CPU计时器进行计时,请确保在您的应用程序中您没有使用此CPU计时器。
USB-SERIAL-JTAG
当使用USB-SERIAL-JTAG时(例如,通过在esp-println
中选择jtag-serial
),您必须激活功能phy-enable-usb
。
如果您不使用USB-SERIAL-JTAG,则不要使用此功能,因为它可能会降低WiFi性能。
功能
功能 | 含义 |
---|---|
wifi-logs | 记录驱动程序的WiFi日志,日志级别为info (需要夜间编译器) |
wifi-default | 一个方便的功能,用于启用WiFi使用的一些合理默认设置。 |
dump-packets | 在日志级别info 下转储数据包信息 |
smoltcp | 提供smoltcp 特质的实现 |
utils | 提供smoltcp初始化的实用工具。添加smoltcp 依赖项 |
ble | 启用BLE支持 |
wifi | 启用WiFi支持 |
esp-now | 启用esp-now支持 |
coex | 启用WiFi-BLE共存支持 |
ipv4 | IPv4支持。包括utils 功能 |
ipv6 | IPv6支持。包括utils 功能 |
tcp | TCP套接字支持。包括ipv4 功能 |
udp | UDP套接字支持。包括ipv4 功能 |
igmp | IGMP(多播)支持。包括ipv4 功能 |
dns | DNS支持。包括udp 功能 |
dhcpv4 | DHCPv4支持,包括创建套接字和自动配置网络设置。包括utils 功能 |
phy-enable-usb | 参见上面的USB-SERIAL-JTAG |
ps-min-modem | 启用最小调制解调器睡眠。仅影响STA模式 |
ps-max-modem | 启用最大调制解调器睡眠。仅影响STA模式 |
log | 将日志输出路由到log crate |
defmt | 添加defmt::Format 实现,并通过defmt 输出日志 |
embedded-svc | 实现嵌入式-svc WiFi特质 |
注意,并非所有功能都适用于每个MCU。例如,ble
(以及因此,coex
)在ESP32-S2上不可用。
当使用dump-packets
功能时,您可以使用extras/esp-wifishark
中的extcap在Wireshark中分析帧。有关更多信息,请参阅extras/esp-wifishark/README.md
调整
esp-wifi
和示例中使用的默认值相当保守。可以更改一些重要的设置。
有关详细信息,请参阅调整
缺失/待完成
- 非开放SoftAP支持
目录结构
src/timer/
:用于计时和任务切换的系统计时器代码src/preemt/
:一个基本的RISCV和Xtensa循环任务调度器src/compat/
:用于模拟足够的(RT)OS以使用驱动程序所需的代码common.rs
:如信号量和多级互斥锁等基础知识timer_compat.rs
:模拟计时器相关功能的代码
examples/*.rs
:示例
驱动程序版本
这使用来自https://github.com/esp-rs/esp-wireless-drivers-3rdparty的WiFi驱动程序
v5.1.2-602-gdb1e54a0c5-dirty commit db1e54a0c537d8b2cc2bd109ee88b50e1ca0ea80
https://github.com/esp-rs/esp-wireless-drivers-3rdparty/ (commit ca2809144cf6d2f89d413f1d415f1c4454ee6249)
许可
在以下任一项许可下:
- Apache License,版本2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义的您有意提交以包含在作品中的任何贡献,应双重许可,如上所述,不附加任何额外条款或条件。
依赖项
~94MB
~357K SLoC