+2188
-2088
lines changedFilter options
+2188
-2088
lines changed Original file line number Diff line number Diff line change
@@ -16,9 +16,13 @@ This is a release that focuses on improving existing soft peripherals.
16
16
See the following list of changes:
17
17
18
18
19
+
* Added:
20
+
21
+
* Position Independent Code (PIC) for all Soft Peripheral binaries.
22
+
19
23
* Bug fixes:
20
24
21
-
* Fixed higher frequency transfers for Soft Peripheral sQSPI for the nRF54L15 and nRF54H20 SoCs.
25
+
* Fixed higher frequency transfers for Soft Peripheral sQSPI for the nRF54L15 SoC.
22
26
For details, see the :ref:`sqspi_changelog` page.
23
27
24
28
nRF Connect SDK v3.0.0
Original file line number Diff line number Diff line change
@@ -46,5 +46,7 @@ The following table shows which soft peripherals and their versions are supporte
46
46
- - nRF54L15 SoC:
47
47
- v0.1.0 with NCS v3.0.0
48
48
- v1.0.0 with NCS v3.1.0
49
+
- v1.1.0 with NCS v3.1.0
49
50
- nRF54H20 SoC:
50
51
- v0.1.0 with NCS v3.0.0
52
+
- v1.1.0 with NCS v3.1.0
Original file line number Diff line number Diff line change
@@ -9,6 +9,16 @@ sQSPI changelog
9
9
10
10
All the notable changes to sQSPI are documented on this page.
11
11
12
+
v1.1.0
13
+
******
14
+
15
+
See the list of changes for the current release.
16
+
17
+
* Added:
18
+
19
+
* Fixes on API communication layer for nRF54L15 devices.
20
+
* Fixes for a booting bug and on API communication layer for nRF54H20 devices.
21
+
12
22
v1.0.0
13
23
******
14
24
Original file line number Diff line number Diff line change
@@ -61,9 +61,10 @@ To better understand the capabilities and limitations of sQSPI, see its comparis
61
61
:caption: Subpages:
62
62
63
63
features.rst
64
-
nrf54L15_porting_v1_0_0.rst
65
-
nrf54H20_porting_v1_0_0.rst
64
+
nrf54L15_porting_v1_1_0.rst
65
+
nrf54H20_porting_v1_1_0.rst
66
+
display.rst
66
67
timing.rst
67
68
CHANGELOG.rst
68
69
limitations.rst
69
-
api_reference_v1_0_0.rst
70
+
api_reference.rst
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
1
+
.. _sqspi_display:
2
+
3
+
sQSPI and display usage
4
+
#######################
5
+
6
+
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`).
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:
23
-
24
-
.. math::
25
-
nrf\_sqspi\_dev\_cfg\_t.sample\_delay\_cyc <= \frac{FLPR_{base\_freq}}{2*nrf\_sqspi\_dev\_cfg\_t.sck\_freq\_khz} - 1
26
-
23
+
* 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``.
Original file line number Diff line number Diff line change
@@ -31,13 +31,13 @@ This structure shows the relevant files and directories in the `sdk-nrfxlib`_ re
31
31
│ │ └── nrf_qspi2.h
32
32
│ ├── nrf54h20
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
38
38
│ ├── nrf_sqspi.h
39
39
└── src
40
-
└── nrfx_qspi2.c
40
+
└── nrf_sqspi.c
41
41
42
42
.. note::
43
43
The main interface for sQSPI is the :file:`nrf_sqspi.h` file.
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:
424
425
425
426
.. code-block:: c
426
427
427
428
//Deactivate sequence
428
429
nrf_memconf_ramblock_ret_enable_set(NRF_MEMCONF, 1, MEMCONF_POWER_RET_MEM0_Pos, true);
429
-
nrfx_qspi2_deactivate(&m_qspi);
430
+
nrf_sqspi_deactivate(&m_qspi);
430
431
//activate sequence
431
-
nrfx_qspi2_activate(&m_qspi);
432
+
nrf_qspi_activate(&m_qspi);
432
433
nrf_memconf_ramblock_ret_enable_set(NRF_MEMCONF, 1, MEMCONF_POWER_RET_MEM0_Pos, false);
433
434
434
435
.. _nrf54L15_porting_guide_ram_configuration:
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
1
1
.. _sqspi_timing:
2
2
3
+
sQSPI and FLPR counters
4
+
#######################
5
+
6
+
The sQSPI API translates the parameter :c:var:`nrf_sqspi_dev_cfg_t.sck_freq_khz` into a value that can be used by FLPR's internal counters.
7
+
The translation has the following constraints (assuming the SoC is running at highest base clock frequency):
8
+
9
+
.. tabs::
10
+
11
+
.. tab:: **nRF54L15**
12
+
.. math::
13
+
clkdiv=\frac{128000000}{1000 * nrf\_sqspi\_dev\_cfg\_t.sck\_freq\_khz}
14
+
15
+
.. tab:: **nRF54H20**
16
+
.. math::
17
+
clkdiv=\frac{320000000}{1000 * nrf\_sqspi\_dev\_cfg\_t.sck\_freq\_khz}
18
+
19
+
.. math::
20
+
FLPR\_counter=
21
+
\begin{cases}
22
+
\frac{clkdiv}{2}-1,& \text{if } clkdiv > 2\\
23
+
0, & \text{otherwise}
24
+
\end{cases}
25
+
3
26
Timing parameters
4
27
#################
5
28
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4