Skip to content

Commit 689476c

Browse files
robert-hhdpgeorge
authored andcommitted
mimxrt/machine_uart: Add the UART class to the machine module.
The implementation uses the LPUARTx devices. Up to 8 UARTs can be used, given that the pins are accessible. E.g. 8 on Teensy 4.1, 5 on MIMXRT1020_EVK. For Tennsy 4.0 and 4.1 the UART numbers are as printed on the pinout 1..N. The MIMXRT10xx-EVK boards have only one UART named, which gets the number 1. All other UART are assigned to different Pins: MIMXRT1010-EVK: D0/D1 UART 1 D6/D7 UART 2 A0/D4 UART 3 MIMXRT1020-EVK: D0/D1 UART 1 D6/D9 UART 2 D10/D12 UART 3 D14/D15 UART 4 A0/A1 UART 5 MIMXRT1050-EVK, MIMXRT1060-EVK, MIMXRT1064-EVK: D0/D1 UART 1 D7/D6 UART 2 D8/D9 UART 3 A1/A0 UART 4
1 parent d2dcd05 commit 689476c

File tree

15 files changed

+589
-82
lines changed

15 files changed

+589
-82
lines changed

ports/mimxrt/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ SRC_C = \
140140
machine_pin.c \
141141
machine_rtc.c \
142142
machine_timer.c \
143+
machine_uart.c \
143144
mimxrt_flash.c \
144145
modutime.c \
145146
modmachine.c \
@@ -263,6 +264,7 @@ SRC_QSTR += \
263264
machine_pin.c \
264265
machine_rtc.c \
265266
machine_timer.c \
267+
machine_uart.c \
266268
mimxrt_flash.c \
267269
modutime.c \
268270
modmachine.c \

ports/mimxrt/boards/MIMXRT1010_EVK/mpconfigboard.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,17 @@
88
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin))
99
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_low(pin))
1010
#define BOARD_FLASH_CONFIG_HEADER_H "evkmimxrt1010_flexspi_nor_config.h"
11+
12+
// Define mapping logical UART # to hardware UART #
13+
// LPUART1 on D0/D1 -> 1
14+
// LPUART3 on A0/D4 -> 3
15+
// LPUART4 on D6/D7 -> 2
16+
17+
#define MICROPY_HW_UART_NUM (sizeof(uart_index_table) / sizeof(uart_index_table)[0])
18+
#define MICROPY_HW_UART_INDEX { 0, 1, 4, 3 }
19+
20+
#define IOMUX_TABLE_UART \
21+
{ IOMUXC_GPIO_10_LPUART1_TXD }, { IOMUXC_GPIO_09_LPUART1_RXD }, \
22+
{ 0 }, { 0 }, \
23+
{ IOMUXC_GPIO_08_LPUART3_TXD }, { IOMUXC_GPIO_AD_07_LPUART3_RXD }, \
24+
{ IOMUXC_GPIO_AD_02_LPUART4_TXD }, { IOMUXC_GPIO_AD_01_LPUART4_RXD },

