1 个不稳定版本
0.3.1 | 2023年1月13日 |
---|
#753 in 嵌入式开发
71KB
1K SLoC
esp32-wroom-rp
一个基于Rust的RP2040系列驱动程序,通过Espressif ESP32-WROOM-32U/UE WiFi子控制器/板提供WiFi功能。
支持ESP32-WROOM-32E、ESP32-WROOM-32UE模块。
未来的实现将支持ESP32-WROOM-DA模块。
使用方法
use rp2040_hal as hal;
use esp32_wroom_rp::{wifi::Wifi, gpio::EspControlPins};
use embedded_hal::blocking::delay::DelayMs;
use embedded_hal::spi::MODE_0;
use fugit::RateExtU32;
use hal::{clocks::Clock, pac};
let _spi_miso = pins.gpio16.into_mode::<hal::gpio::FunctionSpi>();
let _spi_sclk = pins.gpio18.into_mode::<hal::gpio::FunctionSpi>();
let _spi_mosi = pins.gpio19.into_mode::<hal::gpio::FunctionSpi>();
let spi = hal::Spi::<_, _, 8>::new(pac.SPI0);
// Exchange the uninitialized SPI driver for an initialized one
let spi = spi.init(
&mut pac.RESETS,
clocks.peripheral_clock.freq(),
8_000_000u32.Hz(),
&MODE_0,
);
let esp_pins = EspControlPins {
// CS on pin x (GPIO7)
cs: pins.gpio7.into_mode::<hal::gpio::PushPullOutput>(),
// GPIO0 on pin x (GPIO2)
gpio0: pins.gpio2.into_mode::<hal::gpio::PushPullOutput>(),
// RESETn on pin x (GPIO11)
resetn: pins.gpio11.into_mode::<hal::gpio::PushPullOutput>(),
// ACK on pin x (GPIO10)
ack: pins.gpio10.into_mode::<hal::gpio::FloatingInput>(),
};
let wifi = Wifi::init(spi, esp_pins, &mut delay).unwrap();
let version = wifi.firmware_version();
硬件
为了运行此代码,您需要购买一些硬件。本节提供最低所需的硬件列表,以及一些建议的物品以使您的生活更加轻松。
所需硬件
-
Pimoroni Pico Wireless Pack (1个)
-
面包板 (1个)
- 注意:如果您已经拥有中型/大型面包板,则无需担心购买此特定型号。
可选但有用的硬件
-
断开式引脚 (1个)
- 如果您想将引脚焊接至上述第2项的非预焊接BME280传感器板
-
多长度跳线套装 140个 (1个)
-
直插式7英寸跳线 M/M (1个)
- 手头上有一些这些很有用
-
直插式6英寸跳线 M/F (1个)
- 手头上有一些这些很有用
-
Saleae Logic 8 (1个)
- 注意:仅当您想参与开发/调试此项目中的SPI/I2C总线通信部分时才需要
接线细节
从本文中的Pico到Pico接线部分开始,设置使用两个Pico一起工作,一个作为Picoprobe(闪存/调试),另一个作为您的嵌入式目标。
一旦正确接线,其外观应类似于以下内容
Pico到ESP32 WiFi
以下表格列出了Pico板和ESP32 WiFi之间正确接线所需的引脚名称和引脚编号。这可以在如上所列的面包板上完成。请注意,V+/-轨表示面包板上的+/-列,分别用作+5 VDC和GND。
Pico | ESP32 WiFi | Adafuit Airlift | 面包板 |
---|---|---|---|
GND(引脚3) | GND(引脚3) | V-轨 | |
GP2(引脚4) | GPIO0(引脚4) | GP0(引脚10) | |
GP7(引脚10) | ESP_CSn(引脚10) | CS(引脚7) | |
GP8(引脚11) | |||
GP9(引脚12) | |||
GP10(引脚14) | ACK(引脚14) | Busy(引脚8) | |
GP11(引脚15) | RESETn(引脚15) | RSTn(引脚9) | |
GP12(引脚16) | SW_A(引脚16) | N/A | |
GND(引脚18) | V-轨 | ||
VBUS(引脚40) | VBUS(引脚40) | ||
VSYS(引脚39) | VSYS(引脚39) | VIN(引脚1) | V+轨 |
GND(引脚38) | GND(引脚38) | V-轨 | |
3V3(OUT)(引脚36) | 3V3(引脚36) | 3Vo(引脚2) | |
GP19(引脚25) | MOSI(引脚25) | MOSI(引脚5) | |
GP18(引脚24) | SCLK(引脚24) | SCK(引脚4) | |
GND(引脚23) | V-轨 | ||
GP16(引脚21) | MISO(引脚21) | MISO(引脚5) |
软件要求
-
您可以从https://rustup.rs/安装的标准Rust工具(cargo,rustup)。
-
对rp2040中的cortex-m0+处理器(thumbv6m-none-eabi)的工具链支持。
-
flip-link - 这允许您检测第一个核心上的堆栈溢出,目前它是唯一受支持的目标。
安装开发依赖项
rustup target install thumbv6m-none-eabi
cargo install flip-link
cargo install probe-run
构建crate和运行示例
要构建esp32-wroom-rp crate
cargo build
要构建所有示例
cd cross
cargo build
要构建特定示例(例如get_fw_version)
cd cross
cargo build --bin get_fw_version
要运行特定示例(例如get_fw_version)
cd cross
cargo run --bin get_fw_version
运行crate的单元测试
cargo test
参与其中
该项目于2022年4月启动)。有关如何为该项目和Rust Never Sleeps社区做出贡献的更多信息,请参阅主页的参与其中部分。
要参与其中,请在此处请求加入GitHub社区,然后开始为目前正在进行的研究和设计讨论做出贡献。
项目团队
- 架构师:Caleb Bourg
- Rust开发者:Dilyn Corner
- Rust开发者:Glyn Matthews
- 项目监督和Rust开发者:Jim Hodapp
依赖项
~2.5MB
~43K SLoC