#esp32 #hardware-abstraction #hal #esp-idf #abstraction-layer #idf

sys no-std esp-idf-hal

基于 ESP-IDF 框架的 Espressif ESP 系列微控制器的硬件抽象层

67 个版本

0.44.1 2024年7月9日
0.43.1 2024年2月22日
0.42.5 2023年11月12日
0.41.2 2023年6月21日
0.1.2 2019年8月7日

嵌入式开发 中排名 58

Download history 3382/week @ 2024-05-03 3435/week @ 2024-05-10 3397/week @ 2024-05-17 2858/week @ 2024-05-24 3421/week @ 2024-05-31 2999/week @ 2024-06-07 3197/week @ 2024-06-14 3885/week @ 2024-06-21 3110/week @ 2024-06-28 3112/week @ 2024-07-05 3544/week @ 2024-07-12 3869/week @ 2024-07-19 3080/week @ 2024-07-26 3516/week @ 2024-08-02 3208/week @ 2024-08-09 2959/week @ 2024-08-16

每月下载量 13,330
29 Crates 中使用(直接使用 19 个)

MIT/Apache

725KB
16K SLoC

ESP IDF SDK 中的驱动程序提供安全的 Rust 包装器

CI crates.io Documentation Matrix Wokwi

亮点

  • 实现了 embedded-hal V0.2V1.0 的 trait,包括阻塞和异步
  • 支持几乎所有 ESP IDF 驱动程序:GPIO、SPI、I2C、TIMER、PWM、I2S、UART 等
  • 每个驱动程序的阻塞和 async 模式(正在开发异步支持)
  • esp-idf-sys 重新导出为 esp_idf_hal::sys

您还可以查看 ESP IDF 的 服务 包装器和在 esp-idf-sys crate 中的 ESP IDF 原始绑定!

(对于裸机 Rust ESP 项目,请检查 esp-hal。)

构建先决条件

遵循 esp-idf-template crate 中的 先决条件 部分。

示例

可以使用 cargo-espflash 方便地构建和烧录示例。例如,在 ESP32-C3 上运行 ledc_simple:(将 Rust 目标和示例名称与您的 ESP32 MCU 相对应的目标以及您要构建的示例进行交换)

使用 cargo-espflash

$ MCU=esp32c3 cargo espflash flash --target riscv32imc-esp-espidf --example ledc_simple --monitor
MCU "--target"
ESP32-C2 riscv32imc-esp-espidf
ESP32-C3 riscv32imc-esp-espidf
ESP32-C6 riscv32imac-esp-espidf
ESP32-H2 riscv32imac-esp-espidf
ESP32-P4 riscv32imafc-esp-espidf
ESP32 xtensa-esp32-espidf
ESP32-S2 xtensa-esp32s2-espidf
ESP32-S3 xtensa-esp32s3-espidf

为了在其他芯片上运行示例,您可能需要至少调整所使用的引脚。

使用ESP IDF设置"Hello, world!"二进制crate

使用esp-idf-template项目。所有设置和构建工作将自动完成 - 您无需手动克隆ESP IDF仓库。

更多信息

有关更多信息,请参阅以下内容:

硬件说明

每个芯片都有一些GPIO引脚,通常由SPI0和SPI1外设使用,以连接外部PSRAM和/或SPI闪存。数据表明确指出,不建议使用这些引脚,但为了完整性,此crate仍然包括它们。

请参考下表以确定不建议使用的引脚。

芯片 GPIOs
ESP32 6 - 11, 16 - 17
ESP32-C2 12 - 17
ESP32-C3 12 - 17
ESP32-C6 24 - 30
ESP32-H2 15 - 21
ESP32-S2 26 - 32
ESP32-S3 26 - 32, 33 - 37*

* 当使用八位闪存和/或八位PSRAM时

依赖项

~4–13MB
~147K SLoC