ports/mimxrt/boards/MIMXRT1010_EVK/pins.csv

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -34,24 +34,3 @@ PWM_CB,GPIO_05
3434
ENC_A,GPIO_AD_05
3535
ENC_B,GPIO_AD_06
3636
LED_GREEN,GPIO_11
37-
GPIO_01,GPIO_01
38-
GPIO_02,GPIO_02
39-
GPIO_03,GPIO_03
40-
GPIO_04,GPIO_04
41-
GPIO_05,GPIO_05
42-
GPIO_06,GPIO_06
43-
GPIO_08,GPIO_08
44-
GPIO_09,GPIO_09
45-
GPIO_10,GPIO_10
46-
GPIO_11,GPIO_11
47-
GPIO_AD_01,GPIO_AD_01
48-
GPIO_AD_02,GPIO_AD_02
49-
GPIO_AD_03,GPIO_AD_03
50-
GPIO_AD_04,GPIO_AD_04
51-
GPIO_AD_05,GPIO_AD_05
52-
GPIO_AD_06,GPIO_AD_06
53-
GPIO_AD_07,GPIO_AD_07
54-
GPIO_AD_09,GPIO_AD_09
55-
GPIO_AD_10,GPIO_AD_10
56-
GPIO_AD_14,GPIO_AD_14
57-
GPIO_SD_02,GPIO_SD_02

ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,24 @@
99
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin))
1010
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_high(pin))
1111
#define BOARD_FLASH_CONFIG_HEADER_H "evkmimxrt1020_flexspi_nor_config.h"
12+
13+
// Define mapping logical UART # to hardware UART #
14+
// D3/D5 LPUART1 Not usable, Since D3 is blocked.
15+
// D0/D1 LPUART2 -> 1
16+
// D6/D9 LPUART3 -> 2
17+
// D10/D12 LPUART5 -> 3
18+
// D14/D15 LPUART8 -> 4
19+
// A0/A1 LPUART4 -> 5
20+
21+
#define MICROPY_HW_UART_NUM (sizeof(uart_index_table) / sizeof(uart_index_table)[0])
22+
#define MICROPY_HW_UART_INDEX { 0, 2, 3, 5, 8, 4 }
23+
24+
#define IOMUX_TABLE_UART \
25+
{ IOMUXC_GPIO_AD_B0_06_LPUART1_TX }, { IOMUXC_GPIO_AD_B0_07_LPUART1_RX }, \
26+
{ IOMUXC_GPIO_AD_B1_08_LPUART2_TX }, { IOMUXC_GPIO_AD_B1_09_LPUART2_RX }, \
27+
{ IOMUXC_GPIO_AD_B0_14_LPUART3_TX }, { IOMUXC_GPIO_AD_B0_15_LPUART3_RX }, \
28+
{ IOMUXC_GPIO_AD_B1_10_LPUART4_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART4_RX }, \
29+
{ IOMUXC_GPIO_AD_B0_10_LPUART5_TX }, { IOMUXC_GPIO_AD_B0_11_LPUART5_RX }, \
30+
{ 0 }, { 0 }, \
31+
{ 0 }, { 0 }, \
32+
{ IOMUXC_GPIO_SD_B1_02_LPUART8_TX }, { IOMUXC_GPIO_SD_B1_03_LPUART8_RX },

ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,22 @@
88
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin))
99
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_high(pin))
1010
#define BOARD_FLASH_CONFIG_HEADER_H "evkmimxrt1050_flexspi_nor_config.h"
11+
12+
// Define mapping logical UART # to hardware UART #
13+
// LPUART3 on D0/D1 -> 1
14+
// LPUART2 on D7/D6 -> 2
15+
// LPUART6 on D8/D9 -> 3
16+
// LPUART8 on A1/A0 -> 4
17+
18+
#define MICROPY_HW_UART_NUM (sizeof(uart_index_table) / sizeof(uart_index_table)[0])
19+
#define MICROPY_HW_UART_INDEX { 0, 3, 2, 6, 8 }
20+
21+
#define IOMUX_TABLE_UART \
22+
{ 0 }, { 0 }, \
23+
{ IOMUXC_GPIO_AD_B1_02_LPUART2_TX }, { IOMUXC_GPIO_AD_B1_03_LPUART2_RX }, \
24+
{ IOMUXC_GPIO_AD_B1_06_LPUART3_TX }, { IOMUXC_GPIO_AD_B1_07_LPUART3_RX }, \
25+
{ 0 }, { 0 }, \
26+
{ 0 }, { 0 }, \
27+
{ IOMUXC_GPIO_AD_B0_02_LPUART6_TX }, { IOMUXC_GPIO_AD_B0_03_LPUART6_RX }, \
28+
{ 0 }, { 0 }, \
29+
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },

