25. Parallel synchronous slave interface (PSSI) applied to STM32L4P5xx and STM32LQ5xx only
The PSSI peripheral and the DCMI (digital camera interface) use the same circuitry. As a result, these two peripherals cannot be used at the same time: when using the PSSI, the DCMI registers cannot be accessed, and vice-versa.
In addition, the PSSI and the DCMI share the same alternate functions and interrupt vector (see Section 25.3.2: PSSI pins and internal signals ).
25.1 Introduction
The PSSI is a generic synchronous 8/16-bit parallel data input/output slave interface. It enables the transmitter to send a data valid signal that indicates when the data is valid, and the receiver to output a flow control signal that indicates when it is ready to sample the data.
25.2 PSSI main features
The PSSI peripheral main features are the following:
- • Slave mode operation
- • 8-bit or 16-bit parallel data input or output
- • 8-word (32-byte) FIFO
- • Data enable (PSSI_DE) alternate function input and Ready (PSSI_RDY) alternate function output
When selected, these signals can either enable the transmitter to indicate when the data is valid, allow the receiver to indicate when it is ready to sample the data, or both.
25.3 PSSI functional description
The PSSI is a synchronous parallel slave interface that can send or receive high-speed data flows. It consists of up to 16 data lines (PSSI_D[15:0]) plus a clock line (PSSI_PDCK). The clock polarity can be configured so that data can be captured or transmitted on either the clock rising or falling edge.
Usually, a general-purpose DMA channel is used to pass 32-bit packed data via the data register (PSSI_DR).
The data flow can either be continuous or synchronized by hardware using the optional PSSI_DE (Data enable), and PSSI_RDY (Ready) signals.
Figure 175 shows the PSSI block diagram.
25.3.1 PSSI block diagram
Figure 175. PSSI block diagram
![Figure 175. PSSI block diagram. This diagram shows the internal architecture of the PSSI. On the left, an 'AHB interface' connects to a 'DMA interface', a 'Control/Status Register', and a 'FIFO/Data formatter'. The 'DMA interface' and 'Control/Status Register' both have bidirectional connections to the 'Control/Status Register'. The 'FIFO/Data formatter' has a bidirectional connection to the 'Data extraction' block. The 'Data extraction' block has a bidirectional connection to the 'Synchronizer'. The 'Synchronizer' has a bidirectional connection to the 'External interface' pins: 'PSSI_PDCK', 'PSSI_D[15:0]', 'PSSI_DE', and 'PSSI_RDY'. The 'PSSI_D[15:0]' signal is a 16-bit wide bus. The 'PSSI_DE' and 'PSSI_RDY' signals are single-line signals. The 'PSSI_PDCK' signal is a single-line signal. The diagram is labeled 'MSv48844V3' in the bottom right corner.](/RM0432-STM32L4+/10b8a158d51128f3922468bedf784b53_img.jpg)
Figure 176. Top-level block diagram
![Figure 176. Top-level block diagram. This diagram shows the PSSI block within a system context. The central 'PSSI' block has several connections: 'pssi_hclk' (input) from the top, 'pssi_it' (output) to an 'Interrupt controller' on the left, 'pssi_dma' (output) to the bottom left, and an 'External interface' on the right. The 'External interface' includes 'PSSI_D[15:0]' (bidirectional bus), 'PSSI_DE' (input), 'PSSI_RDY' (output), and 'PSSI_PDCK' (input). The diagram is labeled 'MSv48845V4' in the bottom right corner.](/RM0432-STM32L4+/803380bed9e8347892fb860c78cb4a48_img.jpg)
25.3.2 PSSI pins and internal signals
The PSSI interface is composed of 19 pins, though nine signals are enough to transfer parallel data. Table 166 shows the PSSI pins.
When the PSSI ENABLE bit (bit 14 of PSSI_CR) is set to 1, the alternate functions and the interrupt vector are associated with the PSSI. Otherwise, they are associated with the DCMI. The DCMI ENABLE bit (bit 15 of DCMI_CR) and the PSSI ENABLE bit (bit 14 of PSSI_CR) must not be set to 1 at the same time. As an example, if a GPIO is configured to use the alternate function PSSI_PDCK/DCMI_PIXCK, it is the PSSI_PDCK function which becomes active if PSSI_CR/ENABLE is set to 1.
Table 166. PSSI input/output pins
| PSSI signal name | DCMI signal it is shared with | Signal type | Description |
|---|---|---|---|
| PSSI_PDCK | DCMI_PIXCK | Input | Parallel data clock input |
| PSSI_D[15:0] | DCMI_D[13:0] | Input/output | Data output when transmitting, data input when receiving |
| PSSI_DE | DCMI_HSYNC | Input | Data enable signal: data valid signal when receiving or flow control signal when transmitting |
| PSSI_RDY | DCMI_VSYNC | Output | Ready signal: flow control signal when receiving or data valid signal when transmitting |
Table 167 shows the PSSI internal input/output signals.
Table 167. PSSI internal input/output signals
| Internal signal name | Signal type | Description |
|---|---|---|
| pssi_it | Output | Interrupt |
| pssi_dma | Output | DMA request |
| pssi_hclk | Input | AHB clock |
25.3.3 PSSI clock
The AHB clock frequency must be at least 2.5 times higher than the PSSI_PDCK frequency. At frequency ratios lower than 2.5, data might be corrupted or lost during transfers.
Data transfers are synchronous with PSSI_PDCK. The PSSI_PDCK polarity can be configured as follows, through CKPOL bit (bit 5 of PSSI_CR):
- • When CKPOL = 0
- – Input pins are sampled on PSSI_PDCK falling edge
- – Output pins are driven on PSSI_PDCK rising edge
- • When CKPOL = 1
- – Input pins are sampled on PSSI_PDCK rising edge
- – Output pins are driven on PSSI_PDCK falling edge
25.3.4 PSSI data management
Data direction
The direction of data transfers is configured through the OUTEN control bit (bit 31 of PSSI_CR):
- • When OUTEN is cleared to 0 (default setting), the PSSI operates in receive mode and the data is input on the data pins.
- • When OUTEN is set to 1, the peripheral operates in transmit mode and the data is output on the data pins.
OUTEN can be modified only when the ENABLE bit is cleared to 0.
Data register and DMA
Data are transferred from/to the FIFO using the PSSI_DR data register:
- • In receive mode, data must be read from the FIFO by reading PSSI_DR.
- • In transmit mode, data must be written to the FIFO by writing into PSSI_DR.
Word (32-bit) accesses to PSSI_DR and half-word (16-bit) accesses to PSSI_DR[15:0] are permitted in all modes. Byte (8-bit) accesses to PSSI_DR[7:0] are permitted only when the PSSI is configured to transfer 8 bits at a time (EDM=00 in the PSSI_CR register).
To reduce the load on the CPU, it is recommended to use the DMA to transfer data from/to the PSSI FIFO. When it is used, the DMA must be configured to transfer data via the PSSI_DR register. Using 32-bit transfers optimizes bandwidth and reduces the bus load. However, 8-bit and 16-bit transfers are also permitted.
To use the DMA, set the PSSI DMA enable bit (DMAEN in PSSI_CR) to 1 (default setting). When DMAEN is set to 1, a DMA transfer is initiated when the FIFO is ready for a 32-bit transfer (four valid bytes in receive mode or four empty bytes in transmit mode). As a result, in receive mode, no DMA transfers are initiated if there are three bytes or fewer in the FIFO, even if the DMA is configured to perform 8-bit transfers.
The RTT4B and RTT1B status bits (PSSI_SR) are useful when the CPU directly perform transfers to and from the FIFO. RTT4B set to 1 indicates that the FIFO is ready to transfer four bytes: at least four valid bytes in the FIFO in receive mode or at least four free bytes in transmit mode. RTT1B set to 1 indicates that the FIFO is ready to transfer one byte: at least one valid byte in the FIFO in receive mode or at least one free byte in transmit mode.
8-bit data
The PSSI parallel interface can transfer either 8-bit (using D[7:0]) or 16-bit data (using D[15:0]) depending on the EDM[1:0] control bits (bits 11:10 of PSSI_CR). If the 8-bit configuration is selected (EDM[1:0] set to 00), the unused D[15:0] pins can be used for GPIO or other functions.
When EDM[1:0] in PSSI_CR are programmed to 00, the interface transfers 8 bits using the D[7:0] pins. In this case, D[15:8] are not used and four PSSI_PDCK cycles are required to transfer a 32-bit word.
The least-significant byte (bits 7:0) correspond to the first byte transferred, and the most-significant byte (bits 31:28) corresponds to the forth byte transferred. Table 168 illustrates the positioning of the data bytes in two 32-bit words.
Table 168. Positioning of captured data bytes in 32-bit words (8-bit width)
| Byte address | 31:24 | 23:16 | 15:8 | 7:0 |
|---|---|---|---|---|
| 0 | D n+3 [7:0] | D n+2 [7:0] | D n+1 [7:0] | D n [7:0] |
| 4 | D n+7 [7:0] | D n+6 [7:0] | D n+5 [7:0] | D n+4 [7:0] |
16-bit data
When EDM[1:0] in PSSI_CR are programmed to 11, the interface transfers 16 bits using the D[15:0] pins. In this case, two PSSI_PDCK cycles are required to transfer a 32-bit word.
The least-significant half word (bits 15:0) correspond to the first half word transferred, and the most-significant half-word (bits 31:16) corresponds to the second half word transferred.
Table 169 illustrates the positioning of the data in two 32-bit words.
Table 169. Positioning of captured data bytes in 32-bit words (16-bit width)
| Byte address | 31:16 | 15:0 |
|---|---|---|
| 0 | D n+1 [15:0] | D n [15:0] |
| 4 | D n+3 [15:0] | D n+2 [15:0] |
FIFO data buffer and error conditions
An eight-word FIFO helps improving performance and avoids overruns and underruns.
If the ready signal (PSSI_RDY) is disabled in receive mode, an overrun error is generated when a clock active edge occurs when the FIFO is full. In this case, the input data is lost.
If the data enable signal (PSSI_DE) is disabled in transmit mode, an underrun error is generated when a clock active edge occurs when the FIFO is empty. In this case, unpredictable data are output.
The OVR_RIS status bit indicates that either an overrun or an underrun occurred. An interrupt can be generated when these events occur.
25.3.5 PSSI optional control signals
Data Enable (PSSI_DE) alternate function input
The data enable signal, PSSI_DE, is an optional signal. It is driven by the data source/transmitter in order to indicate that the data is valid to be transferred during the current cycle. When PSSI_DE is inactive, it means that the data must not be sampled by the receiver at the next clock edge.
This alternate function signal can be enabled using the DERDYCFG (bits 20:18 of PSSI_CR) control bits. PSSI_DE polarity is configured through DEPOL control bit (bit 6 of PSSI_CR). PSSI_DE is active low when DEPOL is cleared to 0, and high when DEPOL is set to 1.
The direction of the PSSI_DE signal is defined by the OUTEN value. It is the same as the data direction.
If the PSSI_DE alternate function input is enabled (through DERDYCFG) in receive mode (OUTEN cleared to 0), the PSSI samples PSSI_DE on the same PSSI_PDCK edge as the one used for sampling the data (D[15:0]). If PSSI_DE is active, the sampled data is saved in the FIFO. Otherwise, the sampled data is considered invalid and discarded. The transmitting device can use PSSI_DE as a data valid signal, driving it inactive when the data in the current cycle is not valid. This flow control function allows avoiding underrun errors.
Figure 177. Data enable in receive mode waveform diagram (CKPOL=0)
![Figure 177: Data enable in receive mode waveform diagram (CKPOL=0). The diagram shows three signals over time: PSSI_PDCK (clock), PSSI_D[15:0] (data), and PSSI_DE (data enable). The clock is a square wave. The data is a 16-bit bus that changes values on the rising edges of the clock. The data enable signal is active low and is asserted (goes low) on the rising edge of the clock that corresponds to the first data value. The signal then goes high on the next rising edge of the clock. The diagram includes break symbols (//) to indicate time gaps. The identifier MSv48846V2 is in the bottom right corner.](/RM0432-STM32L4+/ce199ad83af436dbb23e3ed33a864ad3_img.jpg)
If the PSSI_DE alternate output function is enabled (through DERDYCFG) in transmit mode (OUTEN=1), the PSSI drives PSSI_DE on the same PSSI_PDCK edge that the one used to drive the data (D[15:0]). If a new 8 or 16-bit data (as programmed in the EDM[1:0] control bits in PSSI_CR) is available for transmission in the internal FIFO, this data is output on the data outputs (D[15:0]) and the PSSI_DE output becomes active on the current PSSI_PDCK edge. Otherwise (if the TX FIFO is empty), the D[15:0] outputs remains unchanged on the next clock edge and the PSSI_DE output becomes inactive.
Figure 178. Data enable waveform diagram in transmit mode (CKPOL=0)
![Figure 178: Data enable waveform diagram in transmit mode (CKPOL=0). The diagram shows three signals over time: PSSI_PDCK (clock), PSSI_D[15:0] (data), and PSSI_DE (data enable). The clock is a square wave. The data is a 16-bit bus that changes values on the rising edges of the clock. The data enable signal is active low and is asserted (goes low) on the rising edge of the clock that corresponds to the first data value. The signal then goes high on the next rising edge of the clock. The diagram includes break symbols (//) to indicate time gaps. The identifier MSv48847V2 is in the bottom right corner.](/RM0432-STM32L4+/1f4523d5f3ee3b4f7e8f38627c042fdc_img.jpg)
Ready (PSSI_RDY) alternate function output
The ready signal, PSSI_RDY, is an optional signal. It is driven by the receiving device and indicates whether data is being accepted in the current cycle. When PSSI_RDY is inactive, it means that the data must not be sampled by the receiver at the next clock edge.
This alternate function signal can be enabled using the DERDYCFG control bits (bits 20:18 of PSSI_CR). PSSI_RDY polarity is configured through the RDYPOL control bit (bit 6 of PSSI_CR). PSSI_RDY is active low when RDYPOL is cleared to 0, and high when RDYPOL set to 1.
The direction of the PSSI_RDY signal is defined by the OUTEN (bit 31 of PSSI_CR). It is set in the opposite direction compared to the PSSI_DE and data signals.
If the PSSI_RDY alternate output function is enabled (through DERDYCFG) in receive mode (OUTEN=0), the PSSI drives PSSI_RDY one PSSI_PDCK half cycle after it samples
the data (D[15:0]). If the FIFO has enough free space to receive more data, the PSSI drives the PSSI_RDY signal active. Otherwise, if the FIFO is full and cannot accept more data, the PSSI drives the PSSI_RDY signal inactive. The transmitting device must repeat the current data in the next cycle when it detects that PSSI_RDY is inactive. This flow control function allows the PSSI to avoid overrun errors when the system (via the DMA) is unable to keep up with the data flow.
Figure 179. Ready in receive mode waveform diagram (CKPOL=0)
![Figure 179. Ready in receive mode waveform diagram (CKPOL=0). The diagram shows four signals over time: PSSI_PDCK (clock), PSSI_D[15:0] (data bus), PSSI_DE (data enable), and PSSI_RDY (ready). PSSI_PDCK is a periodic square wave. PSSI_D[15:0] shows data being driven onto the bus in several cycles, with some cycles showing no data (high impedance). PSSI_DE is active low, going low when data is valid. PSSI_RDY is active low, going low when the receiver is ready to accept more data. The diagram illustrates that when PSSI_RDY is inactive (high), the transmitter repeats the current data. When PSSI_RDY is active (low), new data can be driven onto the bus. The diagram is labeled MSv48848V2 in the bottom right corner.](/RM0432-STM32L4+/3caf7007bdf1e6df3d832cbb018376df_img.jpg)
If the PSSI_RDY alternate input function is enabled (through DERDYCFG) in transmit mode (OUTEN=1), the PSSI samples the PSSI_RDY signal on the opposite PSSI_PDCK edge to the one at which D[15:0] are driven. If the PSSI_RDY signal is inactive, the PSSI keeps the same data (D[15:0]) and PSSI_DE signals that valid data are available during the next PSSI_PDCK clock cycle. Otherwise, if PSSI_RDY signal is sampled as active, the next data from the TX FIFO (if available) is output on the data outputs (D[15:0]). If no new data are available in the TX FIFO, the PSSI keeps the data output values and outputs the PSSI_DE signal as inactive (if enabled).
The receiving device uses the PSSI_RDY to control the data flow and avoid overrun errors when the system (via the DMA) is unable to keep up with the data flow.
Bidirectional PSSI_DE/PSSI_RDY signal
A single pin can be used for both data enable (PSSI_DE) and ready (PSSI_RDY) functions if DEPOL and RDYPOL are both set to 1 and DERDYCFG is set to 111 or 100 in the PSSI_CR register. In this case, the GPIO corresponding to selected alternate function (PSSI_DE when DERDYCFG=111 or PSSI_RDY when DERDYCFG=100) must be configured as open-drain. The other device must also be configured to drive the line as open-drain, and a weak pull-up must be applied to the line.
The signal thus becomes bidirectional. If either the sender drives the line low (to indicate that the data is not valid) or the receiver drives the line low (to indicate that it is not sampling the current data), then both devices know that the data is not being transferred in the current cycle.
Figure 180. Bidirectional PSSI_DE/PSSI_RDY waveform
![Timing diagram showing signals PSSI_PDCK, PSSI_D[15:0], and PSSI_DE/PSSI_RDY over time. PSSI_PDCK is a periodic clock signal. PSSI_D[15:0] is a 16-bit data bus with data segments. PSSI_DE and PSSI_RDY are active-low signals that go low during data transmission periods.](/RM0432-STM32L4+/631f0f9759e3f28b0b757486d593107c_img.jpg)
Figure 181. Bidirectional PSSI_DE/PSSI_RDY connection diagram
![Block diagram showing a PSSI block connected to a Master transmitter. The PSSI block has pins for PSSI_D[15:0], PSSI_PDCK, and PSSI_DE_RDY. The Master transmitter has corresponding pins. The PSSI_D[15:0] and PSSI_PDCK lines are bidirectional. The PSSI_DE_RDY line is active-low and connected between the two blocks.](/RM0432-STM32L4+/e1fe25ba572725d469457810ce79b791_img.jpg)
25.4 PSSI interrupts
The PSSI generates only one interrupt (IT_OVR). It is consequently equivalent to the global interrupt (pssi_it). Refer to Table 170 for the list of interrupts.
The PSSI and the DCMI share the same interrupt vector. When the PSSI ENABLE bit (bit 14 of PSSI_CR) is set to 1, these interrupts are triggered by the PSSI. Otherwise, they are controlled by the DCMI.
The DCMI ENABLE bit (bit 14 of DCMI_CR) and PSSI ENABLE bit must not be set to 1 at the same time.
Table 170. PSSI interrupt requests
| Interrupt acronym | Shared with DCMI | Interrupt event | Event flag | Enable control bit | Interrupt clear method | Exit from low-power mode |
|---|---|---|---|---|---|---|
| IT_OVR | IT_OVR | indicates overrun in receive mode or underrun in transmit mode | OVR_RIS | OVR_IE | OVR_ISC | NA |
25.5 PSSI registers
An 8-bit write or a 16-bit write operation to any PSSI register besides PSSI_DR, results in a bus error. 32-bit read and write operations are permitted.
25.5.1 PSSI control register (PSSI_CR)
Address offset: 0x00
Reset value: 0x4000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| OUTEN | DMAEN | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | DERDYCFG[2:0] | Res. | Res. | ||
| rw | rw | rw | rw | rw | |||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | ENABLE | Res. | Res. | EDM[1:0] | Res. | RDYPOL | Res. | DEPOL | CKPOL | Res. | Res. | Res. | Res. | Res. | |
| rw | rw | rw | rw | rw | rw | ||||||||||
Bit 31 OUTEN : Data direction selection bit
- 0: Receive mode: data is input synchronously with PSSI_PDCK
- 1: Transmit mode: data is output synchronously with PSSI_PDCK
Bit 30 DMAEN : DMA enable bit
- 0: DMA transfers are disabled. The user application can directly access the PSSI_DR register when DMA transfers are disabled.
- 1: DMA transfers are enabled (default configuration). A DMA channel in the general-purpose DMA controller must be configured to perform transfers from/to PSSI_DR.
Bits 29:21 Reserved, must be kept at reset value.
Bits 20:18 DERDYCFG[2:0] : Data enable and ready configuration
- 000: PSSI_DE and PSSI_RDY both disabled
- 001: Only PSSI_RDY enabled
- 010: Only PSSI_DE enabled
- 011: Both PSSI_RDY and PSSI_DE alternate functions enabled
- 100: Both PSSI_RDY and PSSI_DE features enabled - bidirectional on PSSI_RDY pin (see Bidirectional PSSI_DE/PSSI_RDY signal on page 801 )
- 101: Only PSSI_RDY function enabled, but mapped to PSSI_DE pin
- 110: Only PSSI_DE function enabled, but mapped to PSSI_RDY pin
- 111: Both PSSI_RDY and PSSI_DE features enabled - bidirectional on PSSI_DE pin (see Bidirectional PSSI_DE/PSSI_RDY signal on page 801 )
When the PSSI_RDY function is mapped to the PSSI_DE pin (settings 101 or 111), it is still the RDYPOL bit which determines its polarity. Similarly, when the PSSI_DE function is mapped to the PSSI_RDY pin (settings 110 or 111), it is still the DEPOL bit which determines its polarity.
Bits 17:15 Reserved, must be kept at reset value.
Bit 14 ENABLE : PSSI enable
0: PSSI disabled
1: PSSI enabled
The contents of the FIFO are flushed when ENABLE is cleared to 0.
Note: When ENABLE=1, the content of PSSI_CR must not be changed, except for the ENABLE bit itself. All configuration bits can change as soon as ENABLE changes from 0 to 1.
The DMA controller and all PSSI configuration registers must be programmed correctly before setting the ENABLE bit to 1.
The ENABLE bit and the DCMI ENABLE bit (bit 15 of DCMI_CR) must not be set to 1 at the same time.
Bits 13:12 Reserved, must be kept at reset value.
Bits 11:10 EDM[1:0] : Extended data mode
00: Interface captures 8-bit data on every parallel data clock
01: Reserved, must not be selected
10: Reserved, must not be selected
11: The interface captures 16-bit data on every parallel data clock
Bit 9 Reserved, must be kept at reset value.
Bit 8 RDYPOL : Ready (PSSI_RDY) polarity
This bit indicates the level on the PSSI_RDY pin when the data are not valid on the parallel interface.
0: PSSI_RDY active low (0 indicates that the receiver is ready to receive)
1: PSSI_RDY active high (1 indicates that the receiver is ready to receive)
Bit 7 Reserved, must be kept at reset value.
Bit 6 DEPOL : Data enable (PSSI_DE) polarity
This bit indicates the level on the PSSI_DE pin when the data are not valid on the parallel interface.
0: PSSI_DE active low (0 indicates that data is valid)
1: PSSI_DE active high (1 indicates that data is valid)
Bit 5 CKPOL : Parallel data clock polarity
This bit configures the capture edge of the parallel clock or the edge used for driving outputs, depending on OUTEN.
0: Falling edge active for inputs or rising edge active for outputs
1: Rising edge active for inputs or falling edge active for outputs.
Bits 4:0 Reserved, must be kept at reset value.
25.5.2 PSSI status register (PSSI_SR)
Address offset: 0x04
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | RTT1B | RTT4B | Res. | Res. |
| r | r |
Bits 31:4 Reserved, must be kept at reset value.
Bit 3 RTT1B : FIFO is ready to transfer one byte
1: FIFO is ready for a one byte (32-bit) transfer. In receive mode, this means that at least one valid data byte is in the FIFO. In transmit mode, this means that there is at least one byte free in the FIFO.
0: FIFO is not ready for a 1-byte transfer
Bit 2 RTT4B : FIFO is ready to transfer four bytes
1: FIFO is ready for a four-byte (32-bit) transfer. In receive mode, this means that at least four valid data bytes are in the FIFO. In transmit mode, this means that there are at least four bytes free in the FIFO.
0: FIFO is not ready for a four-byte transfer
Bits 1:0 Reserved, must be kept at reset value.
25.5.3 PSSI raw interrupt status register (PSSI_RIS)
Address offset: 0x08
Reset value: 0x0000 0000
PSSI_RIS gives the raw interrupt status. This register is read-only. When read, it returns the status of the corresponding interrupt before masking with the PSSI_IER register value.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | OVR_RIS | Res. |
| r |
Bits 31:2 Reserved, must be kept at reset value.
Bit 1 OVR_RIS : Data buffer overrun/underrun raw interrupt status
0: No overrun/underrun occurred
1: An overrun/underrun occurred: overrun in receive mode, underrun in transmit mode.
This bit is cleared by writing a 1 to the OVR_ISC bit in PSSI_ICR.
Bit 0 Reserved, must be kept at reset value.
25.5.4 PSSI interrupt enable register (PSSI_IER)
Address offset: 0x0C
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | OVR_IE | Res. |
| rw |
The PSSI_IER register is used to enable interrupts. When one of the PSSI_IER bits is set, the corresponding interrupt is enabled. This register is accessible both in read and write modes.
Bits 31:2 Reserved, must be kept at reset value.
Bit 1 OVR_IE : Data buffer overrun/underrun interrupt enable
0: No interrupt generation
1: An interrupt is generated if either an overrun or an underrun error occurred.
Bit 0 Reserved, must be kept at reset value.
25.5.5 PSSI masked interrupt status register (PSSI_MIS)
This PSSI_MIS register is read-only. When read, it returns the current masked status value of the corresponding interrupt (depending on the value in PSSI_IER). A bit in this register is
set if the corresponding enable bit in PSSI_IER is set and the corresponding bit in PSSI_RIS is set.
Address offset: 0x10
Reset value: 0x0000 0000
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | OVR_MIS | Res. |
| r |
Bits 31:2 Reserved, must be kept at reset value.
Bit 1 OVR_MIS : Data buffer overrun/underrun masked interrupt status
This bit is set to 1 only when PSSI_IER/OVR_IE and PSSI_RIS/OVR_RIS are both set to 1.
0: No interrupt is generated when an overrun/underrun error occurs
1: An interrupt is generated if there is either an overrun or an underrun error and the OVR_IE bit is set in PSSI_IER.
Bit 0 Reserved, must be kept at reset value.
25.5.6 PSSI interrupt clear register (PSSI_ICR)
Address offset: 0x14
Reset value: 0x0000 0000
The PSSI_ICR register is write-only. Writing a 1 into a bit of this register clears the corresponding bit in the PSSI_RIS and PSSI_MIS registers. Writing a 0 has no effect. Reading this register always gives zeros.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | OVR_ISC | Res. |
| w |
Bits 31:2 Reserved, must be kept at reset value.
Bit 1 OVR_ISC : Data buffer overrun/underrun interrupt status clear
Writing this bit to 1 clears the OVR_RIS bit in PSSI_RIS.
Bit 0 Reserved, must be kept at reset value.
25.5.7 PSSI data register (PSSI_DR)
Address offset: 0x28
Reset value: 0x0000 0000
In receive mode (OUTEN=0), the DMA controller must read the received data from this register. Write operations to PSSI_DR result in an error response. When more bytes than the number of valid bytes are read in the FIFO, the invalid bytes return zeros.
In transmit mode (OUTEN=1), the DMA controller must write the data to be transmitted into this register. Read operations to PSSI_DR result in an error response.
32-bit, 16-bit, and 8-bit accesses are all supported for PSSI_DR. For instance, 16-bit read/write operations remove/add two bytes from/to the FIFO. However, 8-bit accesses are permitted only when the PSSI is configured to transfer 8 data bits at a time (EDM=00 in PSSI_CR). 8-bit accesses to PSSI_DR when EDM is not set to 0 result in an error response.
All accesses must include byte 0: 8-bit accesses must be performed to bits 7 to 0 and 16-bit accesses from bits 15 to 0. Accesses that do not include byte 0 result in an error response.
Accessing PSSI_DR when ENABLE bit in PSSI_CR is set to 0 results in an error response.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BYTE3[7:0] | BYTE2[7:0] | ||||||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| BYTE1[7:0] | BYTE0[7:0] | ||||||||||||||
| rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Bits 31:24 BYTE3[7:0] : Data byte 3
Bits 23:16 BYTE2[7:0] : Data byte 2
Bits 15:8 BYTE1[7:0] : Data byte 1
Bits 7:0 BYTE0[7:0] : Data byte 0
25.5.8 PSSI register map
Table 171. PSSI register map and reset values
| Offset | Register | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x00 | PSSI_CR | OUTEN | DMAEN | Res | Res | Res | Res | Res | Res | Res | Res | Res | DERDYCFG | Res | Res | Res | Res | Res | ENABLE[2:0] | Res | Res | EDM | Res | Res | RDYPOL | Res | DEPOL | CKPOL | Res | Res | Res | Res | |
| Reset value | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||
| 0x04 | PSSI_SR | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | Res | RTT1B | RTT4B | Res | |
| Reset value | 0 | 0 |
Table 171. PSSI register map and reset values (continued)
| Offset | Register | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x08 | PSSI_RIS | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | 0 | o OVR_RIS |
| Reset value | 0 | o | ||||||||||||||||||||||||||||||||
| 0x0C | PSSI_IER | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | 0 | o OVR_IE |
| Reset value | 0 | o | ||||||||||||||||||||||||||||||||
| 0x10 | PSSI_MIS | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | 0 | o OVR_MIS |
| Reset value | 0 | o | ||||||||||||||||||||||||||||||||
| 0x14 | PSSI_ICR | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | 0 | o OVR_ISC |
| Reset value | 0 | o | ||||||||||||||||||||||||||||||||
| 0x18 to 0x24 | Reserved | Res. | ||||||||||||||||||||||||||||||||
| 0x28 | PSSI_DR | BYTE3[7:0] | BYTE2[7:0] | BYTE1[7:0] | BYTE0[7:0] | |||||||||||||||||||||||||||||
| Reset value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
Refer to Section 2.2 on page 93 for the register boundary addresses.