rp2040_pac

Struct XIP_SSI

source
pub struct XIP_SSI { /* private fields */ }
Expand description

DW_apb_ssi has the following features:

  • APB interface - Allows for easy integration into a DesignWare Synthesizable Components for AMBA 2 implementation.
  • APB3 and APB4 protocol support.
  • Scalable APB data bus width - Supports APB data bus widths of 8, 16, and 32 bits.
  • Serial-master or serial-slave operation - Enables serial communication with serial-master or serial-slave peripheral devices.
  • Programmable Dual/Quad/Octal SPI support in Master Mode.
  • Dual Data Rate (DDR) and Read Data Strobe (RDS) Support - Enables the DW_apb_ssi master to perform operations with the device in DDR and RDS modes when working in Dual/Quad/Octal mode of operation.
  • Data Mask Support - Enables the DW_apb_ssi to selectively update the bytes in the device. This feature is applicable only in enhanced SPI modes.
  • eXecute-In-Place (XIP) support - Enables the DW_apb_ssi master to behave as a memory mapped I/O and fetches the data from the device based on the APB read request. This feature is applicable only in enhanced SPI modes.
  • DMA Controller Interface - Enables the DW_apb_ssi to interface to a DMA controller over the bus using a handshaking interface for transfer requests.
  • Independent masking of interrupts - Master collision, transmit FIFO overflow, transmit FIFO empty, receive FIFO full, receive FIFO underflow, and receive FIFO overflow interrupts can all be masked independently.
  • Multi-master contention detection - Informs the processor of multiple serial-master accesses on the serial bus.
  • Bypass of meta-stability flip-flops for synchronous clocks - When the APB clock (pclk) and the DW_apb_ssi serial clock (ssi_clk) are synchronous, meta-stable flip-flops are not used when transferring control signals across these clock domains.
  • Programmable delay on the sample time of the received serial data bit (rxd); enables programmable control of routing delays resulting in higher serial data-bit rates.
  • Programmable features:
  • Serial interface operation - Choice of Motorola SPI, Texas Instruments Synchronous Serial Protocol or National Semiconductor Microwire.
  • Clock bit-rate - Dynamic control of the serial bit rate of the data transfer; used in only serial-master mode of operation.
  • Data Item size (4 to 32 bits) - Item size of each data transfer under the control of the programmer.
  • Configured features:
  • FIFO depth - 16 words deep. The FIFO width is fixed at 32 bits.
  • 1 slave select output.
  • Hardware slave-select - Dedicated hardware slave-select line.
  • Combined interrupt line - one combined interrupt line from the DW_apb_ssi to the interrupt controller.
  • Interrupt polarity - active high interrupt lines.
  • Serial clock polarity - low serial-clock polarity directly after reset.
  • Serial clock phase - capture on first edge of serial-clock directly after reset.

Implementations§

source§

impl XIP_SSI

source

pub const PTR: *const RegisterBlock = {0x18000000 as *const xip_ssi::RegisterBlock}

Pointer to the register block

source

pub const fn ptr() -> *const RegisterBlock

Return the pointer to the register block

source

pub unsafe fn steal() -> Self

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

source

pub fn ctrlr0(&self) -> &CTRLR0

0x00 - Control register 0

source

pub fn ctrlr1(&self) -> &CTRLR1

0x04 - Master Control register 1

source

pub fn ssienr(&self) -> &SSIENR

0x08 - SSI Enable

source

pub fn mwcr(&self) -> &MWCR

0x0c - Microwire Control

source

pub fn ser(&self) -> &SER

0x10 - Slave enable

source

pub fn baudr(&self) -> &BAUDR

0x14 - Baud rate

source

pub fn txftlr(&self) -> &TXFTLR

0x18 - TX FIFO threshold level

source

pub fn rxftlr(&self) -> &RXFTLR

0x1c - RX FIFO threshold level

source

pub fn txflr(&self) -> &TXFLR

0x20 - TX FIFO level

source

pub fn rxflr(&self) -> &RXFLR

0x24 - RX FIFO level

source

pub fn sr(&self) -> &SR

0x28 - Status register

source

pub fn imr(&self) -> &IMR

0x2c - Interrupt mask

source

pub fn isr(&self) -> &ISR

0x30 - Interrupt status

source

pub fn risr(&self) -> &RISR

0x34 - Raw interrupt status

source

pub fn txoicr(&self) -> &TXOICR

0x38 - TX FIFO overflow interrupt clear

source

pub fn rxoicr(&self) -> &RXOICR

0x3c - RX FIFO overflow interrupt clear

source

pub fn rxuicr(&self) -> &RXUICR

0x40 - RX FIFO underflow interrupt clear

source

pub fn msticr(&self) -> &MSTICR

0x44 - Multi-master interrupt clear

source

pub fn icr(&self) -> &ICR

0x48 - Interrupt clear

source

pub fn dmacr(&self) -> &DMACR

0x4c - DMA control

source

pub fn dmatdlr(&self) -> &DMATDLR

0x50 - DMA TX data level

source

pub fn dmardlr(&self) -> &DMARDLR

0x54 - DMA RX data level

source

pub fn idr(&self) -> &IDR

0x58 - Identification register

source

pub fn ssi_version_id(&self) -> &SSI_VERSION_ID

0x5c - Version ID

source

pub fn dr0(&self) -> &DR0

0x60 - Data Register 0 (of 36)

source

pub fn rx_sample_dly(&self) -> &RX_SAMPLE_DLY

0xf0 - RX sample delay

source

pub fn spi_ctrlr0(&self) -> &SPI_CTRLR0

0xf4 - SPI control

source

pub fn txd_drive_edge(&self) -> &TXD_DRIVE_EDGE

0xf8 - TX drive edge

Trait Implementations§

source§

impl Debug for XIP_SSI

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Deref for XIP_SSI

source§

type Target = RegisterBlock

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Send for XIP_SSI

Auto Trait Implementations§

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