Skip to content

Commit 70ae8c1

Browse files
committed
boards: Support Teensy Micromod
The Sparkfun Teensy Micromod was designed by Paul of PJRC and manufactured and sold by Sparkfun.com The functionality of this board is very similar to the Teensy 4. It has the same basic pin definitions of the Teensy 4 but added 6 additional IO pins. Which added a lot of possibilities to use the flexio system in new ways, such as for camera input. It was unclear if the board should be added here or all of this duplicated under Sparkfun, but now Sparkfun is also now responsible for the manufacturing and sales of the Teensy 4 and Teensy 4.1, here feels like a good place. Note: I am mainly doing this as a learning experience on how to use zephyr directly, as most of my experiences with Zephyr is done through the current WIP Arduino Wrappers for some of their boards. So far I duplicated the Teensy 4.1 files, then modified, like removed the Ethernet and added the I2C2 object. I updated the flash information as these come with a 128mbit version versus the 64 on T4.1 or 16 on T4. So far I have only test blink. plus: cdc-acm example, plus adding gpio to it, plus logging, plus blinking. Signed-off-by: Kurt Eckhardt <[email protected]>
1 parent 29197ac commit 70ae8c1

10 files changed

+321
-9
lines changed

boards/pjrc/teensy4/Kconfig.defconfig

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# SPDX-License-Identifier: Apache-2.0
55
#
66

7-
if BOARD_TEENSY40 || BOARD_TEENSY41
7+
if BOARD_TEENSY40 || BOARD_TEENSY41 || BOARD_TEENSYMM
88

99
config BUILD_OUTPUT_HEX
1010
bool

boards/pjrc/teensy4/Kconfig.teensymm

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#
2+
# Copyright (c) 2020, Bernhard Kraemer
3+
# Copyright 2024 NXP
4+
#
5+
# SPDX-License-Identifier: Apache-2.0
6+
#
7+
8+
config BOARD_TEENSYMM
9+
select SOC_PART_NUMBER_MIMXRT1062DVL6A

boards/pjrc/teensy4/board.cmake

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
board_set_flasher_ifnset(teensy)
44

55
if(CONFIG_BOARD_TEENSY40)
6-
board_runner_args(teensy "--mcu=TEENSY40")
6+
board_runner_args(teensy "--mcu=TEENSY40")
7+
elseif(CONFIG_BOARD_TEENSYMM)
8+
board_runner_args(teensy "--mcu=TEENSY_MICROMOD")
79
else()
8-
board_runner_args(teensy "--mcu=TEENSY41")
10+
board_runner_args(teensy "--mcu=TEENSY41")
911
endif()
1012

1113
include(${ZEPHYR_BASE}/boards/common/teensy.board.cmake)

boards/pjrc/teensy4/board.yml

+5
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ boards:
99
vendor: pjrc
1010
socs:
1111
- name: mimxrt1062
12+
- name: teensymm
13+
full_name: Teensy MicroMod
14+
vendor: pjrc
15+
socs:
16+
- name: mimxrt1062
37.3 KB
Binary file not shown.

boards/pjrc/teensy4/doc/index.rst

+167-6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ programming is done via the USB port.
2828