ports/mimxrt/boards/MIMXRT1050_EVK/pins.csv

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,3 @@ SDI,GPIO_SD_B0_03
2929
SDO,GPIO_SD_B0_02
3030
CS,GPIO_SD_B0_01
3131
LED_GREEN,GPIO_AD_B0_09
32-
GPIO_AD_B1_07,GPIO_AD_B1_07
33-
GPIO_AD_B1_06,GPIO_AD_B1_06
34-
GPIO_AD_B0_11,GPIO_AD_B0_11
35-
GPIO_AD_B1_08,GPIO_AD_B1_08
36-
GPIO_AD_B0_09,GPIO_AD_B0_09
37-
GPIO_AD_B0_10,GPIO_AD_B0_10
38-
GPIO_AD_B1_02,GPIO_AD_B1_02
39-
GPIO_AD_B1_03,GPIO_AD_B1_03
40-
GPIO_AD_B0_03,GPIO_AD_B0_03
41-
GPIO_AD_B0_02,GPIO_AD_B0_02
42-
GPIO_SD_B0_01,GPIO_SD_B0_01
43-
GPIO_SD_B0_02,GPIO_SD_B0_02
44-
GPIO_SD_B0_03,GPIO_SD_B0_03
45-
GPIO_SD_B0_00,GPIO_SD_B0_00
46-
GPIO_AD_B1_01,GPIO_AD_B1_01
47-
GPIO_AD_B1_00,GPIO_AD_B1_00
48-
GPIO_AD_B1_10,GPIO_AD_B1_10
49-
GPIO_AD_B1_11,GPIO_AD_B1_11
50-
GPIO_AD_B1_04,GPIO_AD_B1_04
51-
GPIO_AD_B1_05,GPIO_AD_B1_05

ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,22 @@
88
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin))
99
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_high(pin))
1010
#define BOARD_FLASH_CONFIG_HEADER_H "evkmimxrt1060_flexspi_nor_config.h"
11+
12+
// Define mapping logical UART # to hardware UART #
13+
// LPUART3 on D0/D1 -> 1
14+
// LPUART2 on D7/D6 -> 2
15+
// LPUART6 on D8/D9 -> 3
16+
// LPUART8 on A1/A0 -> 4
17+
18+
#define MICROPY_HW_UART_NUM (sizeof(uart_index_table) / sizeof(uart_index_table)[0])
19+
#define MICROPY_HW_UART_INDEX { 0, 3, 2, 6, 8 }
20+
21+
#define IOMUX_TABLE_UART \
22+
{ 0 }, { 0 }, \
23+
{ IOMUXC_GPIO_AD_B1_02_LPUART2_TX }, { IOMUXC_GPIO_AD_B1_03_LPUART2_RX }, \
24+
{ IOMUXC_GPIO_AD_B1_06_LPUART3_TX }, { IOMUXC_GPIO_AD_B1_07_LPUART3_RX }, \
25+
{ 0 }, { 0 }, \
26+
{ 0 }, { 0 }, \
27+
{ IOMUXC_GPIO_AD_B0_02_LPUART6_TX }, { IOMUXC_GPIO_AD_B0_03_LPUART6_RX }, \
28+
{ 0 }, { 0 }, \
29+
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },

ports/mimxrt/boards/MIMXRT1060_EVK/pins.csv

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,3 @@ SDI,GPIO_SD_B0_03
2929
SDO,GPIO_SD_B0_02
3030
CS,GPIO_SD_B0_01
3131
LED_GREEN,GPIO_AD_B0_09
32-
GPIO_AD_B1_07,GPIO_AD_B1_07
33-
GPIO_AD_B1_06,GPIO_AD_B1_06
34-
GPIO_AD_B0_11,GPIO_AD_B0_11
35-
GPIO_AD_B1_08,GPIO_AD_B1_08
36-
GPIO_AD_B0_09,GPIO_AD_B0_09
37-
GPIO_AD_B0_10,GPIO_AD_B0_10
38-
GPIO_AD_B1_02,GPIO_AD_B1_02
39-
GPIO_AD_B1_03,GPIO_AD_B1_03
40-
GPIO_AD_B0_03,GPIO_AD_B0_03
41-
GPIO_AD_B0_02,GPIO_AD_B0_02
42-
GPIO_SD_B0_01,GPIO_SD_B0_01
43-
GPIO_SD_B0_02,GPIO_SD_B0_02
44-
GPIO_SD_B0_03,GPIO_SD_B0_03
45-
GPIO_SD_B0_00,GPIO_SD_B0_00
46-
GPIO_AD_B1_01,GPIO_AD_B1_01
47-
GPIO_AD_B1_00,GPIO_AD_B1_00
48-
GPIO_AD_B1_10,GPIO_AD_B1_10
49-
GPIO_AD_B1_11,GPIO_AD_B1_11
50-
GPIO_AD_B1_04,GPIO_AD_B1_04
51-
GPIO_AD_B1_05,GPIO_AD_B1_05
Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,27 @@
11
#define MICROPY_HW_BOARD_NAME "i.MX RT1064 EVK"
22
#define MICROPY_HW_MCU_NAME "MIMXRT1064DVL6A"
33

