summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorrobert-hh <robert@hammelrath.com>2025-03-03 13:48:41 +0100
committerDamien George <damien@micropython.org>2025-03-17 13:59:32 +1100
commitf1018ee5c2dd0eabcc0cfe7e02c607594e489788 (patch)
treeddb13276e8667faf99da4ae9edda5872e32faab6
parent31a008c6e26eccc3798a9ab4169019a02eadb830 (diff)
downloadmicropython-f1018ee5c2dd0eabcc0cfe7e02c607594e489788.tar.gz
micropython-f1018ee5c2dd0eabcc0cfe7e02c607594e489788.zip
mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT: Add new Makerdiary board.
This is a board based on the i.MX RT1011 in breadboard-friendly shape. A good basic board with 16M flash and regular pinout, providing access to many GPIO_nn and GPIO_AD_nn Pins. Signed-off-by: robert-hh <robert@hammelrath.com>
-rw-r--r--docs/mimxrt/pinout.rst67
-rw-r--r--ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/board.json19
-rw-r--r--ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/deploy_makerdiary.md34
-rw-r--r--ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/mpconfigboard.h87
-rw-r--r--ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/mpconfigboard.mk16
-rw-r--r--ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/pins.csv42
6 files changed, 245 insertions, 20 deletions
diff --git a/docs/mimxrt/pinout.rst b/docs/mimxrt/pinout.rst
index 3ff892c64d..9aeb85401b 100644
--- a/docs/mimxrt/pinout.rst
+++ b/docs/mimxrt/pinout.rst
@@ -30,26 +30,28 @@ MIMXRT1170-EVK Debug USB D0/D1 D12/D11 D10/D13
Adafruit Metro M7 - D0/D1 D7/D3 A1/A0
Olimex RT1010Py - RxD/TxD D7/D8 D5/D6
Seeed ARCH MIX - J3_19/J3_20 J4_16/J4_17 J4_06/J4_07
+Makerdiary RT1011 - D9/D10 D13/A0 D11/D12
================= =========== =========== =========== ===========
|
-================ =========== =========== ======= ======= =====
-Board / Pin UART4 UART5 UART6 UART7 UART8
-================ =========== =========== ======= ======= =====
-Teensy 4.0 16/17 21/20 25/24 28/29 -
-Teensy 4.1 16/17 21/20 25/24 28/29 34/35
-MIMXRT1010-EVK - - - - -
-MIMXRT1015-EVK - - - - -
-MIMXRT1020-EVK D15/D14 A1/A0 - - -
-MIMXRT1050-EVK A1/A0 - - - -
-MIMXRT1050-EVKB A1/A0 - - - -
-MIMXRT1060-EVK A1/A0 - - - -
-MIMXRT1064-EVK A1/A0 - - - -
-MIMXRT1170-EVK D15/D14 D25/D26 D33/D34 D35/D36 -
-Olimex RT1010Py - - - - -
-Seeed ARCH MIX J4_10/J4_11 J5_08/J5_12 - - -
-================ =========== =========== ======= ======= =====
+================= =========== =========== ======= ======= =====
+Board / Pin UART4 UART5 UART6 UART7 UART8
+================= =========== =========== ======= ======= =====
+Teensy 4.0 16/17 21/20 25/24 28/29 -
+Teensy 4.1 16/17 21/20 25/24 28/29 34/35
+MIMXRT1010-EVK - - - - -
+MIMXRT1015-EVK - - - - -
+MIMXRT1020-EVK D15/D14 A1/A0 - - -
+MIMXRT1050-EVK A1/A0 - - - -
+MIMXRT1050-EVKB A1/A0 - - - -
+MIMXRT1060-EVK A1/A0 - - - -
+MIMXRT1064-EVK A1/A0 - - - -
+MIMXRT1170-EVK D15/D14 D25/D26 D33/D34 D35/D36 -
+Olimex RT1010Py - - - - -
+Seeed ARCH MIX J4_10/J4_11 J5_08/J5_12 - - -
+Makerdiary RT1011 A1/A2 - - - -
+================= =========== =========== ======= ======= =====
.. _mimxrt_pwm_pinout:
@@ -188,7 +190,6 @@ LED_BLUE F1/3/B
========= ===============
Pin Olimex RT1010PY
========= ===============
-D0 -
D1 F1/0/B
D2 F1/0/A
D3 F1/1/B
@@ -197,13 +198,10 @@ D5 F1/2/B
D6 F1/2/A
D7 F1/3/B
D8 F1/3/A
-D9 -
D10 F1/0/B
D11 F1/0/A
D12 F1/1/B
D13 F1/1/A
-D14 -
-A0 -
A1 F1/2/B
A2 F1/2/A
A3 F1/3/B
@@ -214,6 +212,32 @@ CS0 F1/1/X
SCK F1/0/X
========= ===============
+|
+
+========= =================
+Pin Makerdiary RT1011
+========= =================
+D1 F1/0/B
+D2 F1/0/A
+D3 F1/1/B
+D4 F1/1/A
+D5 F1/2/B
+D6 F1/2/A
+D7 F1/3/B
+D8 F1/3/A
+A3 F1/2/B
+A4 F1/2/A
+A5 F1/3/B
+A6 F1/3/A
+A9 F1/3/X
+A10 F1/2/X
+A11 F1/1/X
+SD1 F1/0/B
+SD2 F1/0/A
+LED F1/1/B
+DIO F1/0/X
+========= =================
+
Legend:
* Qm/n: QTMR module m, channel n
@@ -322,6 +346,7 @@ MIXMXRT1170-EVK D10/-/D11/D12/D13 D28/-/D25/D24/D26 -/-/D14/D
Adafruit Metro M7 -/-/MOSI/MISO/SCK - -
Olimex RT1010Py - CS0/-/SDO/SDI/SCK SDCARD with CS1
Seeed ARCH MIX J4_12/-/J4_14/J4_13/J4_15 J3_09/J3_05/J3_08_J3_11
+Makerdiary RT1011 A5/A2/A4/A3/A6 A11/A1/A10/A9/CLK
================= ========================= ======================= ===============
Pins denoted with (*) are by default not wired at the board. The CS0 and CS1 signals
@@ -355,6 +380,7 @@ MIXMXRT1170-EVK D14/D15 D1/D0 A4/A5 D26/D25 D19/D18
Adafruit Metro M7 D14/D15 D0/D1
Olimex RT1010Py - SDA1/SCL1 SDA2/SCL2 - -
Seeed ARCH MIX J3_17/J3_16 J4_06/J4_07 J5_05/J5_04 - -
+Makerdiary RT1011 D1/D2 A7/A8
================= =========== =========== =========== ======= =======
.. _mimxrt_i2s_pinout:
@@ -379,6 +405,7 @@ Adafruit Metro M7 1 D8 D10 D9 D12 D14 D15 D13
Olimex RT1010Py 1 D8 D6 D7 D4 D1 D2 D3
Olimex RT1010Py 3 - D10 D9 D11 - - -
MIMXRT_DEV 1 "MCK" "SCK_TX" "WS_TX" "SD_TX" "SCK_RX" "WS_RX" "SD_RX"
+Makerdiary RT1011 1 D8 SD1 D7 D4 D1 D2 D3
================= == ===== ======== ======= ======= ======== ======= =======
Symbolic pin names are provided for the MIMXRT_10xx_DEV boards.
diff --git a/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/board.json b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/board.json
new file mode 100644
index 0000000000..ee04a5965f
--- /dev/null
+++ b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/board.json
@@ -0,0 +1,19 @@
+{
+ "deploy": [
+ "deploy_makerdiary.md"
+ ],
+ "docs": "",
+ "features": [
+ "External Flash",
+ "USB",
+ "microSD"
+ ],
+ "images": [
+ "MAKERDIARY_RT1011_NANO_KIT.jpg"
+ ],
+ "mcu": "mimxrt",
+ "product": "iMX RT1011 Nano Kit",
+ "thumbnail": "",
+ "url": "https://makerdiary.com/products/imxrt1011-nanokit",
+ "vendor": "Makerdiary"
+}
diff --git a/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/deploy_makerdiary.md b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/deploy_makerdiary.md
new file mode 100644
index 0000000000..fde3381592
--- /dev/null
+++ b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/deploy_makerdiary.md
@@ -0,0 +1,34 @@
+## 1. Deploy the MicroPython firmware to the iMX RT1011 Nano Kit.
+
+The iMX RT1011 Nano Kit comes pre-installed with a UF2 bootloader.
+It can be started by pushing reset twice. Then the bootloader drive will
+appear. If that does not happen or the bootloader was lost, you can
+reinstall the bootloader using the procedure below.
+
+Once the bootloader is installed and started, you can install MicroPython
+by copying the .uf2 version of the firmware file to the bootloader
+drive. When the firmware is installed, the drive will disappear.
+
+## 2. Reinstall the bootloader iMX RT1011 Nano Kit.
+
+1. Get the NXP program sdphost for your operating system, e.g. from
+https://github.com/adafruit/tinyuf2/tree/master/ports/mimxrt10xx/sdphost.
+You can also get them from the NXP web sites.
+
+2. Get the UF2 boot-loader package https://github.com/adafruit/tinyuf2/releases/tag/0.21.0
+and extract the file tinyuf2-makerdiary_rt1011-0.21.0.bin. You may as
+well go for a newer release.
+
+Now you have all files at hand that you will need for updating.
+
+1. Push and hold the "USR/BT" button, then press "RST", and release both buttons.
+
+2. Run the commands:
+
+```
+sudo ./sdphost -u 0x1fc9,0x0145 -- write-file 0x20206400 tinyuf2-makerdiary_rt1011-0.21.0.bin
+sudo ./sdphost -u 0x1fc9,0x0145 -- jump-address 0x20207000
+```
+Wait until a drive icon appears on the computer (or mount it explicitly).
+At this point the bootloader is installed. You can now copy the
+MicroPython .uf2 file to the board.
diff --git a/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/mpconfigboard.h b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/mpconfigboard.h
new file mode 100644
index 0000000000..28085294f1
--- /dev/null
+++ b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/mpconfigboard.h
@@ -0,0 +1,87 @@
+#define MICROPY_HW_BOARD_NAME "iMX_RT1011_Nano_Kit"
+#define MICROPY_HW_MCU_NAME "MIMXRT1011DAE5A"
+#define MICROPY_HW_USB_MANUFACTURER_STRING "Makerdiary"
+#define MICROPY_HW_USB_VID 0xf055
+#define MICROPY_HW_USB_PID 0x9802
+#define MICROPY_PY_OS_DUPTERM_BUILTIN_STREAM (0)
+
+// RT1011-Nanokit has 1 board LED
+#define MICROPY_HW_LED1_PIN (pin_GPIO_SD_04)
+#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin))
+#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_low(pin))
+
+#define MICROPY_HW_NUM_PIN_IRQS (2 * 32)
+#define MICROPY_PY_MACHINE_SDCARD (0)
+
+
+#define MICROPY_HW_UART_NUM (sizeof(uart_index_table) / sizeof(uart_index_table)[0])
+#define MICROPY_HW_UART_INDEX { 0, 1, 2, 3, 4 }
+
+#define IOMUX_TABLE_UART \
+ { IOMUXC_GPIO_10_LPUART1_TXD }, { IOMUXC_GPIO_09_LPUART1_RXD }, \
+ { IOMUXC_GPIO_AD_00_LPUART2_TXD }, { IOMUXC_GPIO_13_LPUART2_RXD }, \
+ { IOMUXC_GPIO_12_LPUART3_TXD }, { IOMUXC_GPIO_11_LPUART3_RXD }, \
+ { IOMUXC_GPIO_AD_02_LPUART4_TXD }, { IOMUXC_GPIO_AD_01_LPUART4_RXD },
+
+#define IOMUX_TABLE_UART_CTS_RTS \
+ { IOMUXC_GPIO_08_LPUART1_CTS_B }, { IOMUXC_GPIO_07_LPUART1_RTS_B }, \
+ { IOMUXC_GPIO_AD_08_LPUART2_CTS_B }, { IOMUXC_GPIO_AD_07_LPUART2_RTS_B }, \
+ { IOMUXC_GPIO_AD_14_LPUART3_CTS_B }, { IOMUXC_GPIO_AD_13_LPUART3_RTS_B }, \
+ { IOMUXC_GPIO_AD_14_LPUART4_CTS_B }, { IOMUXC_GPIO_AD_13_LPUART4_RTS_B },
+
+#define MICROPY_HW_SPI_INDEX { 1, 2 }
+
+#define IOMUX_TABLE_SPI \
+ { IOMUXC_GPIO_AD_06_LPSPI1_SCK }, { IOMUXC_GPIO_AD_05_LPSPI1_PCS0 }, \
+ { IOMUXC_GPIO_AD_04_LPSPI1_SDO }, { IOMUXC_GPIO_AD_03_LPSPI1_SDI }, \
+ { IOMUXC_GPIO_AD_02_LPSPI1_PCS1 }, \
+ { IOMUXC_GPIO_AD_12_LPSPI2_SCK }, { IOMUXC_GPIO_AD_11_LPSPI2_PCS0 }, \
+ { IOMUXC_GPIO_AD_10_LPSPI2_SDO }, { IOMUXC_GPIO_AD_09_LPSPI2_SDI }, \
+ { IOMUXC_GPIO_AD_01_LPSPI2_PCS1 }
+
+#define DMA_REQ_SRC_RX { 0, kDmaRequestMuxLPSPI1Rx, kDmaRequestMuxLPSPI2Rx }
+#define DMA_REQ_SRC_TX { 0, kDmaRequestMuxLPSPI1Tx, kDmaRequestMuxLPSPI2Tx }
+
+// Define mapping hardware I2C # to logical I2C #
+// SDA/SCL HW-I2C Logical I2C
+// SDA1/SCL1 LPI2C1 -> 0
+// SDA2/SCL2 LPI2C2 -> 1
+
+#define MICROPY_HW_I2C_INDEX { 1, 2 }
+
+#define IOMUX_TABLE_I2C \
+ { IOMUXC_GPIO_02_LPI2C1_SCL }, { IOMUXC_GPIO_01_LPI2C1_SDA }, \
+ { IOMUXC_GPIO_AD_08_LPI2C2_SCL }, { IOMUXC_GPIO_AD_07_LPI2C2_SDA },
+
+#define MICROPY_PY_MACHINE_I2S (1)
+#define MICROPY_HW_I2S_NUM (3)
+#define I2S_CLOCK_MUX { 0, kCLOCK_Sai1Mux, 0, kCLOCK_Sai3Mux }
+#define I2S_CLOCK_PRE_DIV { 0, kCLOCK_Sai1PreDiv, 0, kCLOCK_Sai3PreDiv }
+#define I2S_CLOCK_DIV { 0, kCLOCK_Sai1Div, 0, kCLOCK_Sai3Div }
+#define I2S_IOMUXC_GPR_MODE { 0, kIOMUXC_GPR_SAI1MClkOutputDir, 0, kIOMUXC_GPR_SAI3MClkOutputDir }
+#define I2S_DMA_REQ_SRC_RX { 0, kDmaRequestMuxSai1Rx, 0, kDmaRequestMuxSai3Rx }
+#define I2S_DMA_REQ_SRC_TX { 0, kDmaRequestMuxSai1Tx, 0, kDmaRequestMuxSai3Tx }
+#define I2S_AUDIO_PLL_CLOCK (2U)
+
+#define I2S_GPIO(_hwid, _fn, _mode, _pin, _iomux) \
+ { \
+ .hw_id = _hwid, \
+ .fn = _fn, \
+ .mode = _mode, \
+ .name = MP_QSTR_##_pin, \
+ .iomux = {_iomux}, \
+ }
+
+#define I2S_GPIO_MAP \
+ { \
+ I2S_GPIO(1, MCK, TX, GPIO_08, IOMUXC_GPIO_08_SAI1_MCLK), /* pin D8 */ \
+ I2S_GPIO(1, SCK, RX, GPIO_01, IOMUXC_GPIO_01_SAI1_RX_BCLK), /* pin D1 */ \
+ I2S_GPIO(1, WS, RX, GPIO_02, IOMUXC_GPIO_02_SAI1_RX_SYNC), /* pin D2 */ \
+ I2S_GPIO(1, SD, RX, GPIO_03, IOMUXC_GPIO_03_SAI1_RX_DATA00), /* pin D3 */ \
+ I2S_GPIO(1, SCK, TX, GPIO_06, IOMUXC_GPIO_06_SAI1_TX_BCLK), /* pin D6 */ \
+ I2S_GPIO(1, WS, TX, GPIO_07, IOMUXC_GPIO_07_SAI1_TX_SYNC), /* pin D7 */ \
+ I2S_GPIO(1, SD, TX, GPIO_04, IOMUXC_GPIO_04_SAI1_TX_DATA00), /* pin D4 */ \
+ I2S_GPIO(3, SCK, TX, GPIO_SD_01, IOMUXC_GPIO_SD_01_SAI3_TX_BCLK), /* pin SD1 */ \
+ I2S_GPIO(3, WS, TX, GPIO_SD_00, IOMUXC_GPIO_SD_00_SAI3_TX_SYNC), /* pin SD0 */ \
+ I2S_GPIO(3, SD, TX, GPIO_SD_02, IOMUXC_GPIO_SD_02_SAI3_TX_DATA) /* pin SD2 */ \
+ }
diff --git a/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/mpconfigboard.mk b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/mpconfigboard.mk
new file mode 100644
index 0000000000..942012157d
--- /dev/null
+++ b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/mpconfigboard.mk
@@ -0,0 +1,16 @@
+MCU_SERIES = MIMXRT1011
+MCU_VARIANT = MIMXRT1011DAE5A
+
+MICROPY_FLOAT_IMPL = single
+MICROPY_HW_FLASH_TYPE = qspi_nor_flash
+MICROPY_HW_FLASH_SIZE = 0x1000000 # 16MB
+MICROPY_HW_FLASH_CLK = kFlexSpiSerialClk_100MHz
+MICROPY_HW_FLASH_QE_CMD = 0x31
+MICROPY_HW_FLASH_QE_ARG = 0x02
+
+USE_UF2_BOOTLOADER = 1
+
+CFLAGS += -DMICROPY_HW_FLASH_SAMPLE_CLK=kFLEXSPIReadSampleClk_LoopbackInternally
+
+SRC_C += \
+ hal/flexspi_nor_flash.c \
diff --git a/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/pins.csv b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/pins.csv
new file mode 100644
index 0000000000..c3f432e59f
--- /dev/null
+++ b/ports/mimxrt/boards/MAKERDIARY_RT1011_NANO_KIT/pins.csv
@@ -0,0 +1,42 @@
+A0,GPIO_AD_00
+A1,GPIO_AD_01
+A2,GPIO_AD_02
+A3,GPIO_AD_03
+A4,GPIO_AD_04
+A5,GPIO_AD_05
+A6,GPIO_AD_06
+A7,GPIO_AD_07
+A8,GPIO_AD_08
+A9,GPIO_AD_09
+A10,GPIO_AD_10
+A11,GPIO_AD_11
+A14,GPIO_AD_14
+
+D0,GPIO_00
+D1,GPIO_01
+D2,GPIO_02
+D3,GPIO_03
+D4,GPIO_04
+D5,GPIO_05
+D6,GPIO_06
+D7,GPIO_07
+D8,GPIO_08
+D9,GPIO_09
+D10,GPIO_10
+D11,GPIO_11
+D12,GPIO_12
+D13,GPIO_13
+
+SD0,GPIO_SD_00
+SD1,GPIO_SD_01
+SD2,GPIO_SD_02
+SD5,GPIO_SD_05
+# Test pads at the bottom side
+SD3,GPIO_SD_03
+SD4,GPIO_SD_04
+SD12,GPIO_SD_12
+SD13,GPIO_SD_13
+
+LED,GPIO_SD_04
+CLK,GPIO_AD_12
+DIO,GPIO_AD_13