2929
(Credit: https://www.pjrc.com)
3030

31+
.. group-tab:: Sparkfun Teensy Micromod
32+
33+
.. figure:: img/teensymm.webp
34+
:align: center
35+
:alt: TEENSYMM
36+
37+
(Credit: https://www.sparkfun.com)
38+
3139
Hardware
3240
********
3341

@@ -56,6 +64,17 @@ Hardware
5664

5765
See the `Teensy 4.1 Website`_ for a complete hardware description.
5866

67+
.. group-tab:: Sparkfun Teensy Micromod
68+
69+
- MIMXRT1062DVJ6A MCU (600 MHz, 1024 KB on-chip memory)
70+
- 128 Mbit QSPI Flash
71+
- User LED
72+
- USB 2.0 host connector
73+
- USB 2.0 OTG connector
74+
- TF socket for SD card
75+
76+
See the `Teensy Micromod Website`_ for a complete hardware description.
77+
5978
For more information, check the `i.MX RT1060 Datasheet`_.
6079

6180
Supported Features
@@ -188,7 +207,7 @@ Pin mappings from Teensy to MIMXRT1062 SoC.
188207
| 33 | EMC_07 | GPIO4_7 |
189208
+-----+------------+-------------------------------------+
190209

191-
Only Teensy 4.0:
210+
Only Teensy 4.0 and Teensy Micromod:
192211

193212
+-----+------------+-------------------------------------+
194213
| 34 | SD_B0_03 | GPIO3_15 |
@@ -204,6 +223,22 @@ Only Teensy 4.0:
204223
| 39 | SD_B0_04 | GPIO3_16 |
205224
+-----+------------+-------------------------------------+
206225

226+
Only Teensy Micromod
227+
228+
+-----+------------+-------------------------------------+
229+
| 40 | B0_04 | GPIO2_4 / I2C2 SCL |
230+
+-----+------------+-------------------------------------+
231+
| 41 | B0_05 | GPIO2_5 / I2C2 SDA |
232+
+-----+------------+-------------------------------------+
233+
| 42 | B0_06 | GPIO2_6 |
234+
+-----+------------+-------------------------------------+
235+
| 43 | B0_07 | GPIO2_7 |
236+
+-----+------------+-------------------------------------+
237+
| 44 | B0_08 | GPIO2_8 / UART3 TX |
238+
+-----+------------+-------------------------------------+
239+
| 45 | B0_09 | GPIO2_9 / UART3 RX |
240+
+-----+------------+-------------------------------------+
241+
207242
Only Teensy 4.1:
208243

209244
+-----+------------+-------------------------------------+
@@ -221,18 +256,124 @@ Only Teensy 4.1:
221256
+-----+------------+-------------------------------------+
222257
| 40 | AD_B1_04 | GPIO1_20 |
223258
+-----+------------+-------------------------------------+
224-
| 41 | AD_B1_05 | GPIO1_21 |
225-
+-----+------------+-------------------------------------+
259+
| 41 | AD_B1_05 | GPIO1_21 / UART3_RX |
260+
+-----+------------+-------------------------------------+
261+
262+
Pin mappings from Teensy Micromod pins to MIMXRT1062 SoC.
263+
264+
Teensy Micromod only:
265+
266+
+-----+-----+------+------------+-----------------------------------+
267+
|MMOD | MMC | Pin | Pad ID | Usage |
268+
+=====+=====+======+============+===================================+
269+
| 8 | 16 | 27 | AD_B1_15 | <gpio1 31> / SPI3_SCK |
270+
+-----+-----+------+------------+-----------------------------------+
271+
| 10 | 2 | 4 | EMC_06 | <gpio4 6> |
272+
+-----+-----+------+------------+-----------------------------------+
273+
| 12 | | 18 | AD_B1_01 | <gpio1 17> / I2C1_SDA |
274+
+-----+-----+------+------------+-----------------------------------+
275+
| 14 | | 19 | AD_B1_00 | <gpio1 16> / I2C1_SCL |
276+
+-----+-----+------+------------+-----------------------------------+
277+
| 16 | 4 | 29 | EMC_31 | <gpio4 31> / UART7_TX |
278+
+-----+-----+------+------------+-----------------------------------+
279+
| 17 | | 1 | AD_B0_02 | <gpio1 2> / UART6_TX / CAN2_TX |
280+
+-----+-----+------+------------+-----------------------------------+
281+
| 18 | 3 | 5 | EMC_08 | <gpio4 8> |
282+
+-----+-----+------+------------+-----------------------------------+
283+
| 19 | | 0 | AD_B0_03 | <gpio1 3> / UART6_RX / CAN2_RX |
284+
+-----+-----+------+------------+-----------------------------------+
285+
| 20 | | 16 | AD_B1_07 | <gpio1 23> / UART3_RX / I2C3_SCL |
286+
+-----+-----+------+------------+-----------------------------------+
287+
| 22 | | 17 | AD_B1_06 | <gpio1 22> / UART3_TX / I2C3_SDA |
288+
+-----+-----+------+------------+-----------------------------------+
289+
| 32 | | 3 | EMC_05 | <gpio4 5> |
290+
+-----+-----+------+------------+-----------------------------------+
291+
| 34 | 0 | 14 | AD_B1_02 | <gpio1 18> / UART2_TX |
292+
+-----+-----+------+------------+-----------------------------------+
293+
| 38 | 1 | 15 | AD_B1_03 | <gpio1 19> / UART2_RX |
294+
+-----+-----+------+------------+-----------------------------------+
295+
| 4 | | 28 | EMC_32 | <gpio3 18> / UART7_RX |
296+
+-----+-----+------+------------+-----------------------------------+
297+
| 40 | 5 | 40 | B0_04 | <gpio2 04> / I2C2 SCL |
298+
+-----+-----+------+------------+-----------------------------------+
299+
| 41 | | 30 | EMC_37 | <gpio3 23> / CAN3_RX |
300+
+-----+-----+------+------------+-----------------------------------+
301+
| 42 | 6 | 41 | B0_05 | <gpio2 05> / I2C2 SDA |
302+
+-----+-----+------+------------+-----------------------------------+
303+
| 43 | | 31 | EMC_36 | <gpio3 22> / CAN3_TX |
304+
+-----+-----+------+------------+-----------------------------------+
305+
| 44 | 7 | 42 | B0_06 | <gpio2 06> |
306+
+-----+-----+------+------------+-----------------------------------+
307+
| 46 | 8 | 43 | B0_07 | <gpio2 07> |
308+
+-----+-----+------+------------+-----------------------------------+
309+
| 47 | | 2 | EMC_04 | <gpio4 4> |
310+
+-----+-----+------+------------+-----------------------------------+
311+
| 48 | 9 | 44 | B0_08 | <gpio2 08> / UART3 TX |
312+
+-----+-----+------+------------+-----------------------------------+
313+
| 49 | | 22 | AD_B1_08 | <gpio1 24> / CAN1_TX |
314+
+-----+-----+------+------------+-----------------------------------+
315+
| 50 | | 21 | AD_B1_11 | <gpio1 27> / UART8_RX |
316+
+-----+-----+------+------------+-----------------------------------+
317+
| 51 | | 25 | AD_B0_13 | <gpio1 13> / UART1_RX / I2C4_SDA |
318+
+-----+-----+------+------------+-----------------------------------+
319+
| 52 | | 20 | AD_B1_10 | <gpio1 26> / UART8_TX |
320+
+-----+-----+------+------------+-----------------------------------+
321+
| 53 | | 24 | AD_B0_12 | <gpio1 12> / UART1_TX / I2C4_SCL |
322+
+-----+-----+------+------------+-----------------------------------+
323+
| 54 | | 8 | B1_00 | <gpio2 16> / UART4_TX |
324+
+-----+-----+------+------------+-----------------------------------+
325+
| 55 | 17 | 10 | B0_00 | <gpio2 0> |
326+
+-----+-----+------+------------+-----------------------------------+
327+
| 56 | | 7 | B1_01 | <gpio2 17> / UART4_RX |
328+
+-----+-----+------+------------+-----------------------------------+
329+
| 57 | | 13 | B0_03 | <gpio2 3> / LED |
330+
+-----+-----+------+------------+-----------------------------------+
331+
| 58 | | 23 | AD_B1_09 | <gpio1 25> / CAN1_RX |
332+
+-----+-----+------+------------+-----------------------------------+
333+
| 59 | | 11 | B0_02 | <gpio2 2> |
334+
+-----+-----+------+------------+-----------------------------------+
335+
| 60 | | 36 | SD_B0_01 | <gpio3 13> |
336+
+-----+-----+------+------------+-----------------------------------+
337+
| 61 | | 12 | B0_01 | <gpio2 1> |
338+
+-----+-----+------+------------+-----------------------------------+
339+
| 62 | | 37 | SD_B0_00 | <gpio3 12> |
340+
+-----+-----+------+------------+-----------------------------------+
341+
| 63 | 15 | 33 | EMC_07 | <gpio4 7> |
342+
+-----+-----+------+------------+-----------------------------------+
343+
| 64 | | 35 | SD_B0_02 | <gpio3 14> |
344+
+-----+-----+------+------------+-----------------------------------+
345+
| 65 | 14 | 32 | B0_12 | <gpio2 12> |
346+
+-----+-----+------+------------+-----------------------------------+
347+
| 66 | | 34 | SD_B0_03 | <gpio3 15> |
348+
+-----+-----+------+------------+-----------------------------------+
349+
| 67 | 13 | 26 | AD_B1_14 | <gpio1 30> / SPI3_MOSI |
350+
+-----+-----+------+------------+-----------------------------------+
351+
| 68 | | 38 | SD_B0_05 | <gpio3 16> |
352+
+-----+-----+------+------------+-----------------------------------+
353+
| 69 | 12 | 9 | B0_11 | <gpio2 11> |
354+
+-----+-----+------+------------+-----------------------------------+
355+
| 70 | | 39 | SD_B0_04 | <gpio3 17> |
356+
+-----+-----+------+------------+-----------------------------------+
357+
| 71 | 11 | 6 | B0_10 | <gpio2 10> |
358+
+-----+-----+------+------------+-----------------------------------+
359+
| 73 | 10 | 45 | B0_09 | <gpio2 09> / UART3 RX |
360+
+-----+-----+------+------------+-----------------------------------+
361+
362+
MMOD = Physical Micromod pin number
363+
MMC = Zephyr micromod_header connector pin number
364+
Pin = Arduino Pin number
365+
Pad ID = MIMXRT1062 pad id
366+
Usage = Some usages of the pin
226367

227368
Programming and Debugging
228369
*************************
229370

230371
Flashing
231372
========
232373

233-
Both the Teensy 4.0 and Teensy 4.1 ship with a dedicated bootloader chip,
234-
which supports flashing using USB. This allows easy flashing of new images,
235-
but does not support debugging the device.
374+
The Teensy 4.0 and Teensy 4.1 and Micromod ship with a dedicated bootloader
375+
chip, which supports flashing using USB. This allows easy flashing of new
376+
images, but does not support debugging the device.
236377

237378
#. Build the Zephyr kernel and the :zephyr:code-sample:`blinky` sample application.
238379

@@ -254,6 +395,14 @@ but does not support debugging the device.
254395
:goals: build
255396
:compact:
256397

398+
.. group-tab:: Teensy Micromod
399+
400+
.. zephyr-app-commands::
401+
:zephyr-app: samples/basic/blinky
402+
:board: teensymm
403+
:goals: build
404+
:compact:
405+
257406
#. Connect the board to your host computer using USB.
258407

259408
#. Tap the reset button to enter bootloader mode.
@@ -279,6 +428,15 @@ but does not support debugging the device.
279428
:goals: flash
280429
:compact:
281430

431+
.. group-tab:: Teensy Micromod
432+
433+
.. zephyr-app-commands::
434+
:zephyr-app: samples/basic/blinky
435+
:board: teensymm
436+
:goals: flash
437+
:compact:
438+
439+
282440
#. You should see the orange LED blink.
283441

284442
Configuring a Console
@@ -335,5 +493,8 @@ References
335493
.. _Teensy 4.1 Ethernet Kit:
336494
https://www.pjrc.com/store/ethernet_kit.html
337495

496+
.. _Teensy Micromod Website:
497+
https://www.sparkfun.com/sparkfun-micromod-teensy-processor.html
498+
338499
.. _i.MX RT1060 Datasheet:
339500
https://www.nxp.com/docs/en/nxp/data-sheets/IMXRT1060CEC.pdf

boards/pjrc/teensy4/teensy4-pinctrl.dtsi

+13
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,19 @@
9999
};
100100
};
101101

