This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 4084c749c8 Documentation: add initial documentation page for SAMv7 MCU
4084c749c8 is described below
commit 4084c749c888703ef734279b923dab5884e33542
Author: Michal Lenc <[email protected]>
AuthorDate: Mon Mar 6 16:16:35 2023 +0100
Documentation: add initial documentation page for SAMv7 MCU
Initial documentation page for SAMv7 MCU is added. There are still
board pages to be added in the future.
Signed-off-by: Michal Lenc <[email protected]>
---
Documentation/platforms/arm/samv7/index.rst | 312 ++++++++++++++++++++++++++++
1 file changed, 312 insertions(+)
diff --git a/Documentation/platforms/arm/samv7/index.rst
b/Documentation/platforms/arm/samv7/index.rst
new file mode 100644
index 0000000000..1a33b4cbfc
--- /dev/null
+++ b/Documentation/platforms/arm/samv7/index.rst
@@ -0,0 +1,312 @@
+======
+SAM V7
+======
+
+This page contains information regarding MCUs series SAM E70, SAM S70, SAM V70
and SAMV71 made
+by Microchip. The series is based around and ARM Cortex-M7 core running up to
300 MHz.
+
+Microchip distinguishes those MCUs into three series SAM E, SAM S SAM V but
NuttX source code uses the
+same files and functions for all of those series and therefore they can be
merged into one category and
+named as SAM V7.
+
+Supported MCUs
+=============
+
+The following list includes MCUs from SAM x7 series and indicates whether they
are supported in NuttX
+
+======= ======= ============== =================
+MCU Support Core Frequency
+======= ======= ============== =================
+SAM E70 Yes Cortex-M7 300 MHz
+SAM S70 No Cortex-M7 300 MHz
+SAM V70 No Cortex-M7 300 MHz
+SAM V71 Yes Cortex-M7 300 MHz
+======= ======= ============== =================
+
+Data and Instruction Cache
+==========================
+
+MCUs in this series have separated caches for instructions and data, both 16
kB. Data cache is
+initially set as write-back but sometimes the configuration automatically
switch it to write-through
+mode. While write-back gives better performance, the reason of the switch are
the issues in some
+drivers that can arise because this mode is not correctly supported yet. This
happens for example
+when selecting ``CONFIG_SAMV7_EMAC`` (Ethernet MAC driver).
+
+Data chace can also be switched to write-through mode manually by setting
ARMV7M_DCACHE_WRITETHROUGH.
+
+Tickless OS
+===========
+
+With Tickless OS, the periodic, timer interrupt is eliminated and replaced
with a one-shot,
+interval timer, that becomes event driven instead of polled. This allows to
run the MCU with
+higher resolution without using more of the CPU bandwidth processing useless
interrupts.
+
+Current implementation only supports version with two timers: a one-shot that
provides the
+timed events and a free running timer that provides the current time.
Therefore two channels
+has to be used for tickless mode. ``CONFIG_USEC_PER_TICK`` option determines
the resolution
+of time reported by :c:func:`clock_systime_ticks()` and the resolution of
times that can be set
+for certain delays including watchdog timers and delayed work.
+
+The version (selected by ``CONFIG_SCHED_TICKLESS_ALARM``) with single free
running timer that provides
+current time and a capture/compare channel for timed events is not currently
supported. This would
+require just one channel, which can be useful in some MCUs that does not have
many channels.
+
+Peripheral Support
+==================
+
+The following list indicates peripherals supported in NuttX:
+
+========== =======
+Peripheral Support
+========== =======
+ACC No
+AES No
+AFEC Yes
+DACC Yes
+EEFC Yes
+GMAC Yes
+HSMCI Yes
+I2SC No
+ICM No
+ISI No
+MCAN Yes
+MLB No
+PMC No
+PWM Yes
+QSPI Yes
+SMC No
+SPI Yes
+SSC Yes
+TWIHS Yes
+TC Yes
+USART Yes
+WDT Yes
+XDMAC Yes
+========== =======
+
+Analog Comparator Controller (ACC)
+----------------------------------
+
+Analog Comparator Controller generates an interrupt based on user settngs. It
can also
+generate a compare event which can be used by the PWM driver.
+
+This peripheral is currently not supported.
+
+Advanced Encryption Standard (AES)
+----------------------------------
+
+The standard complies with the American FIPS Publication 197 specification. It
is not
+currently supported.
+
+Analog Front-End Controller (AFEC)
+----------------------------------
+
+This controller combines a 12 bit ADC, DAC and two 6 to 1 analog multiplexers.
The current
+support in NuttX implements the controller as an analog/digital converter that
can be trigger
+either via software trigger from the application or by timer/counter that runs
on a defined
+frequency. Triggering by PWM is also supported by the MCUs but not currently
implemented
+in NuttX. The lower-half of this driver is initialize by calling
:c:func:`sam_afec_initialize`
+
+Software trigger can be selected by ``CONFIG_SAMV7_AFECn_SWTRIG``,
timer/counter trigger by
+``CONFIG_SAMV7_AFECn_TIOATRIG``. It is also necessary to select corresponding
timer/counter
+(0 for AFEC0 and 1 for AFEC1) and enable corresponding channels. Triggering
from PWM driver
+is also supported and can be configured by ``CONFIG_SAMV7_AFECn_PWMTRIG``. In
this case
+subsequental configuration of PWM driver is required (see below in PWM
section).
+
+The 12 bit resolution mode can be extended up to a 16 bit resolution by
digital averaging.
+The averaging can be set by ``CONFIG_SAMV7_AFECn_RES``.
+
+The controller supports data transfer with DMA support which can be enabled by
``CONFIG_SAMV7_AFEC_DMA``.
+Option ``CONFIG_SAMV7_AFEC_DMASAMPLES`` then sets the number of samples to be
transfered.
+
+Digital/Analog Converter Controller (DACC)
+------------------------------------------
+
+Digital/Analog Converter supports 12 bit resolution and can operate in
free-running mode, maximum
+speed mode, trigger mode from timer/counter and interpolation mode. Trigger
mode is set by
+enabling ``CONFIG_SAMV7_DAC_TRIGGER`` option. The lower-half of this driver
is initialize by
+calling :c:func:`sam_dac_initialize`.
+
+DMA data transfer is supported by the controller but currently not implemented
in NuttX.
+
+Ethernet MAC (GMAC)
+-------------------
+
+This module implements a 10/100 Mbps Ethernet MAC which is compitible with the
IEEE 802.3 standard.
+Number of RR and TX buffers can be configured by
``CONFIG_SAMV7_EMAC0_NRXBUFFERS`` and
+``CONFIG_SAMV7_EMAC0_NTXBUFFERS`` respectively. Option
``CONFIG_SAMV7_EMAC0_PHYINIT`` may be selected
+when board specific initialization (GPIOs configuration, PHY reset etc.) is
required prior to
+module usage.
+
+High Speed Multimedia Card Interface (HSMCI)
+--------------------------------------------
+
+This module supports a hight speed connection to MultiMedia Cards (MMC).
Support for
+the SD slots can be enabled with the following settings:
+
+- System Type -> SAMV7 Peripheral Selection
+ - ``CONFIG_SAMV7_HSMCI0=y`` : To enable HSMCI0 support
+ - ``CONFIG_SAMV7_XDMAC=y`` : XDMAC is needed by HSMCI0/1
+
+- System Type
+ - ``CONFIG_SAMV7_GPIO_IRQ=y`` : PIO interrupts needed
+ - ``CONFIG_SAMV7_GPIOn_IRQ=y`` : Interrupt to corresponding
pin gate
+
+- Device Drivers -> MMC/SD Driver Support
+ - ``CONFIG_MMCSD=y`` : Enable MMC/SD support
+ - ``CONFIG_MMSCD_NSLOTS=1`` : One slot per driver instance
+ - ``CONFIG_MMCSD_MULTIBLOCK_DISABLE=y`` : (REVISIT)
+ - ``CONFIG_MMCSD_HAVE_CARDDETECT=y`` : Supports card-detect PIOs
+ - ``CONFIG_MMCSD_MMCSUPPORT=n`` : Interferes with some SD cards
+ - ``CONFIG_MMCSD_SPI=n`` : No SPI-based MMC/SD support
+ - ``CONFIG_MMCSD_SDIO=y`` : SDIO-based MMC/SD support
+ - ``CONFIG_SDIO_DMA=y`` : Use SDIO DMA
+ - ``CONFIG_SDIO_BLOCKSETUP=y`` : Needs to know block sizes
+
+- RTOS Features -> Work Queue Support
+ - ``CONFIG_SCHED_WORKQUEUE=y`` : Driver needs work queue
support
+
+- Application Configuration -> NSH Library
+ - ``CONFIG_NSH_ARCHINIT=y`` : NSH board-initialization, OR
+ - ``CONFIG_BOARD_LATE_INITIALIZE=y``
+
+The lower-half of this driver is initialized by calling
:c:func:`sdio_initialize`.
+
+Inter-IC Sound Interface (I2CS)
+-------------------------------
+
+This controller provides a 5 wire digital audio link to external audio
devices. The link
+is bidirectional and synchronous. The interface is compliant vit I2C
specification.
+
+This peripheral is currently not supported.
+
+Integrity Check Monitor (ICM)
+-----------------------------
+
+Integrity Check Monitor is a DMA controller that performs hash calculation
over memory
+regions.
+
+This peripheral is currently not supported.
+
+Image Sensor Interface (ISI)
+----------------------------
+
+This controller connects a CMOS type sensor to the MCU and provides image
captures is
+selected formatrs.
+
+This peripheral is currently not supported.
+
+Controller Area Network (MCAN)
+------------------------------
+
+Provides support for communication according to ISO 11898-1:2015 and to Bosch
CAN-FD
+specification. It is possible to select CAN FD communication in NuttX
configuration.
+
+The lower-half of the peripheral is initialized by function
:c:func:`sam_mcan_initialize`
+
+Media Local Bus (MLB)
+---------------------
+
+This peripheral maps all the MOST Network data types into a single interface.
+
+This peripheral is currently not supported.
+
+Power Management Controller (PMC)
+---------------------------------
+
+Peripheral used to optimize power consumption of MCU.
+
+Not yet supported.
+
+Pulse Width Modulation Controller (PWM)
+---------------------------------------
+
+Pulse Width Modulation Controller provides a PWM output on 4 independent
channels. Each channel
+can control two complementary outputs. PWM can also be used to generate a
signal that triggers
+ADC conversion. The trigger is generated from configurable comparison units.
These units can be
+set by config option ``CONFIG_SAMV7_PWMn_TRIGx`` where n is number of PWM
instance and x is the number
+of comparison unit.
+
+The peripheral has integrated fault protection that drives the output to zero
when activated. The
+protection activation can be trigger from various peripherals (ADC, PMC) or
from GPIO inputs.
+
+Furthemore PWM can impelement a dead time delays before the activation of
complementary outputs.
+These delays are turn on by ``CONFIG_PWM_DEADTIME`` while dead time values are
provided from application
+level the same way as duty cycle is set.
+
+The lower-half is initalized by function :c:func:`sam_pwminitialize`.
+
+Quad Serial Peripheral Interface (QSPI)
+---------------------------------------
+
+This peripheral provides communication with external devices in host mode
through synchronous serial
+data link. It is possible to use QSPI peripheral in SPI mode if this is
supported by MCU (config option
+``CONFIG_SAMV7_QSPI_SPI_MODE``).
+
+The lower-half is initalized by function :c:func:`sam_qspi_initialize` in case
of QSPI mode and by
+:c:func:`sam_qspi_spi_initialize` in case of SPI mode.
+
+Static Memory Controller (SMC)
+------------------------------
+
+This peripheral is a part of External Bus Interface (EBI) which is designed to
ensure the successful
+data transfer between several external devices and the microcontroller.
+
+This controller is currently not suported.
+
+Serial Peripheral Interface (SPI)
+---------------------------------
+
+This is a synchronous serial data link that provides communication with
external devices in host
+or client mode.
+
+The pripheral is initialized by :c:func:`sam_spibus_initialize` function.
+
+Synchronous Serial Controller (SSC)
+-----------------------------------
+
+This controller provides a synchronous communication link with external
devices.
+
+The controller is initialized by :c:func:`sam_ssc_initialize` function.
+
+Two Wire Interface (TWIHS)
+--------------------------
+
+It interconnects components on a two-wire bus. The bus is made up of one clock
line
+and one data line.
+
+Timer Counter (TC)
+------------------
+
+The peripheral implements four timer counter modules, each supporting three
independent channels.
+
+Universal Synchronous Asynchronous Receiver Transceiver (USART)
+---------------------------------------------------------------
+
+The MCU supports both UART and USART controllers. USART can be also used in
RS-485 mode (enabled
+by ``CONFIG_SAMV7_USARTx_RS485MODE`` option) or can be used with RX DMA
support. For this purpose it
+is required to configure idle bus timeout value in
``CONFIG_SAMV7_SERIAL_DMA_TIMEOUT``. This option
+ensures data are read from the DMA buffer even if it is not full yet. TX DMA
support is not implemented
+as well as entire DMA suport for UART peripheral.
+
+Watchdog Timer (WDT)
+---------------------
+
+The timer is used to prevent system lock-up if the software is trapped in a
deadlock.
+
+DMA Controller (XDMAC)
+----------------------
+
+This peripheral provides a central direct memory access controller which can
perform
+peripheral to memory or memory to memory transfers.
+
+Supported Boards
+================
+
+For board documentation please refer to ``board/arm/samv7`` section to
separate README files.
+
+.. toctree::
+ :glob:
+ :maxdepth: 1
+
+ boards/*/*