Crate embassy_rp

source ·
Expand description

Embassy RP HAL

HALs implement safe, idiomatic Rust APIs to use the hardware capabilities, so raw register manipulation is not needed.

The embassy-rp HAL targets the Raspberry Pi RP2040 microcontroller. The HAL implements both blocking and async APIs for many peripherals. The benefit of using the async APIs is that the HAL takes care of waiting for peripherals to complete operations in low power mode and handling interrupts, so that applications can focus on more important matters.

embassy-time time driver

If the time-driver feature is enabled, the HAL uses the TIMER peripheral as a global time driver for embassy-time, with a tick rate of 1MHz.

Embedded-hal

The embassy-rp HAL implements the traits from embedded-hal (v0.2 and 1.0) and embedded-hal-async, as well as embedded-io and embedded-io-async.

Interoperability

This crate can run on any executor.

Optionally, some features requiring embassy-time can be activated with the time feature. If you enable it, you must link an embassy-time driver in your project.

Feature flags

  • rt (enabled by default) — Enable the RP runtime.
  • defmt — Enable defmt
  • critical-section-impl — critical section that is safe for multicore use
  • unstable-pac — Reexport the PAC for the currently enabled chip at embassy_rp::pac. This is unstable because semver-minor (non-breaking) releases of embassy-rp may major-bump (breaking) the PAC version. If this is an issue for you, you’re encouraged to directly depend on a fixed version of the PAC. There are no plans to make this stable.
  • time-driver — Enable the timer for use with embassy-time with a 1MHz tick rate
  • rom-func-cache — Enable ROM function cache
  • intrinsics — Enable intrinsics
  • rom-v2-intrinsics — Enable ROM v2 intrinsics
  • qspi-as-gpio — Allow using QSPI pins as GPIO pins. This is mostly not what you want (because your flash lives there) and would add both code and memory overhead when enabled needlessly.
  • run-from-ram — Indicate code is running from RAM. Set this if all code is in RAM, and the cores never access memory-mapped flash memory through XIP. This allows the flash driver to not force pausing execution on both cores when doing flash operations.

boot2 flash chip support

If none of these are enabled, w25q080 is used by default (used on the pico)

  • boot2-at25sf128a — AT25SF128a
  • boot2-gd25q64cs — GD25Q64cs
  • boot2-generic-03h — generic-03h
  • boot2-is25lp080 — IS25LP080
  • boot2-ram-memcpy — ram-memcpy
  • boot2-w25q080 — W25Q080
  • boot2-w25x10cl — W25X10cl

Re-exports

Modules

Macros

Structs

Constants

Traits

  • Trait for any type that can be used as a peripheral of type P.

Functions

  • Initialize the embassy-rp HAL with the provided configuration.
  • Installs a stack guard for the CORE0 stack in MPU region 0. Will fail if the MPU is already confgigured. This function requires a _stack_end symbol to be defined by the linker script, and expexcts _stack_end to be located at the lowest address (largest depth) of the stack.

Attribute Macros