You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The sQSPI API provides the data format interface for use with external displays.
7
+
See :c:struct:`nrf_sqspi_data_fmt_t`.
8
+
9
+
The following parameter combinations have been tested and are considered production ready:
10
+
11
+
.. list-table:: sQSPI data format
12
+
:widths: auto
13
+
:header-rows: 1
14
+
15
+
* - :c:var:`nrf_sqspi_data_fmt_t.data_padding`
16
+
- :c:var:`nrf_sqspi_data_fmt_t.data_container`
17
+
- :c:var:`nrf_sqspi_data_fmt_t.data_swap_unit`
18
+
* - 0
19
+
- 8
20
+
- 8
21
+
* - 0
22
+
- 8
23
+
- 0
24
+
* - 16
25
+
- 16
26
+
- 8
27
+
* - 0
28
+
- 32
29
+
- 16
30
+
31
+
Using external sync bit (tearing effect)
32
+
****************************************
33
+
34
+
sQSPI v1.1.0 can be used alongside some application level processing to send a transfer when a pulse (tearing effect) is detected by either:
35
+
36
+
* Polling a GPIO pin.
37
+
* Setting an interrupt handler to an event linked to a specific GPIO pin (access to peripheral ``GPIOTE`` is required for this).
38
+
* Forwarding a GPIO event through DPPI towards a FLPR task linked to starting a transfer (access to peripheral ``DPPIC`` is required for this, also see :file:`softperipheral/include/softperipheral_regif.h` for the specific task).
39
+
40
+
You can use the first two options by holding a transfer and starting it when the pulse is detected (using flag ``NRF_SQSPI_FLAG_HOLD_XFER`` in :c:func:`nrf_sqspi_xfer`).
Copy file name to clipboardExpand all lines: softperipheral/doc/sQSPI/limitations.rst
+23-7Lines changed: 23 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,20 +9,36 @@ When working with sQSPI, you should be aware of the following limitations.
9
9
:local:
10
10
:depth: 2
11
11
12
-
v1.0.0
12
+
v1.1.0
13
13
******
14
14
15
15
Refer to the following detailed descriptions of current limitations:
16
16
17
17
* sQSPI does not support slave mode operations; it can only operate as a controller (master).
18
18
* The sQSPI support for SPI half-duplex setup is implemented but not tested.
19
-
* sQSPI SPI modes 1,2, and 3 (see the :c:var:`nrf_sqspi_dev_cfg_t.spi_cpolpha` configuration structure) may present artifacts (delays and clock stretching) on the last SCLK cycle during a transfer.
19
+
* sQSPI SPI modes 1,2, and 3 (see the :c:var:`nrf_sqspi_dev_cfg_t.spi_cpolpha` configuration structure) may present artifacts (clock stretching or extra edges) on the last SCLK cycle during a read.
20
+
This has no effect on data integrity.
20
21
* The nrfx API for sQSPI does not support configuring the use of the positive or negative edge of SCLK delayed read sampling.
21
22
* sQSPI employs the :c:var:`nrf_sqspi_dev_cfg_t.sample_delay_cyc` parameter as an offset to FLPR's base clock counter , not SLCK clock cycles (see the :c:struct:`nrf_sqspi_dev_cfg_t` struct).
22
-
* sQSPI :c:var:`nrf_sqspi_dev_cfg_t.sample_delay_cyc` has a limit:
* sQSPI :c:var:`nrf_sqspi_dev_cfg_t.sample_delay_cyc` is constrained to either a value of ``0`` if using ``GPIOHSPADCTRL`` for high-speed transfers (see :ref:`nrf54L15_porting_guide_high_speed_transfers`) or a value greater than ``0`` but lower than that of ``FLPR_counter`` if a high-speed transfer is not needed (see :ref:`sqspi_timing`).
27
24
* Implementation of sQSPI quad or dual lane for command transmission (for example, ``2_2_2`` and ``4_4_4`` modes) is implemented but has not been tested.
28
25
* sQSPI does not support a configurable pin for the CSN line; only **PIN 5** is supported (see :c:var:`nrf_sqspi_dev_cfg_t.csn_pin`).
26
+
* :c:var:`nrf_sqspi_xfer_t.p_data` needs to be a pointer with a 32-bit aligned address.
27
+
* sQSPI high-speed reading cannot happen directly when changing from SPI mode 0 to 3.
28
+
Either do a high-speed write or a slow read (5.8 MHz) in between.
29
+
* :c:var:`nrf_sqspi_xfer_t.addr_length` must be greater than :c:var:`nrf_sqspi_dev_cfg_t.mspi_lines`.
30
+
31
+
* sQSPI will present undefined behavior in the following cases:
32
+
33
+
* 0 byte reads: :c:var:`nrf_sqspi_xfer_t.dir` set to ``NRF_SQSPI_XFER_DIR_RX`` and :c:var:`nrf_sqspi_xfer_t.data_length` set to ``0``.
34
+
* 0 command bits: :c:var:`nrf_sqspi_xfer_t.cmd_length` set to ``0``.
35
+
* 0 address bits: :c:var:`nrf_sqspi_xfer_t.addr_length` set to ``0``.
36
+
37
+
Data format (display use) limitations:
38
+
39
+
* :c:var:`nrf_sqspi_data_fmt_t.data_bit_reorder_unit` must be set to the same value as :c:var:`nrf_sqspi_data_fmt_t.data_swap_unit`.
40
+
* If :c:var:`nrf_sqspi_data_fmt_t.data_padding` is not set to ``0`` - Sum of :c:var:`nrf_sqspi_data_fmt_t.data_container` and :c:var:`nrf_sqspi_data_fmt_t.data_padding` must be equal to ``32``.
41
+
* Combination of :c:var:`nrf_sqspi_data_fmt_t.data_padding` equal to ``24`` and :c:var:`nrf_sqspi_data_fmt_t.data_swap_unit` equal to ``8``, when ``clkdiv`` is equal to or less than ``6`` (see :ref:`sqspi_timing`) and :c:var:`nrf_sqspi_dev_cfg_t.mspi_lines` is ``NRF_SQSPI_SPI_LINES_DUAL_X_Y_2`` or ``NRF_SQSPI_SPI_LINES_QUAD_X_Y_4``, leads to the wrong frequency on SCLK.
42
+
* The value calculated as: ``32`` - :c:var:`nrf_sqspi_data_fmt_t.data_padding` must be a multiple of :c:var:`nrf_sqspi_data_fmt_t.data_swap_unit`.
43
+
* :c:var:`nrf_sqspi_data_fmt_t.data_swap_unit` values ``0`` and ``4`` are not supported.
44
+
* :c:var:`nrf_sqspi_data_fmt_t.data_bit_order` and :c:var:`nrf_sqspi_data_fmt_t.addr_bit_order` do not support the value: ``NRF_SQSPI_DATA_FMT_BIT_ORDER_LSB_FIRST``.
Copy file name to clipboardExpand all lines: softperipheral/doc/sQSPI/nrf54L15_porting_v1_1_0.rst
+8-7Lines changed: 8 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ This structure shows the relevant files and directories in the `sdk-nrfxlib`_ re
31
31
│ │ └── nrf_qspi2.h
32
32
│ ├── nrf54l15
33
33
│ │ ├── sqspi_firmware.h
34
-
│ │ └── sqspi_firmware_v1.0.0.h
34
+
│ │ └── sqspi_firmware_v1.1.0.h
35
35
│ │ └── ...
36
36
│ ├── nrf_config_sqspi.h
37
37
│ ├── nrf_sp_qspi.h
@@ -228,11 +228,13 @@ The following code snippet shows how the application code can allocate the requi
228
228
}
229
229
}
230
230
231
+
.. _nrf54L15_porting_guide_high_speed_transfers:
232
+
231
233
High speed transfers
232
234
====================
233
235
234
236
.. warning::
235
-
High speed transfers (above 32MHz) on NRF54L15 DK are only supported in sQSPI 1.0.0.
237
+
High speed transfers (above 32 MHz) on the NRF54L15 DK are only supported starting from sQSPI v1.0.0.
236
238
237
239
A high speed transfer sQSPI application requires both extra high drive strength and access to the peripheral ``GPIOHSPADCTRL`` (GPIO High Speed Pad Control).
238
240
The following settings must be changed for ``GPIOHSPADCTRL.BIAS`` and ``GPIOHSPADCTRL.CTRL``:
@@ -412,23 +414,22 @@ The following code snippet shows how the application code can enable and disable
412
414
}
413
415
414
416
.. warning::
415
-
High speed transfers are closely tied to API parameter :c:var:`nrf_sqspi_dev_cfg_t.sample_delay_cyc`, which is constrained by the following conditions:
416
-
**TODO**
417
+
High speed transfers are closely tied to API the parameter :c:var:`nrf_sqspi_dev_cfg_t.sample_delay_cyc`, which needs to be set to ``0`` (see :ref:`sqspi_limitations`).
417
418
418
419
Memory retention configuration
419
420
******************************
420
421
421
-
The sQSPI soft peripheral requires RAM retention in order to go into the lowest power consumption mode, which can be called through the :c:func:`nrfx_qspi2_deactivate` API.
422
+
The sQSPI soft peripheral requires RAM retention in order to go into the lowest power consumption mode, which can be called through the :c:func:`nrf_sqspi_deactivate` function.
422
423
423
424
Assuming there is an access to the peripheral `MEMCONF`, the following code snippet illustrates how to enable FLPR RAM retention, followed by deactivation and reactivation, and finally how to disable RAM retention:
0 commit comments