blob: 6e767f370168014b7f598a9979cdfb1f435dd091 [file] [log] [blame]
.. _teensy40:
PJRC TEENSY 4
#############
Overview
********
The Teensy is a complete USB-based microcontroller development system, in a
very small footprint, capable of implementing many types of projects. All
programming is done via the USB port.
.. tabs::
.. group-tab:: Teensy 4.0
.. figure:: img/teensy40.jpg
:align: center
:alt: TEENSY40
(Credit: https://www.pjrc.com)
.. group-tab:: Teensy 4.1
.. figure:: img/teensy41.jpg
:align: center
:alt: TEENSY41
(Credit: https://www.pjrc.com)
.. group-tab:: Sparkfun Teensy Micromod
.. figure:: img/teensymm.webp
:align: center
:alt: TEENSYMM
(Credit: https://www.sparkfun.com)
Hardware
********
.. tabs::
.. group-tab:: Teensy 4.0
- MIMXRT1062DVL6A MCU (600 MHz, 1024 KB on-chip memory)
- 16 Mbit QSPI Flash
- User LED
- USB 2.0 host connector
See the `Teensy 4.0 Website`_ for a complete hardware description.
.. group-tab:: Teensy 4.1
- MIMXRT1062DVJ6A MCU (600 MHz, 1024 KB on-chip memory)
- 64 Mbit QSPI Flash
- User LED
- USB 2.0 host connector
- USB 2.0 OTG connector
- 10/100 Mbit/s Ethernet transceiver
- TF socket for SD card
To connect an Ethernet cable, additional `Teensy 4.1 Ethernet Kit`_ is required.
See the `Teensy 4.1 Website`_ for a complete hardware description.
.. group-tab:: Sparkfun Teensy Micromod
- MIMXRT1062DVJ6A MCU (600 MHz, 1024 KB on-chip memory)
- 128 Mbit QSPI Flash
- User LED
- USB 2.0 host connector
- USB 2.0 OTG connector
- TF socket for SD card
See the `Teensy Micromod Website`_ for a complete hardware description.
For more information, check the `i.MX RT1060 Datasheet`_.
Supported Features
==================
The Teensy 4.0 board configuration supports the following hardware
features:
+-----------+------------+----------------------+
| Interface | Controller | Driver/Component |
+===========+============+======================+
| ADC | on-chip | adc |
+-----------+------------+----------------------+
| CLOCK | on-chip | clock_control |
+-----------+------------+----------------------+
| FLASH | on-chip | flash |
+-----------+------------+----------------------+
| GPIO | on-chip | gpio |
+-----------+------------+----------------------+
| I2C | on-chip | i2c |
+-----------+------------+----------------------+
| I2S | on-chip | i2s |
+-----------+------------+----------------------+
| NVIC | on-chip | arch/arm |
+-----------+------------+----------------------+
| PWM | on-chip | pwm |
+-----------+------------+----------------------+
| RTC | on-chip | system clock |
+-----------+------------+----------------------+
| SPI | on-chip | spi |
+-----------+------------+----------------------+
| CAN | on-chip | can |
+-----------+------------+----------------------+
| UART | on-chip | serial |
+-----------+------------+----------------------+
| USB | on-chip | usb |
+-----------+------------+----------------------+
| TRNG | on-chip | entropy |
+-----------+------------+----------------------+
| WDT | on-chip | watchdog |
+-----------+------------+----------------------+
The Teensy 4.1 board configuration supports additional hardware
features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| SDHC | on-chip | disk access |
+-----------+------------+-------------------------------------+
| ENET | on-chip | ethernet |
+-----------+------------+-------------------------------------+
Other hardware features have not been enabled yet for this board.
Connections and IOs
===================
Pin mappings from Teensy to MIMXRT1062 SoC.
+-----+------------+-------------------------------------+
| Pin | Pad ID | Usage |
+=====+============+=====================================+
| 0 | AD_B0_03 | GPIO1_3 / UART6_RX / CAN2_RX |
+-----+------------+-------------------------------------+
| 1 | AD_B0_02 | GPIO1_2 / UART6_TX / CAN2_TX |
+-----+------------+-------------------------------------+
| 2 | EMC_04 | GPIO4_4 |
+-----+------------+-------------------------------------+
| 3 | EMC_05 | GPIO4_5 |
+-----+------------+-------------------------------------+
| 4 | EMC_06 | GPIO4_6 |
+-----+------------+-------------------------------------+
| 5 | EMC_08 | GPIO4_8 |
+-----+------------+-------------------------------------+
| 6 | B0_10 | GPIO2_10 |
+-----+------------+-------------------------------------+
| 7 | B1_01 | GPIO2_17 / UART4_RX |
+-----+------------+-------------------------------------+
| 8 | B1_00 | GPIO2_16 / UART4_TX |
+-----+------------+-------------------------------------+
| 9 | B0_11 | GPIO2_11 |
+-----+------------+-------------------------------------+
| 10 | B0_00 | GPIO2_0 |
+-----+------------+-------------------------------------+
| 11 | B0_02 | GPIO2_2 |
+-----+------------+-------------------------------------+
| 12 | B0_01 | GPIO2_1 |
+-----+------------+-------------------------------------+
| 13 | B0_03 | GPIO2_3 / LED |
+-----+------------+-------------------------------------+
| 14 | AD_B1_02 | GPIO1_18 / UART2_TX |
+-----+------------+-------------------------------------+
| 15 | AD_B1_03 | GPIO1_19 / UART2_RX |
+-----+------------+-------------------------------------+
| 16 | AD_B1_07 | GPIO1_23 / UART3_RX / I2C3_SCL |
+-----+------------+-------------------------------------+
| 17 | AD_B1_06 | GPIO1_22 / UART3_TX / I2C3_SDA |
+-----+------------+-------------------------------------+
| 18 | AD_B1_01 | GPIO1_17 / I2C1_SDA |
+-----+------------+-------------------------------------+
| 19 | AD_B1_00 | GPIO1_16 / I2C1_SCL |
+-----+------------+-------------------------------------+
| 20 | AD_B1_10 | GPIO1_26 / UART8_TX |
+-----+------------+-------------------------------------+
| 21 | AD_B1_11 | GPIO1_27 / UART8_RX |
+-----+------------+-------------------------------------+
| 22 | AD_B1_08 | GPIO1_24 / CAN1_TX |
+-----+------------+-------------------------------------+
| 23 | AD_B1_09 | GPIO1_25 / CAN1_RX |
+-----+------------+-------------------------------------+
| 24 | AD_B0_12 | GPIO1_12 / UART1_TX / I2C4_SCL |
+-----+------------+-------------------------------------+
| 25 | AD_B0_13 | GPIO1_13 / UART1_RX / I2C4_SDA |
+-----+------------+-------------------------------------+
| 26 | AD_B1_14 | GPIO1_30 / SPI3_MOSI |
+-----+------------+-------------------------------------+
| 27 | AD_B1_15 | GPIO1_31 / SPI3_SCK |
+-----+------------+-------------------------------------+
| 28 | EMC_32 | GPIO3_18 / UART7_RX |
+-----+------------+-------------------------------------+
| 29 | EMC_31 | GPIO4_31 / UART7_TX |
+-----+------------+-------------------------------------+
| 30 | EMC_37 | GPIO3_23 / CAN3_RX |
+-----+------------+-------------------------------------+
| 31 | EMC_36 | GPIO3_22 / CAN3_TX |
+-----+------------+-------------------------------------+
| 32 | B0_12 | GPIO2_12 |
+-----+------------+-------------------------------------+
| 33 | EMC_07 | GPIO4_7 |
+-----+------------+-------------------------------------+
Only Teensy 4.0 and Teensy Micromod:
+-----+------------+-------------------------------------+
| 34 | SD_B0_03 | GPIO3_15 |
+-----+------------+-------------------------------------+
| 35 | SD_B0_02 | GPIO3_14 |
+-----+------------+-------------------------------------+
| 36 | SD_B0_01 | GPIO3_13 |
+-----+------------+-------------------------------------+
| 37 | SD_B0_00 | GPIO3_12 |
+-----+------------+-------------------------------------+
| 38 | SD_B0_05 | GPIO3_17 |
+-----+------------+-------------------------------------+
| 39 | SD_B0_04 | GPIO3_16 |
+-----+------------+-------------------------------------+
Only Teensy Micromod
+-----+------------+-------------------------------------+
| 40 | B0_04 | GPIO2_4 / I2C2 SCL |
+-----+------------+-------------------------------------+
| 41 | B0_05 | GPIO2_5 / I2C2 SDA |
+-----+------------+-------------------------------------+
| 42 | B0_06 | GPIO2_6 |
+-----+------------+-------------------------------------+
| 43 | B0_07 | GPIO2_7 |
+-----+------------+-------------------------------------+
| 44 | B0_08 | GPIO2_8 / UART3 TX |
+-----+------------+-------------------------------------+
| 45 | B0_09 | GPIO2_9 / UART3 RX |
+-----+------------+-------------------------------------+
Only Teensy 4.1:
+-----+------------+-------------------------------------+
| 34 | B1_13 | GPIO2_29 / UART5_RX |
+-----+------------+-------------------------------------+
| 35 | B1_12 | GPIO2_28 / UART5_TX |
+-----+------------+-------------------------------------+
| 36 | B1_02 | GPIO2_18 |
+-----+------------+-------------------------------------+
| 37 | B1_03 | GPIO2_19 |
+-----+------------+-------------------------------------+
| 38 | AD_B1_12 | GPIO1_28 / SPI3_CS |
+-----+------------+-------------------------------------+
| 39 | AD_B1_13 | GPIO1_29 / SPI3_MISO |
+-----+------------+-------------------------------------+
| 40 | AD_B1_04 | GPIO1_20 |
+-----+------------+-------------------------------------+
| 41 | AD_B1_05 | GPIO1_21 / UART3_RX |
+-----+------------+-------------------------------------+
Pin mappings from Teensy Micromod pins to MIMXRT1062 SoC.
Teensy Micromod only:
+-----+-----+------+------------+-----------------------------------+
|MMOD | MMC | Pin | Pad ID | Usage |
+=====+=====+======+============+===================================+
| 8 | 16 | 27 | AD_B1_15 | <gpio1 31> / SPI3_SCK |
+-----+-----+------+------------+-----------------------------------+
| 10 | 2 | 4 | EMC_06 | <gpio4 6> |
+-----+-----+------+------------+-----------------------------------+
| 12 | | 18 | AD_B1_01 | <gpio1 17> / I2C1_SDA |
+-----+-----+------+------------+-----------------------------------+
| 14 | | 19 | AD_B1_00 | <gpio1 16> / I2C1_SCL |
+-----+-----+------+------------+-----------------------------------+
| 16 | 4 | 29 | EMC_31 | <gpio4 31> / UART7_TX |
+-----+-----+------+------------+-----------------------------------+
| 17 | | 1 | AD_B0_02 | <gpio1 2> / UART6_TX / CAN2_TX |
+-----+-----+------+------------+-----------------------------------+
| 18 | 3 | 5 | EMC_08 | <gpio4 8> |
+-----+-----+------+------------+-----------------------------------+
| 19 | | 0 | AD_B0_03 | <gpio1 3> / UART6_RX / CAN2_RX |
+-----+-----+------+------------+-----------------------------------+
| 20 | | 16 | AD_B1_07 | <gpio1 23> / UART3_RX / I2C3_SCL |
+-----+-----+------+------------+-----------------------------------+
| 22 | | 17 | AD_B1_06 | <gpio1 22> / UART3_TX / I2C3_SDA |
+-----+-----+------+------------+-----------------------------------+
| 32 | | 3 | EMC_05 | <gpio4 5> |
+-----+-----+------+------------+-----------------------------------+
| 34 | 0 | 14 | AD_B1_02 | <gpio1 18> / UART2_TX |
+-----+-----+------+------------+-----------------------------------+
| 38 | 1 | 15 | AD_B1_03 | <gpio1 19> / UART2_RX |
+-----+-----+------+------------+-----------------------------------+
| 4 | | 28 | EMC_32 | <gpio3 18> / UART7_RX |
+-----+-----+------+------------+-----------------------------------+
| 40 | 5 | 40 | B0_04 | <gpio2 04> / I2C2 SCL |
+-----+-----+------+------------+-----------------------------------+
| 41 | | 30 | EMC_37 | <gpio3 23> / CAN3_RX |
+-----+-----+------+------------+-----------------------------------+
| 42 | 6 | 41 | B0_05 | <gpio2 05> / I2C2 SDA |
+-----+-----+------+------------+-----------------------------------+
| 43 | | 31 | EMC_36 | <gpio3 22> / CAN3_TX |
+-----+-----+------+------------+-----------------------------------+
| 44 | 7 | 42 | B0_06 | <gpio2 06> |
+-----+-----+------+------------+-----------------------------------+
| 46 | 8 | 43 | B0_07 | <gpio2 07> |
+-----+-----+------+------------+-----------------------------------+
| 47 | | 2 | EMC_04 | <gpio4 4> |
+-----+-----+------+------------+-----------------------------------+
| 48 | 9 | 44 | B0_08 | <gpio2 08> / UART3 TX |
+-----+-----+------+------------+-----------------------------------+
| 49 | | 22 | AD_B1_08 | <gpio1 24> / CAN1_TX |
+-----+-----+------+------------+-----------------------------------+
| 50 | | 21 | AD_B1_11 | <gpio1 27> / UART8_RX |
+-----+-----+------+------------+-----------------------------------+
| 51 | | 25 | AD_B0_13 | <gpio1 13> / UART1_RX / I2C4_SDA |
+-----+-----+------+------------+-----------------------------------+
| 52 | | 20 | AD_B1_10 | <gpio1 26> / UART8_TX |
+-----+-----+------+------------+-----------------------------------+
| 53 | | 24 | AD_B0_12 | <gpio1 12> / UART1_TX / I2C4_SCL |
+-----+-----+------+------------+-----------------------------------+
| 54 | | 8 | B1_00 | <gpio2 16> / UART4_TX |
+-----+-----+------+------------+-----------------------------------+
| 55 | 17 | 10 | B0_00 | <gpio2 0> |
+-----+-----+------+------------+-----------------------------------+
| 56 | | 7 | B1_01 | <gpio2 17> / UART4_RX |
+-----+-----+------+------------+-----------------------------------+
| 57 | | 13 | B0_03 | <gpio2 3> / LED |
+-----+-----+------+------------+-----------------------------------+
| 58 | | 23 | AD_B1_09 | <gpio1 25> / CAN1_RX |
+-----+-----+------+------------+-----------------------------------+
| 59 | | 11 | B0_02 | <gpio2 2> |
+-----+-----+------+------------+-----------------------------------+
| 60 | | 36 | SD_B0_01 | <gpio3 13> |
+-----+-----+------+------------+-----------------------------------+
| 61 | | 12 | B0_01 | <gpio2 1> |
+-----+-----+------+------------+-----------------------------------+
| 62 | | 37 | SD_B0_00 | <gpio3 12> |
+-----+-----+------+------------+-----------------------------------+
| 63 | 15 | 33 | EMC_07 | <gpio4 7> |
+-----+-----+------+------------+-----------------------------------+
| 64 | | 35 | SD_B0_02 | <gpio3 14> |
+-----+-----+------+------------+-----------------------------------+
| 65 | 14 | 32 | B0_12 | <gpio2 12> |
+-----+-----+------+------------+-----------------------------------+
| 66 | | 34 | SD_B0_03 | <gpio3 15> |
+-----+-----+------+------------+-----------------------------------+
| 67 | 13 | 26 | AD_B1_14 | <gpio1 30> / SPI3_MOSI |
+-----+-----+------+------------+-----------------------------------+
| 68 | | 38 | SD_B0_05 | <gpio3 16> |
+-----+-----+------+------------+-----------------------------------+
| 69 | 12 | 9 | B0_11 | <gpio2 11> |
+-----+-----+------+------------+-----------------------------------+
| 70 | | 39 | SD_B0_04 | <gpio3 17> |
+-----+-----+------+------------+-----------------------------------+
| 71 | 11 | 6 | B0_10 | <gpio2 10> |
+-----+-----+------+------------+-----------------------------------+
| 73 | 10 | 45 | B0_09 | <gpio2 09> / UART3 RX |
+-----+-----+------+------------+-----------------------------------+
MMOD = Physical Micromod pin number
MMC = Zephyr micromod_header connector pin number
Pin = Arduino Pin number
Pad ID = MIMXRT1062 pad id
Usage = Some usages of the pin
Programming and Debugging
*************************
Flashing
========
The Teensy 4.0 and Teensy 4.1 and Micromod ship with a dedicated bootloader
chip, which supports flashing using USB. This allows easy flashing of new
images, but does not support debugging the device.
#. Build the Zephyr kernel and the :zephyr:code-sample:`blinky` sample application.
.. tabs::
.. group-tab:: Teensy 4.0
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: teensy40
:goals: build
:compact:
.. group-tab:: Teensy 4.1
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: teensy41
:goals: build
:compact:
.. group-tab:: Teensy Micromod
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: teensymm
:goals: build
:compact:
#. Connect the board to your host computer using USB.
#. Tap the reset button to enter bootloader mode.
Red LED blinks.
#. Flash the image.
.. tabs::
.. group-tab:: Teensy 4.0
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: teensy40
:goals: flash
:compact:
.. group-tab:: Teensy 4.1
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: teensy41
:goals: flash
:compact:
.. group-tab:: Teensy Micromod
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: teensymm
:goals: flash
:compact:
#. You should see the orange LED blink.
Configuring a Console
=====================
.. tabs::
.. group-tab:: UART-Console
By default console output is mapped to teensy pins 0 (RX1) and 1 (TX1). Connect a usb-to-serial adapter
to use this serial console. Use the following settings with your serial terminal of choice (minicom, putty,
etc.):
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
.. group-tab:: USB-Console
By mapping the console output to USB, a usb-to-serial adapter is no longer required.
Utilizing the :ref:`snippet-cdc-acm-console` and a config option will enable this feature.
#. If application code doesn´t enable USB device support, this must be done via Kconfig option.
.. code-block:: kconfig
CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=y
#. Build application including the snippet.
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:snippets: cdc-acm-console
:board: teensy41
:goals: flash
:compact:
#. After application startup a serial device named like
``tty.usbmodem14203`` should appear on your host computer.
You can use e.g. ``Serial Monitor`` plugin for VScode to monitor.
References
**********
.. target-notes::
.. _Teensy 4.0 Website:
https://www.pjrc.com/store/teensy40.html
.. _Teensy 4.1 Website:
https://www.pjrc.com/store/teensy41.html
.. _Teensy 4.1 Ethernet Kit:
https://www.pjrc.com/store/ethernet_kit.html
.. _Teensy Micromod Website:
https://www.sparkfun.com/sparkfun-micromod-teensy-processor.html
.. _i.MX RT1060 Datasheet:
https://www.nxp.com/docs/en/nxp/data-sheets/IMXRT1060CEC.pdf