29. XSPI I/O manager (XSPIM)

29.1 XSPIM introduction

The XSPI I/O manager is a low-level interface, enabling an efficient XSPI pin assignment with a full I/O matrix (before alternate function map), and multiplex of single/dual/quad/octal/16-bit SPI interfaces over the same bus.

29.2 XSPIM main features

29.3 XSPIM implementation

Table 202 describes the XSPIM implementation.

Table 202. XSPIM implementation

XSPI featureAvailable on the devices
Supports up to two single/dual/quad interfacesX
Fully I/O multiplexing capabilityX
Supports time-multiplexed modeX
Supports high-speed interfaceX
Chip select selection if XSPI provides dual chip selectX
Supports 16-bit data interface and dual-octal modeX
Supports up to three XSPIsX

29.4 XSPIM functional description

29.4.1 XSPIM block diagram

The block diagram of the XSPI I/O manager is shown in Figure 216 .

Figure 216. XSPIM block diagram

Figure 216. XSPIM block diagram. The diagram shows the internal architecture of the XSPI I/O manager. At the top, an 'AHB interface' and 'Control register' are connected to an 'AHB' bus. Below this, an 'Arbiter' block receives 'REQ' signals from three XSPI controllers (XSPI1, XSPI2, XSPI3) and provides 'ACK' signals back to them. The 'Arbiter' also connects to 'Static muxing' and 'Dynamic muxing' blocks. These muxing blocks lead to an 'I/O matrix' which is divided into 'Port 1' and 'Port 2'. The 'I/O matrix' is connected to two 'PHY' blocks via a 'High speed interface'. The 'PHY' blocks are connected to external pins: XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0,1, XSPIM_P1_NCS1,2, XSPIM_P1_IO[15:0] for Port 1, and XSPIM_P2_CLK, XSPIM_P2_NCLK, XSPIM_P2_DQS0, XSPIM_P2_NCS1,2, XSPIM_P2_IO[7:0] for Port 2.
Figure 216. XSPIM block diagram. The diagram shows the internal architecture of the XSPI I/O manager. At the top, an 'AHB interface' and 'Control register' are connected to an 'AHB' bus. Below this, an 'Arbiter' block receives 'REQ' signals from three XSPI controllers (XSPI1, XSPI2, XSPI3) and provides 'ACK' signals back to them. The 'Arbiter' also connects to 'Static muxing' and 'Dynamic muxing' blocks. These muxing blocks lead to an 'I/O matrix' which is divided into 'Port 1' and 'Port 2'. The 'I/O matrix' is connected to two 'PHY' blocks via a 'High speed interface'. The 'PHY' blocks are connected to external pins: XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0,1, XSPIM_P1_NCS1,2, XSPIM_P1_IO[15:0] for Port 1, and XSPIM_P2_CLK, XSPIM_P2_NCLK, XSPIM_P2_DQS0, XSPIM_P2_NCS1,2, XSPIM_P2_IO[7:0] for Port 2.

29.4.2 XSPIM input/output pins

Table 203. XSPIM input/output pins

Pin name (1)Signal typeDescription
XSPIM_Px_NCLKOutputXSPI inverted clock to support 1.8 V HyperBus protocol. The inversion must be activated only in this case, setting bit INVCLK in the advanced I/O configuration section.
XSPIM_Px_CLKXSPI clock
XSPIM_Px_IO n (n = 0 to 15)Input/outputXSPI data pins
XSPIM_Px_NCS1,2OutputChip select for the memory
XSPIM_Px_DQS0,1Input/outputData strobe/write mask signals from/to the memory

1. x = 1 to 2.

29.4.3 XSPIM matrix

The XSPI I/O manager matrix allows the user to set a premapping of functions:

Note: There is no possibility to use mixed combinations of signals (like NCS of XSPI1 with data of XSPI2).

When several I/O pins have the same configuration and are enabled at the same time, the result can be unpredictable.

In the default out-of-reset configuration, all the XSPI1 and XSPI2 signals are mapped, respectively, on Port 1 and on Port 2.

The configuration can be changed only when all XSPIs are disabled.

29.4.4 XSPIM multiplexed mode

When this mode is set, the XSPIs are time-multiplexed over the same bus. They get the ownership of the bus (in turn) through a request/acknowledge protocol with REQ/ACK signals.

