pub struct SpiFlash {
    pub size: u32,
    pub program_size: u32,
    pub address_mode: AddressMode,
    pub read_mode: ReadMode,
    pub erase_mode: EraseMode,
    pub sfdp: Option<Sfdp>,
    pub read_type: ReadTypes,
    pub erase: Vec<SectorErase>,
}

Fields§

§size: u32§program_size: u32§address_mode: AddressMode§read_mode: ReadMode§erase_mode: EraseMode§sfdp: Option<Sfdp>§read_type: ReadTypes§erase: Vec<SectorErase>

Implementations§

source§

impl SpiFlash

source

pub const READ: u8 = 3u8

source

pub const FAST_READ: u8 = 11u8

source

pub const FAST_DUAL_READ: u8 = 59u8

source

pub const FAST_QUAD_READ: u8 = 107u8

source

pub const READ_4B: u8 = 19u8

source

pub const FAST_READ_4B: u8 = 12u8

source

pub const FAST_DUAL_READ_4B: u8 = 60u8

source

pub const FAST_QUAD_READ_4B: u8 = 108u8

source

pub const PAGE_PROGRAM: u8 = 2u8

source

pub const SECTOR_ERASE: u8 = 32u8

source

pub const BLOCK_ERASE_32K: u8 = 82u8

source

pub const BLOCK_ERASE_64K: u8 = 216u8

source

pub const SECTOR_ERASE_4B: u8 = 33u8

source

pub const BLOCK_ERASE_32K_4B: u8 = 92u8

source

pub const BLOCK_ERASE_64K_4B: u8 = 220u8

source

pub const CHIP_ERASE: u8 = 199u8

source

pub const WRITE_ENABLE: u8 = 6u8

source

pub const WRITE_DISABLE: u8 = 4u8

source

pub const READ_STATUS: u8 = 5u8

source

pub const READ_STATUS2: u8 = 53u8

source

pub const READ_STATUS3: u8 = 21u8

source

pub const WRITE_STATUS: u8 = 1u8

source

pub const WRITE_STATUS2: u8 = 49u8

source

pub const WRITE_STATUS3: u8 = 17u8

source

pub const READ_ID: u8 = 159u8

source

pub const ENTER_4B: u8 = 183u8

source

pub const EXIT_4B: u8 = 233u8

source

pub const READ_SFDP: u8 = 90u8

source

pub const NOP: u8 = 0u8

source

pub const RESET_ENABLE: u8 = 102u8

source

pub const RESET: u8 = 153u8

source

pub const LEGACY_PAGE_SIZE: u32 = 256u32

The legacy JEDEC page size for programming operations is 256 bytes.

source

pub const STATUS_WIP: u8 = 1u8

Status register bits: The WIP bit indicates a write in progress (sometimes called the busy bit).

source

pub const STATUS_WEL: u8 = 2u8

The WEL bit is the write enable latch.

source

pub fn read_jedec_id(spi: &dyn Target, length: usize) -> Result<Vec<u8>>

Read length bytes of the JEDEC ID from the spi target.

source

pub fn read_status(spi: &dyn Target) -> Result<u8>

Read status register from the spi target.

source

pub fn read_status_ex(spi: &dyn Target, seq: Option<&[u8]>) -> Result<u32>

Read the extended status register from the spi target.

source

pub fn wait_for_busy_clear(spi: &dyn Target) -> Result<()>

Poll the status register waiting for the busy bit to clear.

source

pub fn set_write_enable(spi: &dyn Target) -> Result<()>

Send the WRITE_ENABLE opcode to the spi target.

source

pub fn set_write_disable(spi: &dyn Target) -> Result<()>

Send the WRITE_DISABLE opcode to the spi target.

source

pub fn read_sfdp(spi: &dyn Target) -> Result<Sfdp>

Read and parse the SFDP table from the spi target.

source

pub fn from_sfdp(sfdp: Sfdp) -> Self

Create a new SpiFlash instance from an SFDP table.

source

pub fn from_spi(spi: &dyn Target) -> Result<Self>

Create a new SpiFlash instance by reading an SFDP table from the spi Target.

source

pub fn set_address_mode( &mut self, spi: &dyn Target, mode: AddressMode ) -> Result<()>

Set the SPI flash addressing mode to either 3b or 4b mode.

source

pub fn set_address_mode_auto(&mut self, spi: &dyn Target) -> Result<()>

Automatically set the addressing mode based on the size of the SPI flash.

source

pub fn read( &self, spi: &dyn Target, address: u32, buffer: &mut [u8] ) -> Result<&Self>

Read into buffer from the SPI flash starting at address.

source

pub fn read_with_progress( &self, spi: &dyn Target, address: u32, buffer: &mut [u8], progress: &dyn ProgressIndicator, use_4b_opcodes: bool ) -> Result<&Self>

Read into buffer from the SPI flash starting at address. The progress callback will be invoked after each chunk of the read operation.

source

pub fn chip_erase(&self, spi: &dyn Target) -> Result<&Self>

Erase the entire EEPROM via the CHIP_ERASE opcode.

source

pub fn erase( &self, spi: &dyn Target, address: u32, length: u32 ) -> Result<&Self>

Erase a segment of the SPI flash starting at address for length bytes. The address and length must be sector aligned.

source

pub fn erase_with_progress( &self, spi: &dyn Target, address: u32, length: u32, progress: &dyn ProgressIndicator ) -> Result<&Self>

Erase a segment of the SPI flash starting at address for length bytes. The address and length must be sector aligned. The progress callback will be invoked after each chunk of the erase operation.

source

pub fn program( &self, spi: &dyn Target, address: u32, buffer: &[u8] ) -> Result<&Self>

Program a segment of the SPI flash starting at address with the contents of buffer. The address and buffer length may be arbitrary. This function will not erase the segment first.

source

pub fn program_with_progress( &self, spi: &dyn Target, address: u32, buffer: &[u8], progress: &dyn ProgressIndicator ) -> Result<&Self>

Program a segment of the SPI flash starting at address with the contents of buffer. The address and buffer length may be arbitrary. This function will not erase the segment first. The progress callback will be invoked after each chunk of the program operation.

source

pub fn chip_reset(spi: &dyn Target) -> Result<()>

Send the software reset sequence to the spi target.

Trait Implementations§

source§

impl Default for SpiFlash

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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.

§

impl<T> Pipe for Twhere T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> Rwhere Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V