boards/pjrc/teensy4/doc/index.rst
.. zephyr:board:: 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_.
.. zephyr:board-supported-hw::
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
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.
.. 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