The time-multiplexing is enabled by setting the MUXEN bit in the configuration register XSPIM_CR.

The fairness counter (MAXTRAN) of each XSPI can be used to manage the maximum duration for which a given XSPI takes the bus: this feature ensures the maximum bus access latency for the other XSPI(s). When one XSPI releases the bus, a round-robin arbitration phase occurs: when another XSPI requests the bus, it gets it.

When the multiplexed mode is enabled, either the fairness counter or the refresh timeout counter of both XSPI interfaces must be activated.

Each XSPI delivers two NCS signals (NCS1, NCS2). In multiplexed modes, the active NCS signal is the one of the XSPI owning the bus. Only XSPI_n_IOs, XSPI_n_DQS and XSPI_n_CLK / XSPI_n_NCLK are multiplexed.

When the multiplexed mode is used, only clock mode 0 is supported on the XSPIs.

Due to arbitration and bus sharing, the auto polling interval time of the XSPI, when used, can be increased.

Minimum switching duration

The minimum number of cycles needed to switch from an XSPI to another can be configured. This guarantees a latency between the falling edge of the REQ signal of the active XSPI (the active one releases the bus), and the rising edge of the ACK signal to the requesting XSPI (the bus is granted to the requesting one).

The duration is defined by the REQ2ACK_TIME field in the XSPIM_CR register.

29.5 Use cases description

The following table summarizes the use cases corresponding to IO manager modes.

Table 204. Use cases

IO manager modeMUXENModeReference
Direct
(XSPI1 to Port1, XSPI2 to Port2, XSPI3 not used)
00Section 29.5.1
Section 29.5.2
Swapped
(XSPI1 to Port2, XSPI2 to Port1, XSPI3 not used)
01Section 29.5.4
Multiplexed to Port1
(XSPI1 and XSPI2 to Port1, XSPI3 to Port2)
10Section 29.5.5
Multiplexed to Port2
(XSPI1 and XSPI2 to Port2, XSPI3 to Port1).
11Section 29.5.6
XSPI1 and 2 drive a single external memory connected to Port1 or Port2, and XSPI3 drives one external memory connected to the other port.10 or 1, depending upon the port connected to the memory.Section 29.5.7
XSPI1 or 2 drives two external memories connected to Port1 or Port2, and XSPI3 is not used.00 or 1, depending upon the port connected to the memories. The selected XSPI instance hits the corresponding memory thanks to the NCS selection.Section 29.5.8

29.5.1 XSPIs direct octal mode

This is the baseline mode: each XSPI independently drives the corresponding port and high-speed interface. There is no multiplexing.

The configuration selection signal selects the signals used for each high speed interface. These signals come from the XSPI_CR and XSPI_CALxxx register outputs.

Alternate function signals can be routed on NCS2 pins (they are not used for the XSPI bus), nclk clocks are requested in case of 1.8 V HyperBus memory type.

This mode is selected by default through bits XSPIM_CR[1:0].

Figure 217. XSPI direct octal mode

Block diagram of XSPI direct octal mode showing the XSPI I/O manager connected to two octal memories via high-speed interfaces.

The diagram illustrates the XSPI direct octal mode architecture. On the left, an XSPI I/O manager block contains Control registers connected to an AHB bus, an Arbiter , and an I/O matrix with Port selection . The I/O matrix is divided into P1 and P2 sections, with Static and dynamic mixing indicated. Three XSPI ports are shown: XSPI1 (connected to P1), XSPI2 (connected to P2), and XSPI3 (not used) . Below the I/O matrix, Configuration signals selection and Configuration signals are provided to a High speed interface block. The High speed interface block contains High speed interface 1 and High speed interface 2 . Alternate functions signals are also input to this block. On the right, two Octal memory blocks are shown. Octal memory 1 is connected to High speed interface 1 via signals: XSPIM_P1_CLK (clk), XSPIM_P1_NCLK (nclk), XSPIM_P1_DQS0 (Data strobe), XSPIM_P1_NCS1 (nCS), XSPIM_P1_NCS2 , XSPIM_P1_IO[7:0] (Data[7:0]), and XSPIM_P1_IO[15:8] . Octal memory 2 is connected to High speed interface 2 via signals: XSPIM_P2_CLK (clk), XSPIM_P2_NCLK (nclk), XSPIM_P2_DQS0 (Data strobe), XSPIM_P2_NCS1 (nCS), XSPIM_P2_NCS2 , and XSPIM_P2_IO[7:0] (Data[7:0]).

