Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,4 @@ doc/* @b-gent
/lc3/ @koffes @alexsven
/nrf_fuel_gauge/ @nordic-auko
/nrf_wifi/ @udaynordic @rajb9 @srkanordic
/softperipheral/ @lopeztel
/softperipheral/ @lopeztel @nordavid531 @ostenholkestad @bikleppe
15 changes: 15 additions & 0 deletions softperipheral/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,21 @@ Changelog

All the notable changes to this project are documented on this page.

nRF Connect SDK v3.2.0
**********************

This version contains an initial release of the Soft Peripheral sEMMC.
See the following list of changes:

* Added:

* The first implementation of Soft Peripheral sEMMC for nRF54H Series and nRF54L Series SoCs.
For details, see the :ref:`semmc_changelog` page.

* New virtual register for sQSPI.
It updates sQSPI to version 1.2.0 and also supports the nRF54LM20 device.
For details, see the :ref:`sqspi_changelog` page.

nRF Connect SDK v3.1.0
**********************

Expand Down
1 change: 1 addition & 0 deletions softperipheral/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ It covers setup, integration, and operational guidelines for using each soft per

doc/introduction.rst
doc/sQSPI/README.rst
doc/sEMMC/README.rst
CHANGELOG.rst
33 changes: 24 additions & 9 deletions softperipheral/doc/introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ It also allows to include additional instances of a peripheral in case the platf

In most cases, the features and performance of a soft peripheral are equivalent to those of a hardware peripheral.
However, there may be some limitations.
For more information, see the :ref:`sqspi_limitations` page.
For more information, see the :ref:`sqspi_limitations` and :ref:`semmc_limitations` pages.

The operation of a soft peripheral is abstracted, and its control is facilitated through a user interface managed through the nrfx driver API.
This user interface is a set of functions that the application can call to interact with the peripheral.
Expand All @@ -26,7 +26,9 @@ The following image shows the software stack of an application:
.. note::

Note that in both the documentation and source files, soft peripherals are referred to by prefixing the letter *s* before the name of the peripheral.
For example, ``sQSPI``.
For example, ``sQSPI`` or ``sEMMC``.

.. _intro_soft_peripherals_platform_support:

Platform support
****************
Expand All @@ -41,12 +43,25 @@ The following table shows which soft peripherals and their versions are supporte
- Hardware platform
- Version
* - sQSPI
- - nRF54L15 SoC
- nRF54H20 SoC
- - nRF54L Series SoCs
- nRF54H Series SoCs
- - nRF54L15 SoC:
- v0.1.0 with the NCS v3.0.0
- v1.0.0 with the NCS v3.1.0
- v1.1.0 with the NCS v3.1.0
- v1.2.0 with the NCS v3.2.0
- nRF54LM20 SoC:
- v1.2.0 with the NCS v3.2.0
- nRF54H20 SoC:
- v0.1.0 with the NCS v3.0.0
- v1.1.0 with the NCS v3.1.0
- v1.2.0 with the NCS v3.2.0
* - sEMMC
- - nRF54L Series SoCs
- nRF54H Series SoCs
- - nRF54L15 SoC:
- v0.1.0 with NCS v3.0.0
- v1.0.0 with NCS v3.1.0
- v1.1.0 with NCS v3.1.0
- v0.1.0 with the NCS v3.2.0
- nRF54LM20 SoC:
- v0.1.0 with the NCS v3.2.0
- nRF54H20 SoC:
- v0.1.0 with NCS v3.0.0
- v1.1.0 with NCS v3.1.0
- v0.1.0 with the NCS v3.2.0
28 changes: 28 additions & 0 deletions softperipheral/doc/sEMMC/CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
.. _semmc_changelog:

sEMMC changelog
###############

.. contents::
:local:
:depth: 2

All the notable changes to sEMMC are documented on this page.
Refer to :ref:`intro_soft_peripherals_platform_support` for supported Nordic devices for each version.

v0.1.0
******

This is an initial release.

* Added the following support for the nRF54H Series and nRF54L Series devices:

* 1-lane and 4-lane data transmission
* Class 0 commands - Basic
* Class 2 commands - Block read
* Class 4 commands - Block write
* Class 5 commands - Erase
* Class 6 commands - Write protection
* Class 7 commands - Lock device
* Class 11 commands - Command queuing
* All response types
27 changes: 27 additions & 0 deletions softperipheral/doc/sEMMC/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
.. _sEMMC:

sEMMC
#####

.. contents::
:local:
:depth: 2

This documentation outlines the sEMMC Soft Peripheral.
It covers setup, integration, and operational guidelines for using sEMMC through the nrfx driver API, alongside detailed descriptions of limitations and performance considerations.

.. note::
The current version of sEMMC is based on JEDEC Standard No. 84-B51A.

.. toctree::
:maxdepth: 1
:glob:
:caption: Subpages:

features.rst
semmc_nrf54L_series_porting_v0_1_0.rst
semmc_nrf54H_series_porting_v0_1_0.rst
timing.rst
CHANGELOG.rst
limitations.rst
api_reference.rst
4 changes: 4 additions & 0 deletions softperipheral/doc/sEMMC/api_reference.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
API Reference
#############

.. doxygengroup:: nrf_semmc
41 changes: 41 additions & 0 deletions softperipheral/doc/sEMMC/features.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
.. _semmc_features:

sEMMC features
##############

.. contents::
:local:
:depth: 2

This page provides an overview of the functionalities and configurations available for the Soft Peripheral sEMMC for the current state of development.
See the following sections for more details.

.. _semmc_features_command_support:

Command support
***************

sEMMC supports the following JEDEC Standard No. 84-B51A command groups:

* Class 0 - Basic
* Class 2 - Block read
* Class 4 - Block write
* Class 5 - Erase
* Class 6 - Write protection
* Class 7 - Lock device
* Class 11 - Command queuing

.. note::
Refer to the :file:`nrf_semmc.h` header for a list of supported commands.

.. _semmc_features_hs200_mode:

HS200 mode support
******************

sEMMC supports the HS200 mode for high-speed transfers.
This allows sEMMC to operate at frequencies up to 80MHz on the nRF54H20 device.

.. note::
You need to perform a tuning cycle using CMD21 to find the optimal sampling point for reads.
After completing the tuning cycle, set the sampling value in the :c:var:`nrf_semmc_config_t.read_delay` variable.
27 changes: 27 additions & 0 deletions softperipheral/doc/sEMMC/limitations.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
.. _semmc_limitations:

sEMMC limitations
#################

When working with sEMMC, you should be aware of the following limitations.

.. contents::
:local:
:depth: 2

v0.1.0
******

Refer to the following detailed descriptions of current limitations:

* sEMMC does not support octal-lane data transmissions.
* sEMMC does not support dual data rate, and as such no support for HS400.
* :c:var:`nrf_semmc_config_t.read_delay` can not be equal to or higher than the :c:var:`clkdiv` parameter in :ref:`semmc_timing`.
* :c:var:`clkdiv` parameter in :ref:`semmc_timing` must be even.
* Maximum frequency is limited to 80MHz on nRF54H Series (assuming a maximum device frequency of 320MHz, in HS200 mode) and 32MHz on nRF54L Series devices.
* A tuning cycle using CMD21 might be needed to set the proper value of :c:var:`nrf_semmc_config_t.read_delay`.
* Data buffers and response buffers needs to be pointers with a 32-bit aligned address.
* :c:var:`nrf_emmc_data_t.block_size` needs to be minimum 4 bytes for quad-lane data transmissions.
* Setting :c:var:`nrf_semmc_config_t.process_response` to ``NRF_EMMC_RESPONSE_PROC_IGNORE`` will only apply to any transaction in the read direction.
* sEMMC is not able to process response and data at the same time. See for example :ref:`semmc_nrf54H_series_porting_guide_read_response` on how to mitigate this.
* Any prepared transfer with :c:func:`nrf_semmc_cmd_prepare` will be discarded when using :c:func:`nrf_semmc_disable`.
Loading