embassy-rp

Crates

git

Versions

rp2040

Flavors

embassy_rp::flash

Struct Flash

Source
pub struct Flash<'d, T: Instance, M: Mode, const FLASH_SIZE: usize> { /* private fields */ }
Expand description

Flash driver.

Implementations§

Source§

impl<'d, T: Instance, M: Mode, const FLASH_SIZE: usize> Flash<'d, T, M, FLASH_SIZE>

Source

pub fn blocking_read( &mut self, offset: u32, bytes: &mut [u8], ) -> Result<(), Error>

Blocking read.

The offset and buffer must be aligned.

NOTE: offset is an offset from the flash start, NOT an absolute address.

Source

pub fn capacity(&self) -> usize

Flash capacity.

Source

pub fn blocking_erase(&mut self, from: u32, to: u32) -> Result<(), Error>

Blocking erase.

NOTE: offset is an offset from the flash start, NOT an absolute address.

Source

pub fn blocking_write(&mut self, offset: u32, bytes: &[u8]) -> Result<(), Error>

Blocking write.

The offset and buffer must be aligned.

NOTE: offset is an offset from the flash start, NOT an absolute address.

Source

pub fn blocking_unique_id(&mut self, uid: &mut [u8]) -> Result<(), Error>

Read SPI flash unique ID

Source

pub fn blocking_jedec_id(&mut self) -> Result<u32, Error>

Read SPI flash JEDEC ID

Source§

impl<'d, T: Instance, const FLASH_SIZE: usize> Flash<'d, T, Blocking, FLASH_SIZE>

Source

pub fn new_blocking(_flash: impl Peripheral<P = T> + 'd) -> Self

Create a new flash driver in blocking mode.

Source§

impl<'d, T: Instance, const FLASH_SIZE: usize> Flash<'d, T, Async, FLASH_SIZE>

Source

pub fn new( _flash: impl Peripheral<P = T> + 'd, dma: impl Peripheral<P = impl Channel> + 'd, ) -> Self

Create a new flash driver in async mode.

Source

pub fn background_read<'a>( &'a mut self, offset: u32, data: &'a mut [u32], ) -> Result<BackgroundRead<'a, 'd, T, FLASH_SIZE>, Error>

Start a background read operation.

The offset and buffer must be aligned.

NOTE: offset is an offset from the flash start, NOT an absolute address.

Source

pub async fn read(&mut self, offset: u32, bytes: &mut [u8]) -> Result<(), Error>

Async read.

The offset and buffer must be aligned.

NOTE: offset is an offset from the flash start, NOT an absolute address.

Trait Implementations§

Source§

impl<'d, T: Instance, M: Mode, const FLASH_SIZE: usize> ErrorType for Flash<'d, T, M, FLASH_SIZE>

Source§

type Error = Error

Errors returned by this NOR flash.
Source§

impl<'d, T: Instance, const FLASH_SIZE: usize> NorFlash for Flash<'d, T, Async, FLASH_SIZE>

Source§

const WRITE_SIZE: usize = 1usize

The minumum number of bytes the storage peripheral can write
Source§

const ERASE_SIZE: usize = 4_096usize

The minumum number of bytes the storage peripheral can erase
Source§

async fn erase(&mut self, from: u32, to: u32) -> Result<(), Self::Error>

Erase the given storage range, clearing all data within [from..to]. The given range will contain all 1s afterwards. Read more
Source§

async fn write(&mut self, offset: u32, bytes: &[u8]) -> Result<(), Self::Error>

If power is lost during write, the contents of the written words are undefined, but the rest of the page is guaranteed to be unchanged. It is not allowed to write to the same word twice. Read more
Source§

impl<'d, T: Instance, M: Mode, const FLASH_SIZE: usize> NorFlash for Flash<'d, T, M, FLASH_SIZE>

Source§

const WRITE_SIZE: usize = 1usize

The minumum number of bytes the storage peripheral can write
Source§

const ERASE_SIZE: usize = 4_096usize

The minumum number of bytes the storage peripheral can erase
Source§

fn erase(&mut self, from: u32, to: u32) -> Result<(), Self::Error>

Erase the given storage range, clearing all data within [from..to]. The given range will contain all 1s afterwards. Read more
Source§

fn write(&mut self, offset: u32, bytes: &[u8]) -> Result<(), Self::Error>

If power is lost during write, the contents of the written words are undefined, but the rest of the page is guaranteed to be unchanged. It is not allowed to write to the same word twice. Read more
Source§

impl<'d, T: Instance, const FLASH_SIZE: usize> ReadNorFlash for Flash<'d, T, Async, FLASH_SIZE>

Source§

const READ_SIZE: usize = 4usize

The minumum number of bytes the storage peripheral can read
Source§

async fn read( &mut self, offset: u32, bytes: &mut [u8], ) -> Result<(), Self::Error>

Read a slice of data from the storage peripheral, starting the read operation at the given address offset, and reading bytes.len() bytes. Read more
Source§

fn capacity(&self) -> usize

The capacity of the peripheral in bytes.
Source§

impl<'d, T: Instance, M: Mode, const FLASH_SIZE: usize> ReadNorFlash for Flash<'d, T, M, FLASH_SIZE>

Source§

const READ_SIZE: usize = 1usize

The minumum number of bytes the storage peripheral can read
Source§

fn read(&mut self, offset: u32, bytes: &mut [u8]) -> Result<(), Self::Error>

Read a slice of data from the storage peripheral, starting the read operation at the given address offset, and reading bytes.len() bytes. Read more
Source§

fn capacity(&self) -> usize

The capacity of the peripheral in bytes.
Source§

impl<'d, T: Instance, const FLASH_SIZE: usize> MultiwriteNorFlash for Flash<'d, T, Async, FLASH_SIZE>

Source§

impl<'d, T: Instance, M: Mode, const FLASH_SIZE: usize> MultiwriteNorFlash for Flash<'d, T, M, FLASH_SIZE>

Auto Trait Implementations§

§

impl<'d, T, M, const FLASH_SIZE: usize> Freeze for Flash<'d, T, M, FLASH_SIZE>

§

impl<'d, T, M, const FLASH_SIZE: usize> RefUnwindSafe for Flash<'d, T, M, FLASH_SIZE>

§

impl<'d, T, M, const FLASH_SIZE: usize> Send for Flash<'d, T, M, FLASH_SIZE>
where M: Send, T: Send,

§

impl<'d, T, M, const FLASH_SIZE: usize> Sync for Flash<'d, T, M, FLASH_SIZE>
where M: Sync, T: Sync,

§

impl<'d, T, M, const FLASH_SIZE: usize> Unpin for Flash<'d, T, M, FLASH_SIZE>
where M: Unpin,

§

impl<'d, T, M, const FLASH_SIZE: usize> !UnwindSafe for Flash<'d, T, M, FLASH_SIZE>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

Source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
Source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

Source§

fn lossy_into(self) -> Dst

Performs the conversion.
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.