Block diagram of XSPI direct octal mode showing the XSPI I/O manager connected to two octal memories via high-speed interfaces.

29.5.2 XSPI direct 16-bit mode

This is the baseline mode, completely similar to XSPI octal direct mode, where each XSPI directly drives the corresponding port (XSPI1 connected to Port 1, XSPI2 connected to Port 2). Two DQS (1 per byte) are needed for each 16-bit port, when available.

Figure 218. XSPI direct 16-bit mode

Block diagram of XSPI direct 16-bit mode showing the XSPI I/O manager connected to three XSPI interfaces (XSPI1, XSPI2, XSPI3) and two external memories (16-bit memory 1 and Octal memory 2) via high-speed interfaces.

The diagram illustrates the internal architecture of the XSPI I/O manager (XSPIM) and its connection to external devices in direct 16-bit mode. The XSPIM is connected to an AHB bus and contains control registers, an arbiter, and an I/O matrix with ports P1 and P2. It also includes static and dynamic muxing. Three XSPI interfaces are shown: XSPI1, XSPI2, and XSPI3 (which is not used). The I/O matrix is connected to two high-speed interfaces, High speed interface 1 and High speed interface 2, which are further connected to external memories. High speed interface 1 is connected to 16-bit memory 1, and High speed interface 2 is connected to Octal memory 2. The connections between the high-speed interfaces and the memories are labeled with specific signal names: XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0, XSPIM_P1_DQS1, XSPIM_P1_NCS1, XSPIM_P1_NCS2, and XSPIM_P1_IO[15:0] for memory 1; and XSPIM_P2_CLK, XSPIM_P2_NCLK, XSPIM_P2_DQS0, XSPIM_P2_NCS1, XSPIM_P2_NCS2, and XSPIM_P2_IO[7:0] for memory 2. The memories themselves have pins for clk, nclk, Data strobe, nCS, and Data (Data[15:0] for memory 1 and Data[7:0] for memory 2). Configuration signals and configuration signals selection are also shown connecting to the high-speed interfaces.

Block diagram of XSPI direct 16-bit mode showing the XSPI I/O manager connected to three XSPI interfaces (XSPI1, XSPI2, XSPI3) and two external memories (16-bit memory 1 and Octal memory 2) via high-speed interfaces.

29.5.3 XSPI dual-octal mode

This mode is equivalent to XSPI direct mode, but, for simplicity, only one XSPI interface is represented. Two external octal memories are accessed in parallel, similarly to the dual-quad mode implemented with octal interfaces.

Figure 219. XSPI dual-octal mode

Block diagram of XSPI dual-octal mode showing the XSPI I/O manager connected to two Octal memories via a High speed interface.

The diagram illustrates the XSPI dual-octal mode configuration. On the left, an 'XSPI' block is connected to an 'XSPI I/O manager' block. The 'XSPI I/O manager' contains 'Control registers' connected to an 'AHB' bus, an 'Arbiter', 'Static and dynamic muxing', and an 'I/O matrix' with 'Port selection' for 'P1' and 'P2'. 'Configuration signals' are sent from the 'XSPI' block to a 'High speed interface' block. The 'High speed interface' block is connected to 'Alternate functions signals' and has pins labeled XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0, XSPIM_P1_NCS1, XSPIM_P1_NCS2, XSPIM_P1_IO[7:0], XSPIM_P1_DQS1, and XSPIM_P1_IO[15:8]. These pins connect to a 'Multichip package (MCP)' which contains two 'Octal memory' blocks, 'Octal memory 1' and 'Octal memory 2'. Each memory block has pins for 'clk', 'nclk', 'Data strobe', 'nCS', and 'Data[7:0]'. The connections are as follows: XSPIM_P1_CLK to Octal memory 1 clk, XSPIM_P1_NCLK to Octal memory 1 nclk, XSPIM_P1_DQS0 to Octal memory 1 Data strobe, XSPIM_P1_NCS1 to Octal memory 1 nCS, XSPIM_P1_NCS2 to Octal memory 2 nCS, XSPIM_P1_IO[7:0] to Octal memory 1 Data[7:0], XSPIM_P1_DQS1 to Octal memory 2 Data strobe, and XSPIM_P1_IO[15:8] to Octal memory 2 Data[7:0].

