pub struct QMI { /* private fields */ }Expand description
QSPI Memory Interface. Provides a memory-mapped interface to up to two SPI/DSPI/QSPI flash or PSRAM devices. Also provides a serial interface for programming and configuration of the external device.
Implementations§
Source§impl QMI
impl QMI
Sourcepub const PTR: *const RegisterBlock = {0x400d0000 as *const rp235x_hal::rp235x_pac::qmi::RegisterBlock}
pub const PTR: *const RegisterBlock = {0x400d0000 as *const rp235x_hal::rp235x_pac::qmi::RegisterBlock}
Pointer to the register block
Sourcepub const fn ptr() -> *const RegisterBlock
pub const fn ptr() -> *const RegisterBlock
Return the pointer to the register block
Sourcepub unsafe fn steal() -> QMI
pub unsafe fn steal() -> QMI
Steal an instance of this peripheral
§Safety
Ensure that the new instance of the peripheral cannot be used in a way that may race with any existing instances, for example by only accessing read-only or write-only registers, or by consuming the original peripheral and using critical sections to coordinate access between multiple new instances.
Additionally, other software such as HALs may rely on only one peripheral instance existing to ensure memory safety; ensure no stolen instances are passed to such software.
Methods from Deref<Target = RegisterBlock>§
Sourcepub fn direct_csr(&self) -> &Reg<DIRECT_CSR_SPEC>
pub fn direct_csr(&self) -> &Reg<DIRECT_CSR_SPEC>
0x00 - Control and status for direct serial mode Direct serial mode allows the processor to send and receive raw serial frames, for programming, configuration and control of the external memory devices. Only SPI mode 0 (CPOL=0 CPHA=0) is supported.
Sourcepub fn direct_tx(&self) -> &Reg<DIRECT_TX_SPEC>
pub fn direct_tx(&self) -> &Reg<DIRECT_TX_SPEC>
0x04 - Transmit FIFO for direct mode
Sourcepub fn direct_rx(&self) -> &Reg<DIRECT_RX_SPEC>
pub fn direct_rx(&self) -> &Reg<DIRECT_RX_SPEC>
0x08 - Receive FIFO for direct mode
Sourcepub fn m0_timing(&self) -> &Reg<M0_TIMING_SPEC>
pub fn m0_timing(&self) -> &Reg<M0_TIMING_SPEC>
0x0c - Timing configuration register for memory address window 0.
Sourcepub fn m0_rfmt(&self) -> &Reg<M0_RFMT_SPEC>
pub fn m0_rfmt(&self) -> &Reg<M0_RFMT_SPEC>
0x10 - Read transfer format configuration for memory address window 0. Configure the bus width of each transfer phase individually, and configure the length or presence of the command prefix, command suffix and dummy/turnaround transfer phases. Only 24-bit addresses are supported. The reset value of the M0_RFMT register is configured to support a basic 03h serial read transfer with no additional configuration.
Sourcepub fn m0_rcmd(&self) -> &Reg<M0_RCMD_SPEC>
pub fn m0_rcmd(&self) -> &Reg<M0_RCMD_SPEC>
0x14 - Command constants used for reads from memory address window 0. The reset value of the M0_RCMD register is configured to support a basic 03h serial read transfer with no additional configuration.
Sourcepub fn m0_wfmt(&self) -> &Reg<M0_WFMT_SPEC>
pub fn m0_wfmt(&self) -> &Reg<M0_WFMT_SPEC>
0x18 - Write transfer format configuration for memory address window 0. Configure the bus width of each transfer phase individually, and configure the length or presence of the command prefix, command suffix and dummy/turnaround transfer phases. Only 24-bit addresses are supported. The reset value of the M0_WFMT register is configured to support a basic 02h serial write transfer. However, writes to this window must first be enabled via the XIP_CTRL_WRITABLE_M0 bit, as XIP memory is read-only by default.
Sourcepub fn m0_wcmd(&self) -> &Reg<M0_WCMD_SPEC>
pub fn m0_wcmd(&self) -> &Reg<M0_WCMD_SPEC>
0x1c - Command constants used for writes to memory address window 0. The reset value of the M0_WCMD register is configured to support a basic 02h serial write transfer with no additional configuration.
Sourcepub fn m1_timing(&self) -> &Reg<M1_TIMING_SPEC>
pub fn m1_timing(&self) -> &Reg<M1_TIMING_SPEC>
0x20 - Timing configuration register for memory address window 1.
Sourcepub fn m1_rfmt(&self) -> &Reg<M1_RFMT_SPEC>
pub fn m1_rfmt(&self) -> &Reg<M1_RFMT_SPEC>
0x24 - Read transfer format configuration for memory address window 1. Configure the bus width of each transfer phase individually, and configure the length or presence of the command prefix, command suffix and dummy/turnaround transfer phases. Only 24-bit addresses are supported. The reset value of the M1_RFMT register is configured to support a basic 03h serial read transfer with no additional configuration.
Sourcepub fn m1_rcmd(&self) -> &Reg<M1_RCMD_SPEC>
pub fn m1_rcmd(&self) -> &Reg<M1_RCMD_SPEC>
0x28 - Command constants used for reads from memory address window 1. The reset value of the M1_RCMD register is configured to support a basic 03h serial read transfer with no additional configuration.
Sourcepub fn m1_wfmt(&self) -> &Reg<M1_WFMT_SPEC>
pub fn m1_wfmt(&self) -> &Reg<M1_WFMT_SPEC>
0x2c - Write transfer format configuration for memory address window 1. Configure the bus width of each transfer phase individually, and configure the length or presence of the command prefix, command suffix and dummy/turnaround transfer phases. Only 24-bit addresses are supported. The reset value of the M1_WFMT register is configured to support a basic 02h serial write transfer. However, writes to this window must first be enabled via the XIP_CTRL_WRITABLE_M1 bit, as XIP memory is read-only by default.
Sourcepub fn m1_wcmd(&self) -> &Reg<M1_WCMD_SPEC>
pub fn m1_wcmd(&self) -> &Reg<M1_WCMD_SPEC>
0x30 - Command constants used for writes to memory address window 1. The reset value of the M1_WCMD register is configured to support a basic 02h serial write transfer with no additional configuration.
Sourcepub fn atrans0(&self) -> &Reg<ATRANS0_SPEC>
pub fn atrans0(&self) -> &Reg<ATRANS0_SPEC>
0x34 - Configure address translation for XIP virtual addresses 0x000000 through 0x3fffff (a 4 MiB window starting at +0 MiB). Address translation allows a program image to be executed in place at multiple physical flash addresses (for example, a double-buffered flash image for over-the-air updates), without the overhead of position-independent code. At reset, the address translation registers are initialised to an identity mapping, so that they can be ignored if address translation is not required. Note that the XIP cache is fully virtually addressed, so a cache flush is required after changing the address translation.
Sourcepub fn atrans1(&self) -> &Reg<ATRANS1_SPEC>
pub fn atrans1(&self) -> &Reg<ATRANS1_SPEC>
0x38 - Configure address translation for XIP virtual addresses 0x400000 through 0x7fffff (a 4 MiB window starting at +4 MiB). Address translation allows a program image to be executed in place at multiple physical flash addresses (for example, a double-buffered flash image for over-the-air updates), without the overhead of position-independent code. At reset, the address translation registers are initialised to an identity mapping, so that they can be ignored if address translation is not required. Note that the XIP cache is fully virtually addressed, so a cache flush is required after changing the address translation.
Sourcepub fn atrans2(&self) -> &Reg<ATRANS2_SPEC>
pub fn atrans2(&self) -> &Reg<ATRANS2_SPEC>
0x3c - Configure address translation for XIP virtual addresses 0x800000 through 0xbfffff (a 4 MiB window starting at +8 MiB). Address translation allows a program image to be executed in place at multiple physical flash addresses (for example, a double-buffered flash image for over-the-air updates), without the overhead of position-independent code. At reset, the address translation registers are initialised to an identity mapping, so that they can be ignored if address translation is not required. Note that the XIP cache is fully virtually addressed, so a cache flush is required after changing the address translation.
Sourcepub fn atrans3(&self) -> &Reg<ATRANS3_SPEC>
pub fn atrans3(&self) -> &Reg<ATRANS3_SPEC>
0x40 - Configure address translation for XIP virtual addresses 0xc00000 through 0xffffff (a 4 MiB window starting at +12 MiB). Address translation allows a program image to be executed in place at multiple physical flash addresses (for example, a double-buffered flash image for over-the-air updates), without the overhead of position-independent code. At reset, the address translation registers are initialised to an identity mapping, so that they can be ignored if address translation is not required. Note that the XIP cache is fully virtually addressed, so a cache flush is required after changing the address translation.
Sourcepub fn atrans4(&self) -> &Reg<ATRANS4_SPEC>
pub fn atrans4(&self) -> &Reg<ATRANS4_SPEC>
0x44 - Configure address translation for XIP virtual addresses 0x1000000 through 0x13fffff (a 4 MiB window starting at +16 MiB). Address translation allows a program image to be executed in place at multiple physical flash addresses (for example, a double-buffered flash image for over-the-air updates), without the overhead of position-independent code. At reset, the address translation registers are initialised to an identity mapping, so that they can be ignored if address translation is not required. Note that the XIP cache is fully virtually addressed, so a cache flush is required after changing the address translation.
Sourcepub fn atrans5(&self) -> &Reg<ATRANS5_SPEC>
pub fn atrans5(&self) -> &Reg<ATRANS5_SPEC>
0x48 - Configure address translation for XIP virtual addresses 0x1400000 through 0x17fffff (a 4 MiB window starting at +20 MiB). Address translation allows a program image to be executed in place at multiple physical flash addresses (for example, a double-buffered flash image for over-the-air updates), without the overhead of position-independent code. At reset, the address translation registers are initialised to an identity mapping, so that they can be ignored if address translation is not required. Note that the XIP cache is fully virtually addressed, so a cache flush is required after changing the address translation.
Sourcepub fn atrans6(&self) -> &Reg<ATRANS6_SPEC>
pub fn atrans6(&self) -> &Reg<ATRANS6_SPEC>
0x4c - Configure address translation for XIP virtual addresses 0x1800000 through 0x1bfffff (a 4 MiB window starting at +24 MiB). Address translation allows a program image to be executed in place at multiple physical flash addresses (for example, a double-buffered flash image for over-the-air updates), without the overhead of position-independent code. At reset, the address translation registers are initialised to an identity mapping, so that they can be ignored if address translation is not required. Note that the XIP cache is fully virtually addressed, so a cache flush is required after changing the address translation.
Sourcepub fn atrans7(&self) -> &Reg<ATRANS7_SPEC>
pub fn atrans7(&self) -> &Reg<ATRANS7_SPEC>
0x50 - Configure address translation for XIP virtual addresses 0x1c00000 through 0x1ffffff (a 4 MiB window starting at +28 MiB). Address translation allows a program image to be executed in place at multiple physical flash addresses (for example, a double-buffered flash image for over-the-air updates), without the overhead of position-independent code. At reset, the address translation registers are initialised to an identity mapping, so that they can be ignored if address translation is not required. Note that the XIP cache is fully virtually addressed, so a cache flush is required after changing the address translation.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for QMI
impl RefUnwindSafe for QMI
impl !Sync for QMI
impl Unpin for QMI
impl UnwindSafe for QMI
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more