102+
/* LPI2C2 SCL, SDA on Teensy-Micromod-Pins 40/41 */
103+
pinmux_lpi2c2: pinmux_lpi2c2 {
104+
group0 {
105+
pinmux = <&iomuxc_gpio_b0_04_lpi2c2_scl>,
106+
<&iomuxc_gpio_b0_05_lpi2c2_sda>;
107+
drive-strength = "r0-6";
108+
drive-open-drain;
109+
slew-rate = "slow";
110+
nxp,speed = "100-mhz";
111+
input-enable;
112+
};
113+
};
114+
102115
/* LPI2C3 SCL, SDA on Teensy-Pins 16/17 */
103116
pinmux_lpi2c3: pinmux_lpi2c3 {
104117
group0 {

boards/pjrc/teensy4/teensymm.dts

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
* Copyright (c) 2020, Bernhard Kraemer
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include "teensy40.dts"
8+
9+
/ {
10+
model = "PJRC TEENSY Micromod board";
11+
12+
chosen {
13+
zephyr,flash-controller = &w25q128jvxgim;
14+
zephyr,flash = &w25q128jvxgim;
15+
};
16+
17+
micromod_header: connector {
18+
compatible = "sparkfun,micromod-gpio";
19+
#gpio-cells = <2>;
20+
gpio-map-mask = <0xffffffff 0xffffffc0>;
21+
gpio-map-pass-thru = <0 0x3f>;
22+
gpio-map = <0 0 &gpio1 18 0>, /* A0 MMOD 34 */
23+
<1 0 &gpio1 19 0>, /* A1 MMOD 38 */
24+
<2 0 &gpio4 6 0>, /* D0 MMOD 10 */
25+
<3 0 &gpio4 8 0>, /* D1/CAM_TRIG MMOD 18 */
26+
<4 0 &gpio4 31 0>, /* I2C_INT# MMOD 16 */
27+
<5 0 &gpio2 4 0>, /* G0/BUS0 MMOD 40 */
28+
<6 0 &gpio2 5 0>, /* G1/BUS1 MMOD 42 */
29+
<7 0 &gpio2 6 0>, /* G2/BUS2 MMOD 44 */
30+
<8 0 &gpio2 7 0>, /* G3/BUS3 MMOD 46 */
31+
<9 0 &gpio2 8 0>, /* G4/BUS4 MMOD 48 */
32+
<10 0 &gpio2 9 0>, /* G5/BUS5 MMOD 73 */
33+
<11 0 &gpio2 10 0>, /* G6/BUS6 MMOD 71 */
34+
<12 0 &gpio2 11 0>, /* G7/BUS7 MMOD 69 */
35+
<13 0 &gpio1 30 0>, /* G8 MMOD 67 */
36+
<14 0 &gpio2 12 0>, /* G9/ADC_D-/ MMOD 65 */
37+
<15 0 &gpio4 7 0>, /* G10/ADC_D+ MMOD 63 */
38+
<16 0 &gpio1 31 0>, /* G11/SWO MMOD 8 */
39+
<17 0 &gpio2 0 0>; /* SPI_CS MMOD 55 */
40+
};
41+
};
42+
43+
/delete-node/ &w25q16jvuxim;
44+
&flexspi {
45+
status = "okay";
46+
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
47+
48+
/* WINBOND flash memory*/
49+
w25q128jvxgim: w25q128jvxgim@0 {
50+
compatible = "nxp,imx-flexspi-nor";
51+
size = <DT_SIZE_M(16 * 8)>;
52+
reg = <0>;
53+
spi-max-frequency = <DT_FREQ_M(133)>;
54+
status = "okay";
55+
jedec-id = [ef 70 18];
56+
57+
erase-block-size = <4096>;
58+
write-block-size = <1>;
59+
};
60+
};
61+
62+
&lpi2c2 {
63+
pinctrl-0 = <&pinmux_lpi2c2>;
64+
pinctrl-names = "default";
65+
};
66+
67+
&usdhc1 {
68+
no-1-8-v;
69+
pinctrl-0 = <&pinmux_usdhc1>;
70+
pinctrl-1 = <&pinmux_usdhc1_slow>;
71+
pinctrl-2 = <&pinmux_usdhc1_med>;
72+
pinctrl-3 = <&pinmux_usdhc1_fast>;
73+
pinctrl-names = "default", "slow", "med", "fast";
74+
};
75+
76+
// Sparkfun Micromod compatible pins
77+
micromod_1_uart: &lpuart6 {};
78+
micromod_2_uart: &lpuart3 {};
79+
micromod_0_i2c: &lpi2c1 {};
80+
micromod_1_i2c: &lpi2c4 {};
81+
micromod_0_spi: &lpspi4 {};

0 commit comments

Comments
 (0)