Block diagram of XSPI dual-octal mode showing the XSPI I/O manager connected to two Octal memories via a High speed interface.

29.5.4 XSPI swapped mode

This mode is similar to XSPI direct mode, but the ports are swapped, to help I/O mapping. The mode is selected by bits XSPIM_CR[1:0].

If XSPIM.CR[0] or XSPIM.CR[1] is toggled in application, XSPI.DCR2 or XSPI.CCR must be written, so that the calibration of the high speed interface is launched according to the new XSPI using it.

Note: In swapped mode, the XSPI2 can be configured in 16-bit mode, and the XSPI1 can be configured in octal mode, to connect an external 16-bit memory on Port 1, and to connect in a concurrent way an octal external memory connected to Port 2 of the I/O manager.

Figure 220. XSPI swapped (octal) mode

Block diagram of XSPI swapped (octal) mode showing the XSPI I/O manager connected to three XSPI controllers (XSPI1, XSPI2, XSPI3) and two Octal memories. The diagram illustrates signal routing for clock, data strobe, and data lines through a high-speed interface matrix.

The diagram illustrates the internal architecture of the XSPI I/O manager and its connection to external components. On the left, three XSPI controllers (XSPI1, XSPI2, and XSPI3, which is not used) are connected to the XSPI I/O manager. The manager contains control registers, an arbiter, and an I/O matrix with static and dynamic muxing. The arbiter selects between XSPI1 and XSPI2 for Port 1. The I/O matrix routes signals to two high-speed interfaces. Port 1 connects to Octal memory 1, and Port 2 connects to Octal memory 2. The signals for Port 1 include XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0, XSPIM_P1_DQS1, XSPIM_P1_NCS1, XSPIM_P1_NCS2, XSPIM_P1_IO[7:0], and XSPIM_P1_IO[15:8]. The signals for Port 2 include XSPIM_P2_CLK, XSPIM_P2_NCLK, XSPIM_P2_DQS0, XSPIM_P2_NCS1, XSPIM_P2_NCS2, and XSPIM_P2_IO[7:0]. The high-speed interfaces provide configuration signals to the memories. The diagram also shows alternate function signals and the AHB bus connection to the control registers. The identifier MS55957V2 is present in the bottom right corner.

Block diagram of XSPI swapped (octal) mode showing the XSPI I/O manager connected to three XSPI controllers (XSPI1, XSPI2, XSPI3) and two Octal memories. The diagram illustrates signal routing for clock, data strobe, and data lines through a high-speed interface matrix.

29.5.5 Two XSPIs multiplexed mode to Port 1 accessing two external memories, and the third XSPI accessing Port 2

If only one output port is used to access two memories, alternate function signals can be routed to pins corresponding to the other port. This mode is selected by bits XSPIM_CR[1:0].

The arbiter in the IO manager selects XSPI1 or XSPI2 to own the octal-SPI bus according to the existing transfer requests and status of the two MAXTRAN fairness counters.

The external memories can be on separate chips, or embedded in a single multichip package. In this case, each memory requests a dedicated Chip select, selected according to the CSSEL control of the XSPI currently owning the bus.

The configuration signals of the high speed interface toggle when the corresponding XSPI is selected, because the timing characteristics of the two memories can be different.

Figure 221. XSPI multiplexed mode to Port1

Block diagram of XSPI multiplexed mode to Port1. It shows the XSPI I/O manager connected to an AHB bus, control registers, an arbiter, and three XSPI units (XSPI1, XSPI2, XSPI3). The XSPI units are connected to an I/O matrix with static and dynamic muxing. The I/O matrix is connected to two high-speed interfaces (High speed interface 1 and High speed interface 2) and a general High speed interface. The high-speed interfaces are connected to external memory packages (Octal memory 1, 2, and 3) via various pins like XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0, XSPIM_P1_DQS1, XSPIM_P1_NCS1, XSPIM_P1_NCS2, XSPIM_P1_IO[7:0], and XSPIM_P1_IO[15:8]. Configuration signals are also shown.

