Struct embassy_nrf::qspi::Qspi

source ·
pub struct Qspi<'d, T: Instance> { /* private fields */ }
Expand description

QSPI flash driver.

Implementations§

source§

impl<'d, T: Instance> Qspi<'d, T>

source

pub fn new( qspi: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, sck: impl Peripheral<P = impl GpioPin> + 'd, csn: impl Peripheral<P = impl GpioPin> + 'd, io0: impl Peripheral<P = impl GpioPin> + 'd, io1: impl Peripheral<P = impl GpioPin> + 'd, io2: impl Peripheral<P = impl GpioPin> + 'd, io3: impl Peripheral<P = impl GpioPin> + 'd, config: Config ) -> Self

Create a new QSPI driver.

source

pub async fn custom_instruction( &mut self, opcode: u8, req: &[u8], resp: &mut [u8] ) -> Result<(), Error>

Do a custom QSPI instruction.

source

pub fn blocking_custom_instruction( &mut self, opcode: u8, req: &[u8], resp: &mut [u8] ) -> Result<(), Error>

Do a custom QSPI instruction, blocking version.

source

pub async fn read_raw( &mut self, address: u32, data: &mut [u8] ) -> Result<(), Error>

Raw QSPI read.

The difference with read is that this does not do bounds checks against the flash capacity. It is intended for use when QSPI is used as a raw bus, not with flash memory.

source

pub async fn write_raw( &mut self, address: u32, data: &[u8] ) -> Result<(), Error>

Raw QSPI write.

The difference with write is that this does not do bounds checks against the flash capacity. It is intended for use when QSPI is used as a raw bus, not with flash memory.

source

pub fn blocking_read_raw( &mut self, address: u32, data: &mut [u8] ) -> Result<(), Error>

Raw QSPI read, blocking version.

The difference with blocking_read is that this does not do bounds checks against the flash capacity. It is intended for use when QSPI is used as a raw bus, not with flash memory.

source

pub fn blocking_write_raw( &mut self, address: u32, data: &[u8] ) -> Result<(), Error>

Raw QSPI write, blocking version.

The difference with blocking_write is that this does not do bounds checks against the flash capacity. It is intended for use when QSPI is used as a raw bus, not with flash memory.

source

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

Read data from the flash memory.

source

pub async fn write(&mut self, address: u32, data: &[u8]) -> Result<(), Error>

Write data to the flash memory.

source

pub async fn erase(&mut self, address: u32) -> Result<(), Error>

Erase a sector on the flash memory.

source

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

Read data from the flash memory, blocking version.

source

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

Write data to the flash memory, blocking version.

source

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

Erase a sector on the flash memory, blocking version.

Trait Implementations§

source§

impl<'d, T: Instance> Drop for Qspi<'d, T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'d, T: Instance> ErrorType for Qspi<'d, T>

§

type Error = Error

Errors returned by this NOR flash.
source§

impl<'d, T: Instance> NorFlash for Qspi<'d, T>

source§

const WRITE_SIZE: usize = 4usize

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 write(&mut self, offset: u32, data: &[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§

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§

impl<'d, T: Instance> NorFlash for Qspi<'d, T>

source§

const WRITE_SIZE: usize = 4usize

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> ReadNorFlash for Qspi<'d, T>

source§

const READ_SIZE: usize = 4usize

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

async fn read( &mut self, address: u32, data: &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> ReadNorFlash for Qspi<'d, T>

source§

const READ_SIZE: usize = 4usize

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.

Auto Trait Implementations§

§

impl<'d, T> RefUnwindSafe for Qspi<'d, T>
where T: RefUnwindSafe,

§

impl<'d, T> Send for Qspi<'d, T>

§

impl<'d, T> Sync for Qspi<'d, T>
where T: Sync,

§

impl<'d, T> Unpin for Qspi<'d, T>
where T: Unpin,

§

impl<'d, T> !UnwindSafe for Qspi<'d, T>

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

§

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>,

§

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>,

§

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.