A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/nrfconnect/sdk-nrfxlib/commit/f1f95c4f57be2b7a060044d49d0ecede817b5eba below:

rev b6bcb2e1b351cdad4c88b2aad4cfc4d739b0dbeb · nrfconnect/sdk-nrfxlib@f1f95c4 · GitHub

File tree Expand file treeCollapse file tree 20 files changed

+2188

-2088

lines changed

Filter options

Expand file treeCollapse file tree 20 files changed

+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