The diagram illustrates the internal architecture of the XSPI I/O manager (XSPIM) in multiplexed mode for Port 1. On the left, three XSPI units (XSPI1, XSPI2, XSPI3) are connected to an internal I/O matrix. This matrix features 'Static and dynamic muxing' and is connected to an 'Arbiter' and 'Control registers'. The 'Control registers' are interfaced with an 'AHB' bus. 'Port selection' signals from the control registers are sent to the I/O matrix. The I/O matrix is connected to 'High speed interface 1' and 'High speed interface 2'. 'Alternate functions signals' are also connected to these interfaces. A general 'High speed interface' block is shown at the bottom, receiving 'Configuration signals selection' and 'Configuration signals' from the XSPI units. On the right, the high-speed interfaces connect to external memory packages. Port 1 (High speed interface 1) connects to two 'Octal memory' packages (labeled 'Octal memory 1' and 'Octal memory 2') which are part of 'Two separate memory packages or multi-chip package (MCP)'. The pins for Port 1 are XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0, XSPIM_P1_DQS1, XSPIM_P1_NCS1, XSPIM_P1_NCS2, XSPIM_P1_IO[7:0], and XSPIM_P1_IO[15:8]. Port 2 (High speed interface 2) connects to 'Octal memory 3'. The pins for Port 2 are XSPIM_P2_CLK, XSPIM_P2_NCLK, XSPIM_P2_DQS0, XSPIM_P2_NCS1, XSPIM_P2_NCS2, and XSPIM_P2_IO[7:0]. Each memory package has pins for clk, nclk, Data strobe, nCS, and Data[7:0]. The identifier 'MS55960V2' is present in the bottom right corner of the diagram.

Block diagram of XSPI multiplexed mode to Port1. It shows the XSPI I/O manager connected to an AHB bus, control registers, an arbiter, and three XSPI units (XSPI1, XSPI2, XSPI3). The XSPI units are connected to an I/O matrix with static and dynamic muxing. The I/O matrix is connected to two high-speed interfaces (High speed interface 1 and High speed interface 2) and a general High speed interface. The high-speed interfaces are connected to external memory packages (Octal memory 1, 2, and 3) via various pins like XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0, XSPIM_P1_DQS1, XSPIM_P1_NCS1, XSPIM_P1_NCS2, XSPIM_P1_IO[7:0], and XSPIM_P1_IO[15:8]. Configuration signals are also shown.

29.5.6 Two XSPIs multiplexed mode to Port 2 accessing two external memories, and the third XSPI accessing Port 1

This is similar to XSPI multiplexed mode to Port 1, but the target is Port 2. This mode is selected by bits XSPIM_CR[2:1].

Figure 222. XSPI multiplexed (octal and dual-octal) mode to Port 2