4-
54
// MIMXRT1064_EVK has 1 user LED
65
#define MICROPY_HW_LED1_PIN (pin_GPIO_AD_B0_09)
76
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin))
87
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_high(pin))
98
#define BOARD_FLASH_CONFIG_HEADER_H "evkmimxrt1064_flexspi_nor_config.h"
9+
10+
// Define mapping logical UART # to hardware UART #
11+
// LPUART3 on D0/D1 -> 1
12+
// LPUART2 on D7/D6 -> 2
13+
// LPUART6 on D8/D9 -> 3
14+
// LPUART8 on A1/A0 -> 4
15+
16+
#define MICROPY_HW_UART_NUM (sizeof(uart_index_table) / sizeof(uart_index_table)[0])
17+
#define MICROPY_HW_UART_INDEX { 0, 3, 2, 6, 8 }
18+
19+
#define IOMUX_TABLE_UART \
20+
{ 0 }, { 0 }, \
21+
{ IOMUXC_GPIO_AD_B1_02_LPUART2_TX }, { IOMUXC_GPIO_AD_B1_03_LPUART2_RX }, \
22+
{ IOMUXC_GPIO_AD_B1_06_LPUART3_TX }, { IOMUXC_GPIO_AD_B1_07_LPUART3_RX }, \
23+
{ 0 }, { 0 }, \
24+
{ 0 }, { 0 }, \
25+
{ IOMUXC_GPIO_AD_B0_02_LPUART6_TX }, { IOMUXC_GPIO_AD_B0_03_LPUART6_RX }, \
26+
{ 0 }, { 0 }, \
27+
{ IOMUXC_GPIO_AD_B1_10_LPUART8_TX }, { IOMUXC_GPIO_AD_B1_11_LPUART8_RX },

ports/mimxrt/boards/MIMXRT1064_EVK/pins.csv

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,3 @@ SDI,GPIO_SD_B0_03
2929
SDO,GPIO_SD_B0_02
3030
CS,GPIO_SD_B0_01
3131
LED_GREEN,GPIO_AD_B0_09
32-
GPIO_AD_B1_07,GPIO_AD_B1_07
33-
GPIO_AD_B1_06,GPIO_AD_B1_06
34-
GPIO_AD_B0_11,GPIO_AD_B0_11
35-
GPIO_AD_B1_08,GPIO_AD_B1_08
36-
GPIO_AD_B0_09,GPIO_AD_B0_09
37-
GPIO_AD_B0_10,GPIO_AD_B0_10
38-
GPIO_AD_B1_02,GPIO_AD_B1_02
39-
GPIO_AD_B1_03,GPIO_AD_B1_03
40-
GPIO_AD_B0_03,GPIO_AD_B0_03
41-
GPIO_AD_B0_02,GPIO_AD_B0_02
42-
GPIO_SD_B0_01,GPIO_SD_B0_01
43-
GPIO_SD_B0_02,GPIO_SD_B0_02
44-
GPIO_SD_B0_03,GPIO_SD_B0_03
45-
GPIO_SD_B0_00,GPIO_SD_B0_00
46-
GPIO_AD_B1_01,GPIO_AD_B1_01
47-
GPIO_AD_B1_00,GPIO_AD_B1_00
48-
GPIO_AD_B1_10,GPIO_AD_B1_10
49-
GPIO_AD_B1_11,GPIO_AD_B1_11
50-
GPIO_AD_B1_04,GPIO_AD_B1_04
51-
GPIO_AD_B1_05,GPIO_AD_B1_05

0 commit comments

Comments
 (0)