blob: 44d31f92b6cfb132fcd033b59370dad508bbad16 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>NXP i.MX RT &mdash; NuttX latest documentation</title>
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx_collapse.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css" />
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/sphinx_highlight.js"></script>
<script src="../../../_static/clipboard.min.js"></script>
<script src="../../../_static/copybutton.js"></script>
<script src="../../../_static/design-tabs.js"></script>
<script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="ARCX Socket Grid" href="boards/arcx-socket-grid/index.html" />
<link rel="prev" title="IMX95LPD5EVK-19" href="../imx9/boards/imx95-evk/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../../../latest" selected="selected">latest</option>
<option value="../../../../10.0.0" >10.0.0</option>
<option value="../../../../10.0.1" >10.0.1</option>
<option value="../../../../10.1.0" >10.1.0</option>
<option value="../../../../10.2.0" >10.2.0</option>
<option value="../../../../10.3.0" >10.3.0</option>
<option value="../../../../11.0.0" >11.0.0</option>
<option value="../../../../12.0.0" >12.0.0</option>
<option value="../../../../12.1.0" >12.1.0</option>
<option value="../../../../12.2.0" >12.2.0</option>
<option value="../../../../12.2.1" >12.2.1</option>
<option value="../../../../12.3.0" >12.3.0</option>
<option value="../../../../12.4.0" >12.4.0</option>
<option value="../../../../12.5.0" >12.5.0</option>
<option value="../../../../12.5.1" >12.5.1</option>
<option value="../../../../12.6.0" >12.6.0</option>
<option value="../../../../12.7.0" >12.7.0</option>
<option value="../../../../12.8.0" >12.8.0</option>
<option value="../../../../12.9.0" >12.9.0</option>
<option value="../../../../12.10.0" >12.10.0</option>
<option value="../../../../12.11.0" >12.11.0</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Supported Platforms</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="../index.html">ARM</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../a1x/index.html">Allwinner A10</a></li>
<li class="toctree-l3"><a class="reference internal" href="../am335x/index.html">TI/Sitara AM335x</a></li>
<li class="toctree-l3"><a class="reference internal" href="../at32/index.html">Artery AT32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../bcm2708/index.html">Broadcom BCM2708 (removed)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../c5471/index.html">TI TMS320-C5471</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cxd56xx/index.html">Sony CXD56xx</a></li>
<li class="toctree-l3"><a class="reference internal" href="../dm320/index.html">TI TMS320-DM320</a></li>
<li class="toctree-l3"><a class="reference internal" href="../efm32/index.html">SiLabs EFM32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../eoss3/index.html">EOSS3</a></li>
<li class="toctree-l3"><a class="reference internal" href="../fvp-v8r-aarch32/index.html">FVP ARMv8-R Virt Chip</a></li>
<li class="toctree-l3"><a class="reference internal" href="../gd32f4/index.html">GD32F4</a></li>
<li class="toctree-l3"><a class="reference internal" href="../goldfish/goldfish_timer.html">GOLDFISH TIMER</a></li>
<li class="toctree-l3"><a class="reference internal" href="../goldfish/index.html">GOLDFISH</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imx1/index.html">NXP/Freescale i.MX1</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imx6/index.html">NXP/Freescale i.MX6</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imx9/index.html">NXP i.MX9</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">NXP i.MX RT</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#supported-mcus">Supported MCUs</a></li>
<li class="toctree-l4"><a class="reference internal" href="#data-and-instruction-cache">Data and Instruction Cache</a></li>
<li class="toctree-l4"><a class="reference internal" href="#tickless-os">Tickless OS</a></li>
<li class="toctree-l4"><a class="reference internal" href="#peripheral-support">Peripheral Support</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#acmp">ACMP</a></li>
<li class="toctree-l5"><a class="reference internal" href="#adc">ADC</a></li>
<li class="toctree-l5"><a class="reference internal" href="#can">CAN</a></li>
<li class="toctree-l5"><a class="reference internal" href="#csi">CSI</a></li>
<li class="toctree-l5"><a class="reference internal" href="#dac">DAC</a></li>
<li class="toctree-l5"><a class="reference internal" href="#elcdif">eLCDIF</a></li>
<li class="toctree-l5"><a class="reference internal" href="#enc">ENC</a></li>
<li class="toctree-l5"><a class="reference internal" href="#enet">ENET</a></li>
<li class="toctree-l5"><a class="reference internal" href="#flexio">FlexIO</a></li>
<li class="toctree-l5"><a class="reference internal" href="#gpio">GPIO</a></li>
<li class="toctree-l5"><a class="reference internal" href="#i2c">I2C</a></li>
<li class="toctree-l5"><a class="reference internal" href="#pwm">PWM</a></li>
<li class="toctree-l5"><a class="reference internal" href="#sai">SAI</a></li>
<li class="toctree-l5"><a class="reference internal" href="#spdif">SPDIF</a></li>
<li class="toctree-l5"><a class="reference internal" href="#spi">SPI</a></li>
<li class="toctree-l5"><a class="reference internal" href="#uart">UART</a></li>
<li class="toctree-l5"><a class="reference internal" href="#usb">USB</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#supported-boards">Supported Boards</a><ul>
<li class="toctree-l5"><a class="reference internal" href="boards/arcx-socket-grid/index.html">ARCX Socket Grid</a></li>
<li class="toctree-l5"><a class="reference internal" href="boards/imxrt1020-evk/index.html">i.MX RT1020 EVK</a></li>
<li class="toctree-l5"><a class="reference internal" href="boards/imxrt1050-evk/index.html">i.MX RT1050 EVK</a></li>
<li class="toctree-l5"><a class="reference internal" href="boards/imxrt1060-evk/index.html">i.MX RT1060 EVK</a></li>
<li class="toctree-l5"><a class="reference internal" href="boards/imxrt1064-evk/index.html">i.MX RT1064 EVK</a></li>
<li class="toctree-l5"><a class="reference internal" href="boards/imxrt1170-evk/index.html">i.MX RT1170 EVK</a></li>
<li class="toctree-l5"><a class="reference internal" href="boards/teensy-4.x/index.html">Teensy-4.x</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../kinetis/index.html">NXP/FreeScale Kinetis</a></li>
<li class="toctree-l3"><a class="reference internal" href="../kl/index.html">NXP/FreeScale KLxx</a></li>
<li class="toctree-l3"><a class="reference internal" href="../lc823450/index.html">ON Semiconductor LC823450</a></li>
<li class="toctree-l3"><a class="reference internal" href="../lpc17xx/index.html">NXP LPC17xx</a></li>
<li class="toctree-l3"><a class="reference internal" href="../lpc214x/index.html">NXP LPC214x</a></li>
<li class="toctree-l3"><a class="reference internal" href="../lpc2378/index.html">NXP LPC2378</a></li>
<li class="toctree-l3"><a class="reference internal" href="../lpc31xx/index.html">NXP LPC31xx</a></li>
<li class="toctree-l3"><a class="reference internal" href="../lpc40xx/index.html">NXP LPC40xx</a></li>
<li class="toctree-l3"><a class="reference internal" href="../lpc43xx/index.html">NXP LPC43xx</a></li>
<li class="toctree-l3"><a class="reference internal" href="../lpc54xx/index.html">NXP LPC54xx</a></li>
<li class="toctree-l3"><a class="reference internal" href="../max326xx/index.html">Maxim Integrated MAX32660</a></li>
<li class="toctree-l3"><a class="reference internal" href="../moxart/index.html">Moxa NP51x0</a></li>
<li class="toctree-l3"><a class="reference internal" href="../mps/index.html">MPS</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nrf52/ieee802154.html">Nordic nRF52 IEEE 802.15.4</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nrf52/index.html">Nordic nRF52</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nrf53/index.html">Nordic nRF53</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nrf91/index.html">Nordic nRF91</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nuc1xx/index.html">nuvoTon NUC120</a></li>
<li class="toctree-l3"><a class="reference internal" href="../phy62xx/index.html">PHY+ PHY62</a></li>
<li class="toctree-l3"><a class="reference internal" href="../qemu/index.html">QEMU</a></li>
<li class="toctree-l3"><a class="reference internal" href="../ra4m1/index.html">Renesas RA4M1</a></li>
<li class="toctree-l3"><a class="reference internal" href="../rp2040/index.html">Raspberry Pi rp2040</a></li>
<li class="toctree-l3"><a class="reference internal" href="../rp23xx/index.html">Raspberry Pi rp2350</a></li>
<li class="toctree-l3"><a class="reference internal" href="../s32k1xx/index.html">NXP S32K1XX</a></li>
<li class="toctree-l3"><a class="reference internal" href="../s32k3xx/index.html">NXP S32K3XX</a></li>
<li class="toctree-l3"><a class="reference internal" href="../sam34/index.html">Microchip SAM34</a></li>
<li class="toctree-l3"><a class="reference internal" href="../sama5/index.html">Microchip SAMA5</a></li>
<li class="toctree-l3"><a class="reference internal" href="../samd2l2/index.html">Microchip SAMD2x</a></li>
<li class="toctree-l3"><a class="reference internal" href="../samd5e5/index.html">Microchip samd5e5</a></li>
<li class="toctree-l3"><a class="reference internal" href="../samv7/index.html">Microchip SAM V7</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32c0/index.html">ST STM32C0</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32f0/index.html">ST STM32F0</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32f1/index.html">ST STM32F1</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32f2/index.html">ST STM32F2</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32f3/index.html">ST STM32F3</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32f4/index.html">ST STM32F4</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32f7/index.html">ST STM32F7</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32g0/index.html">ST STM32G0</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32g4/index.html">ST STM32G4</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32h5/index.html">ST STM32H5</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32h7/index.html">ST STM32H7</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32l0/index.html">ST STM32L0</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32l1/index.html">ST STM32L1</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32l4/index.html">ST STM32L4</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32l5/index.html">ST STM32L5</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32u5/index.html">ST STM32U5</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32wb/index.html">ST STM32WB</a></li>
<li class="toctree-l3"><a class="reference internal" href="../stm32wl5/index.html">ST STM32WL5</a></li>
<li class="toctree-l3"><a class="reference internal" href="../str71x/index.html">ST STR71</a></li>
<li class="toctree-l3"><a class="reference internal" href="../tiva/index.html">TI/Stellaris Tiva</a></li>
<li class="toctree-l3"><a class="reference internal" href="../tms570/index.html">TI/Hercules TMS570xxx</a></li>
<li class="toctree-l3"><a class="reference internal" href="../xmc4/index.html">Infineon XMC4000</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../arm64/index.html">ARM64</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../avr/index.html">Microchip AVR</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../ceva/index.html">CEVA</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../hc/index.html">HC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../mips/index.html">MIPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../misco/index.html">Misoc</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../or1k/index.html">OpenRISC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../renesas/index.html">Renesas</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../risc-v/index.html">RISC-V</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sim/index.html">Simulators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sim/network_linux.html">Network Support on Linux</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sim/network_vpnkit.html">Network support with VPNKit</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sparc/index.html">SPARC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../tricore/index.html">TriCore</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../x86/index.html">Intel 80x86</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../x86_64/index.html">Intel 80x86_64</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../xtensa/index.html">Xtensa</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../z16/index.html">Z16</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../z80/index.html">Z80</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../applications/index.html">Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../implementation/index.html">Implementation Details</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../debugging/index.html">Debugging</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../standards/index.html">Standards</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../logos/index.html">NuttX Logos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../_tags/tagsindex.html">Tags</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../../index.html">Supported Platforms</a></li>
<li class="breadcrumb-item"><a href="../index.html">ARM</a></li>
<li class="breadcrumb-item active">NXP i.MX RT</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/apache/nuttx/blob/master/Documentation/platforms/arm/imxrt/index.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="nxp-i-mx-rt">
<h1>NXP i.MX RT<a class="headerlink" href="#nxp-i-mx-rt" title="Permalink to this heading"></a></h1>
<p>The i.MX RT series of chips from NXP Semiconductors is based around an ARM Cortex-M7 core running
at 500 MHz, 600 MHz or 1 GHz based on particular MCUs</p>
<section id="supported-mcus">
<h2>Supported MCUs<a class="headerlink" href="#supported-mcus" title="Permalink to this heading"></a></h2>
<p>The following list includes MCUs from i.MX RT series and indicates whether they are supported in NuttX</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>MCU</p></th>
<th class="head"><p>Support</p></th>
<th class="head"><p>Core</p></th>
<th class="head"><p>Frequency</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>RT500</p></td>
<td><p>No</p></td>
<td><p>Cortex-M33</p></td>
<td><p>200 MHz</p></td>
</tr>
<tr class="row-odd"><td><p>RT600</p></td>
<td><p>No</p></td>
<td><p>Cortex-M33</p></td>
<td><p>300 MHz</p></td>
</tr>
<tr class="row-even"><td><p>RT1010</p></td>
<td><p>No</p></td>
<td><p>Cortex-M7</p></td>
<td><p>500 MHz</p></td>
</tr>
<tr class="row-odd"><td><p>RT1015</p></td>
<td><p>No</p></td>
<td><p>Cortex-M7</p></td>
<td><p>500 MHz</p></td>
</tr>
<tr class="row-even"><td><p>RT1020</p></td>
<td><p>Yes</p></td>
<td><p>Cortex-M7</p></td>
<td><p>500 MHz</p></td>
</tr>
<tr class="row-odd"><td><p>RT1024</p></td>
<td><p>No</p></td>
<td><p>Cortex-M7</p></td>
<td><p>500 MHz</p></td>
</tr>
<tr class="row-even"><td><p>RT1050</p></td>
<td><p>Yes</p></td>
<td><p>Cortex-M7</p></td>
<td><p>600 MHz</p></td>
</tr>
<tr class="row-odd"><td><p>RT1060</p></td>
<td><p>Yes</p></td>
<td><p>Cortex-M7</p></td>
<td><p>600 MHz</p></td>
</tr>
<tr class="row-even"><td><p>RT1064</p></td>
<td><p>Yes</p></td>
<td><p>Cortex-M7</p></td>
<td><p>600 MHz</p></td>
</tr>
<tr class="row-odd"><td><p>RT1170</p></td>
<td><p>No</p></td>
<td><p>Cortex-M7 + M4</p></td>
<td><p>1 GHz + 400 MHz</p></td>
</tr>
</tbody>
</table>
</section>
<section id="data-and-instruction-cache">
<h2>Data and Instruction Cache<a class="headerlink" href="#data-and-instruction-cache" title="Permalink to this heading"></a></h2>
<p>MCUs i.MX RT1010 and higher have separated caches for instructions and data. Data cache is initially
set as write-through but can be changed to write-back via Kconfig. While write-back gives better
performance than write-through, it is not supported for all peripherals in NuttX yet. Write-back data
cache can not be selected while running Ethernet or serial port over USB.</p>
</section>
<section id="tickless-os">
<h2>Tickless OS<a class="headerlink" href="#tickless-os" title="Permalink to this heading"></a></h2>
<p>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.</p>
<p>Only tickless via an alarm is currently supported for i.MX RT MCU, which can be selected by
CONFIG_SCHED_TICKLESS_ALARM option. CONFIG_USEC_PER_TICK option determines the resolution
of time reported by <code class="xref c c-func docutils literal notranslate"><span class="pre">clock_systime_ticks()</span></code> and the resolution of times that can be set
for certain delays including watchdog timers and delayed work. It is important that value set in
CONFIG_USEC_PER_TICK represents the frequency of GPT timer that runs the tickless mode. Clock
source of the timer is 16.6 MHz, which is then divided by the prescaler value from 1 to 4096.
Possible values for CONFIG_USEC_PER_TICK are 10 or 100 for example.</p>
</section>
<section id="peripheral-support">
<h2>Peripheral Support<a class="headerlink" href="#peripheral-support" title="Permalink to this heading"></a></h2>
<p>The following list indicates peripherals supported in NuttX:</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Peripheral</p></th>
<th class="head"><p>Support</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>ACMP</p></td>
<td><p>No</p></td>
</tr>
<tr class="row-odd"><td><p>ADC</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-even"><td><p>CAN</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-odd"><td><p>CSI</p></td>
<td><p>No</p></td>
</tr>
<tr class="row-even"><td><p>DAC</p></td>
<td><p>No</p></td>
</tr>
<tr class="row-odd"><td><p>eLCDIF</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-even"><td><p>ENC</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-odd"><td><p>ENET</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-even"><td><p>FlexIO</p></td>
<td><p>No</p></td>
</tr>
<tr class="row-odd"><td><p>GPIO</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-even"><td><p>I2S</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-odd"><td><p>PWM</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-even"><td><p>SAI</p></td>
<td><p>No</p></td>
</tr>
<tr class="row-odd"><td><p>SPDIF</p></td>
<td><p>No</p></td>
</tr>
<tr class="row-even"><td><p>SPI</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-odd"><td><p>UART</p></td>
<td><p>Yes</p></td>
</tr>
<tr class="row-even"><td><p>USB</p></td>
<td><p>Yes</p></td>
</tr>
</tbody>
</table>
<section id="acmp">
<h3>ACMP<a class="headerlink" href="#acmp" title="Permalink to this heading"></a></h3>
<p>The circout for comparing two analog input voltages designed to operate across the full
range of supply voltage (rail-to-rail operation).</p>
</section>
<section id="adc">
<h3>ADC<a class="headerlink" href="#adc" title="Permalink to this heading"></a></h3>
<p>ADC driver with the successive approximation analog/digital converter. The lower-half of
this driver is initialize by calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_adcinitialize()</span></code>.</p>
<p>ADC module can use either continuous trigger (next conversion is started as soon as the
previous is finished) or hardware trigger. This option is selected by IMXRT_ADCx_ETC
(x = 1, 2) config option. If IMXRT_ADCx_ETC = -1 then continuous trigger is used. If
corresponding XBAR number is put in IMXRT_ADCx_ETC then that signal is used to trigger
the ADC conversion (for example PWM signal can be used as a source). For PWM XBAR options
please refer to PWM chapter of this documentation.</p>
<p>Hardware triggering is currently limited to maximum of 8 channels. HW trigger is automatically
disabled if there are more than 8 channels.</p>
<p>DMA is currently not supported for ADC modules.</p>
</section>
<section id="can">
<h3>CAN<a class="headerlink" href="#can" title="Permalink to this heading"></a></h3>
<p>FlexCAN driver is supported in MCUs i.MX RT1020 and higher. i.MX RT106x have both classical
CAN and also one CAN FD while i.MX RT1170 have 3 CAN FD peripherals. FlexCAN driver in imxrt
works beyond SocketCAN driver layout. The lower-half of this driver is initialize by
calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_cannitialize()</span></code>.</p>
<p>There is an booting option that automatically provides initialization of network interface
in the early stages of booting and therefore calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_cannitialize()</span></code> via
board specific logic is not necessary. This however works only when there is only one
interface in the chip. For running more interfaces (like CAN and Ethernet), network late
initialization must be turn on by CONFIG_NETDEV_LATEINIT and board specific logic must call
lower-half part of drivers.</p>
</section>
<section id="csi">
<h3>CSI<a class="headerlink" href="#csi" title="Permalink to this heading"></a></h3>
<p>CMOS Sensor interface which enables the chip to connect directly to external CMOS image sensors.</p>
</section>
<section id="dac">
<h3>DAC<a class="headerlink" href="#dac" title="Permalink to this heading"></a></h3>
<p>Digital/analog converter for external signal is only supported in i.MX RT1170 MCU. It is 12 bit
lower power, general purpose DAC.</p>
</section>
<section id="elcdif">
<h3>eLCDIF<a class="headerlink" href="#elcdif" title="Permalink to this heading"></a></h3>
<p>The enhanced Liquid Crystal Display interface (LCDIF) is a general purpose display controller.</p>
</section>
<section id="enc">
<h3>ENC<a class="headerlink" href="#enc" title="Permalink to this heading"></a></h3>
<p>The enhanced quadrature encoder/decoder module supported in i.MX RT1015 and higher. The lower-half
of this driver is initialize by calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_qeinitialize()</span></code>.</p>
</section>
<section id="enet">
<h3>ENET<a class="headerlink" href="#enet" title="Permalink to this heading"></a></h3>
<p>Ethernet driver supported in i.MX RT1020 and higher. The lower-half of this driver is initialize
by calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_netnitialize()</span></code>.</p>
<p>There is an booting option that automatically provides initialization of network interface
in the early stages of booting and therefore calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_cannitialize()</span></code> via
board specific logic is not necessary. This however works only when there is only one
interface in the chip. For running more interfaces (like CAN and Ethernet), network late
initialization must be turn on by CONFIG_NETDEV_LATEINIT and board specific logic must call
lower-half part of drivers.</p>
</section>
<section id="flexio">
<h3>FlexIO<a class="headerlink" href="#flexio" title="Permalink to this heading"></a></h3>
<p>A configurable module providing a range of functionality like emulation of a variety of
serial/parallel communication protocols, flexible 16-bit timers or programmable logic blocks.
This module is supported in i.MX RT1010 and higher.</p>
</section>
<section id="gpio">
<h3>GPIO<a class="headerlink" href="#gpio" title="Permalink to this heading"></a></h3>
<p>Pins can be configured using <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_config_gpio()</span></code> function. Writing to pins is
done by <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_gpio_write()</span></code> function and reading is done by <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_gpio_read()</span></code>.</p>
<p>MCUs i.MX RT1060 and higher includes both standard speed GPIOs (1-5) and high speed
GPIOS (6-9). Regular and high speed GPIO share the same pins (GPIO1 is with GPIO6 etc),
therefore IOMUXC_GPR_GPR26-29 registers are used to determine what module is used for the
GPIO pins.</p>
</section>
<section id="i2c">
<h3>I2C<a class="headerlink" href="#i2c" title="Permalink to this heading"></a></h3>
<p>Inter-Integrated Circout module supporting an interface to an I2C bus as master and/or
as a slave. The lower-half of this driver is initialize by calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_i2cbus_initialize()</span></code>.</p>
</section>
<section id="pwm">
<h3>PWM<a class="headerlink" href="#pwm" title="Permalink to this heading"></a></h3>
<p>Pulse width modulator supported in i.MX RT1010 and higher. Multiple channels option is available.
Output on pin B is currently supported only as a complementary option to pin A.
The lower-half of this driver is initialize by calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_pwminitialize()</span></code>.</p>
<p>PWM module can be synchronized by an external signal. The external signal used for synchronization
is selected by IMXRT_FLEXPWMx_MODx_SYNC_SRC config option. The number in IMXRT_FLEXPWMx_MODx_SYNC_SRC
corresponds with the XBAR number. Following numbers can be used for synchronization of PWMs with other
PWM module when using iMXRT1020, iMXRT1050 or iMXRT1060.</p>
<ul class="simple">
<li><p>PWM1 Module 1 = 40</p></li>
<li><p>PWM1 Module 2 = 41</p></li>
<li><p>PWM1 Module 3 = 42</p></li>
<li><p>PWM1 Module 4 = 43</p></li>
<li><p>PWM2 Module 1 = 44</p></li>
<li><p>PWM2 Module 2 = 45</p></li>
<li><p>PWM2 Module 3 = 46</p></li>
<li><p>PWM2 Module 4 = 47</p></li>
<li><p>PWM3 Module 1 = 48</p></li>
<li><p>PWM3 Module 2 = 49</p></li>
<li><p>PWM3 Module 3 = 50</p></li>
<li><p>PWM3 Module 4 = 51</p></li>
<li><p>PWM4 Module 1 = 52</p></li>
<li><p>PWM4 Module 2 = 53</p></li>
<li><p>PWM4 Module 3 = 54</p></li>
<li><p>PWM4 Module 4 = 55</p></li>
</ul>
<p>iMXRT1170 has different XBAR connections:</p>
<ul class="simple">
<li><p>PWM1 Module 1 = 74</p></li>
<li><p>PWM1 Module 2 = 75</p></li>
<li><p>PWM1 Module 3 = 76</p></li>
<li><p>PWM1 Module 4 = 77</p></li>
<li><p>PWM2 Module 1 = 78</p></li>
<li><p>PWM2 Module 2 = 79</p></li>
<li><p>PWM2 Module 3 = 80</p></li>
<li><p>PWM2 Module 4 = 81</p></li>
<li><p>PWM3 Module 1 = 82</p></li>
<li><p>PWM3 Module 2 = 83</p></li>
<li><p>PWM3 Module 3 = 84</p></li>
<li><p>PWM3 Module 4 = 85</p></li>
<li><p>PWM4 Module 1 = 86</p></li>
<li><p>PWM4 Module 2 = 87</p></li>
<li><p>PWM4 Module 3 = 88</p></li>
<li><p>PWM4 Module 4 = 89</p></li>
</ul>
<p>Option IMXRT_FLEXPWMx_MODx_TRIG allows the module to generate a trigger signal. The trigger is generated on
timer capture of either period or duty cycle value based on the configuration.</p>
</section>
<section id="sai">
<h3>SAI<a class="headerlink" href="#sai" title="Permalink to this heading"></a></h3>
<p>Synchronous audio interface provided by I2C module. Supported in i.MX RT1015 and higher.</p>
</section>
<section id="spdif">
<h3>SPDIF<a class="headerlink" href="#spdif" title="Permalink to this heading"></a></h3>
<p>Sony/Philips digital interface audio block. It is a stereo transceiver that allows the
processor to receive and transmit digital audio. Supported in i.MX RT1010 and higher.</p>
</section>
<section id="spi">
<h3>SPI<a class="headerlink" href="#spi" title="Permalink to this heading"></a></h3>
<p>Serial Peripheral interface module that supports an interface to an SPI bus as a master
and/or a slave. The lower-half of this driver is initialize by calling <code class="xref c c-func docutils literal notranslate"><span class="pre">imxrt_lpsibus_initialize()</span></code>.</p>
</section>
<section id="uart">
<h3>UART<a class="headerlink" href="#uart" title="Permalink to this heading"></a></h3>
<p>Universal Asynchronous Receiver/Transmitter module. UART is initialized automatically during
MCU boot.</p>
</section>
<section id="usb">
<h3>USB<a class="headerlink" href="#usb" title="Permalink to this heading"></a></h3>
<p>Console communication over USB is supported via CDC-ACM. Only USB Device is currently supported
for i.MX RT in NuttX</p>
</section>
</section>
<section id="supported-boards">
<h2>Supported Boards<a class="headerlink" href="#supported-boards" title="Permalink to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="boards/arcx-socket-grid/index.html">ARCX Socket Grid</a></li>
<li class="toctree-l1"><a class="reference internal" href="boards/imxrt1020-evk/index.html">i.MX RT1020 EVK</a></li>
<li class="toctree-l1"><a class="reference internal" href="boards/imxrt1050-evk/index.html">i.MX RT1050 EVK</a></li>
<li class="toctree-l1"><a class="reference internal" href="boards/imxrt1060-evk/index.html">i.MX RT1060 EVK</a></li>
<li class="toctree-l1"><a class="reference internal" href="boards/imxrt1064-evk/index.html">i.MX RT1064 EVK</a></li>
<li class="toctree-l1"><a class="reference internal" href="boards/imxrt1170-evk/index.html">i.MX RT1170 EVK</a></li>
<li class="toctree-l1"><a class="reference internal" href="boards/teensy-4.x/index.html">Teensy-4.x</a></li>
</ul>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../imx9/boards/imx95-evk/index.html" class="btn btn-neutral float-left" title="IMX95LPD5EVK-19" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="boards/arcx-socket-grid/index.html" class="btn btn-neutral float-right" title="ARCX Socket Grid" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2023, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>