Figure 222: XSPI multiplexed (octal and dual-octal) mode to Port 2. This block diagram illustrates the internal architecture of the XSPI I/O manager and its connection to external memory. On the left, three XSPI controllers (XSPI1, XSPI2, XSPI3) are connected to a central 'XSPI I/O manager' block. The manager contains 'Control registers' connected to an 'AHB' bus, an 'Arbiter', and an 'I/O matrix' with 'Static and dynamic muxing'. The I/O matrix is divided into two ports: P1 and P2. Port 1 is connected to 'High speed interface 1' and leads to 'Octal memory 3'. Port 2 is connected to 'High speed interface 2' and leads to a group of 'Two-memory packages or multi-chip package (MCP)' containing 'Octal memory 1' and 'Octal memory 2'. 'Configuration signals selection' and 'Configuration signals' are shown entering the high-speed interfaces from the XSPI controllers. A vertical line labeled 'Alternate functions signals' is also shown. The signal names for Port 1 include XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0, XSPIM_P1_DQS1, XSPIM_P1_NCS1, XSPIM_P1_NCS2, XSPIM_P1_IO[7:0], and XSPIM_P1_IO[15:8]. The signal names for Port 2 include XSPIM_P2_CLK, XSPIM_P2_NCLK, XSPIM_P2_DQS0, XSPIM_P2_NCS1, XSPIM_P2_NCS2, and XSPIM_P2_IO[7:0]. The memory chips show pins for clk, nclk, Data strobe, nCS, and Data[7:0]. A reference code 'MS55962V2' is in the bottom right corner.
Figure 222: XSPI multiplexed (octal and dual-octal) mode to Port 2. This block diagram illustrates the internal architecture of the XSPI I/O manager and its connection to external memory. On the left, three XSPI controllers (XSPI1, XSPI2, XSPI3) are connected to a central 'XSPI I/O manager' block. The manager contains 'Control registers' connected to an 'AHB' bus, an 'Arbiter', and an 'I/O matrix' with 'Static and dynamic muxing'. The I/O matrix is divided into two ports: P1 and P2. Port 1 is connected to 'High speed interface 1' and leads to 'Octal memory 3'. Port 2 is connected to 'High speed interface 2' and leads to a group of 'Two-memory packages or multi-chip package (MCP)' containing 'Octal memory 1' and 'Octal memory 2'. 'Configuration signals selection' and 'Configuration signals' are shown entering the high-speed interfaces from the XSPI controllers. A vertical line labeled 'Alternate functions signals' is also shown. The signal names for Port 1 include XSPIM_P1_CLK, XSPIM_P1_NCLK, XSPIM_P1_DQS0, XSPIM_P1_DQS1, XSPIM_P1_NCS1, XSPIM_P1_NCS2, XSPIM_P1_IO[7:0], and XSPIM_P1_IO[15:8]. The signal names for Port 2 include XSPIM_P2_CLK, XSPIM_P2_NCLK, XSPIM_P2_DQS0, XSPIM_P2_NCS1, XSPIM_P2_NCS2, and XSPIM_P2_IO[7:0]. The memory chips show pins for clk, nclk, Data strobe, nCS, and Data[7:0]. A reference code 'MS55962V2' is in the bottom right corner.

Note: It is possible to connect a 16-bit memory on Port 1, whereas Port 2 uses multiplexing mode on two octal memories.

29.5.7 XSPI1 and XSPI2 drive a single external memory

This is similar to XSPIs multiplexed mode to Port 1, but in this case only one external memory is present. Both CSSEL controls must target the same NCS (NCS1 in Figure 223).

Figure 223. XSPI1 and XSPI2 drive a single external memory (octal mode)

Block diagram showing XSPI1 and XSPI2 driving a single external memory in octal mode via the XSPI I/O manager.

The diagram illustrates the internal architecture of the XSPI I/O manager (XSPIM) and its connection to external memories. On the left, the XSPIM is connected to an AHB bus and contains control registers, an arbiter, and an I/O matrix with static and dynamic muxing. Three XSPI controllers (XSPI1, XSPI2, XSPI3) are shown. XSPI1 and XSPI2 are connected to the I/O matrix and their signals are routed through 'High speed interface 1' and 'High speed interface 2' to a common 'High speed interface'. XSPI3 is connected to the I/O matrix and its signals are routed through the common 'High speed interface'. The common 'High speed interface' connects to two external memories: 'Octal memory 1' and 'Octal memory 2'. The signals for Octal memory 1 are: XSPIM_P1_CLK (clk), XSPIM_P1_NCLK (nclk), XSPIM_P1_DQS0 (Data strobe), XSPIM_P1_DQS1, XSPIM_P1_NCS1 (nCS), XSPIM_P1_NCS2, XSPIM_P1_IO[7:0] (Data[7:0]), and XSPIM_P1_IO[15:8]. The signals for Octal memory 2 are: XSPIM_P2_CLK (clk), XSPIM_P2_NCLK (nclk), XSPIM_P2_DQS0 (Data strobe), XSPIM_P2_NCS1 (nCS), XSPIM_P2_NCS2, and XSPIM_P2_IO[7:0] (Data[7:0]). Configuration signals and configuration signals selection are also shown. The diagram is labeled MS55964V2.

Block diagram showing XSPI1 and XSPI2 driving a single external memory in octal mode via the XSPI I/O manager.

This use case is valid even when Port 2 is used instead of Port 1, and also possible with XSPI1 and XSPI2 interfacing a 16-bit memory (connecting XSPIM_P1_DQS1 to the memory).

29.5.8 A single XSPI drives two external memories

This is a subset of direct mode and corresponds to semi-dynamic switching. There are two target memories, but the arbiter is not used. The software must set the XSPI1 chip selector (bit 24 of the XSPI_CR register) each time the target memory changes.

The baseline use case boots on flash (memory1) and then switches to SRAM (memory2) for the rest of the application.

Figure 224. Single XSPI driving two external memories

Block diagram of XSPI I/O manager driving two external memories via high-speed interfaces.

The diagram illustrates the internal architecture of the XSPI I/O manager and its connection to two external memories. On the left, an XSPI1 block is connected to the XSPI I/O manager via XSPI1 bus signals (ACK1, REQ1, CS1, CSSEL1). The XSPI I/O manager contains an AHB interface connected to an AHB bus, a Control register , an Arbiter , Static muxing , Dynamic muxing , and an I/O matrix . The Arbiter receives configuration signals and controls the Static muxing and Dynamic muxing blocks. The Static muxing block connects to the I/O matrix . The I/O matrix is connected to two High speed interface blocks, labeled High speed interface 1 and High speed interface 2 . These interfaces are connected to a Multipack package (MCP) containing two Octal memory blocks, Octal memory 1 and Octal memory 2 . The connections between the interfaces and the memories are as follows:

The XSPI I/O manager also receives Alternate functions signals and a Configuration signal (via Configuration signal selection ).

Block diagram of XSPI I/O manager driving two external memories via high-speed interfaces.

This use case shows a configuration using XSPI1 on Port 1. It is also valid if the instance is XSPI2 instead of XSPI1, but with MODE = 1. The use case is also valid when Port 2 is used instead of Port 1, by configuring MODE bit according to the instance (XSPI1 or XSPI2) driving the two external memories.

29.6 XSPIM registers

29.6.1 XSPIM control register (XSPIM_CR)

Address offset: 0x0000

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.REQ2ACK_TIME[7:0]
rwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.CSSEL_OVR_O2CSSEL_OVR_O1CSSEL_OVR_ENRes.Res.MODEMUXEN
rwrwrwrwrw

Bits 31:24 Reserved, must be kept at reset value.

Bits 23:16 REQ2ACK_TIME[7:0] : REQ to ACK time

In Multiplexed mode (MUXEN = 1), this field defines the time between two transactions.

The value is the number of XSPI clock cycles - 1

Bits 15:7 Reserved, must be kept at reset value.

Bit 6 CSSEL_OVR_O2 : Chip select selector override setting for XSPI2

0: XSPI2 can only use NCS1 (accesses using NCS2 are ignored)

1: XSPI2 can only use NCS2 (accesses using NCS1 are ignored)

Bit 5 CSSEL_OVR_O1 : Chip select selector override setting for XSPI1

0: XSPI1 can only use NCS1 (accesses using NCS2 are ignored)

1: XSPI1 can only use NCS2 (accesses using NCS1 are ignored)

Bit 4 CSSEL_OVR_EN : Chip select selector override enable

0: CSSEL_OVR_O1 and CSSEL_OVR_O2 bit values are ignored, the chip select signals from OCTOSPIs or XSPIs are transmitted unconditionally

1: CSSEL_OVR_O1 and CSSEL_OVR_O2 bit values are taken into account

Bits 3:2 Reserved, must be kept at reset value.

Bit 1 MODE : XSPI multiplexing mode

0: if MUXEN = 0 direct mode, if MUXEN = 1 arbitration mode to output Port 1

1: if MUXEN = 0 swapped mode, if MUXEN = 1 arbitration mode to output Port 2

Bit 0 MUXEN : Multiplexed mode enable

This bit enables the multiplexing of the two XSPIs.

0: No multiplexing, hence no arbitration

1: XSPI1 and XSPI2 are multiplexed over the same bus

29.6.2 XSPIM register map

Table 205. XSPIM register map and reset values

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x0000XSPIM_CRRes.Res.Res.Res.Res.Res.Res.Res.REQ2ACK_TIME[7:0]Res.Res.Res.Res.Res.Res.Res.Res.Res.000Res.Res.MODEMUXEN
Reset value0000000000

Refer to Section 2.3: Memory organization for the register boundary addresses.