8000 ports/mimxrt: Add machine.CAN driver. · micropython/micropython@0182d4b · GitHub
[go: up one dir, main page]

Skip to content

Commit 0182d4b

Browse files
committed
ports/mimxrt: Add machine.CAN driver.
1 parent 1dedb65 commit 0182d4b

22 files changed

+1009
-1
lines changed

ports/mimxrt/Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ ifeq ($(MICROPY_PY_MACHINE_SDCARD),1)
156156
SRC_HAL_IMX_C += $(MCU_DIR)/drivers/fsl_usdhc.c
157157
endif
158158

159+
ifeq ($(MICROPY_HW_ENABLE_CAN),1)
160+
SRC_HAL_IMX_C += $(MCU_DIR)/drivers/fsl_flexcan.c
161+
endif
162+
159163
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES), MIMXRT1015 MIMXRT1021 MIMXRT1052 MIMXRT1062 MIMXRT1064 MIMXRT1176))
160164
SRC_HAL_IMX_C += \
161165
$(MCU_DIR)/drivers/fsl_qtmr.c \
@@ -195,6 +199,7 @@ SRC_C += \
195199
led.c \
196200
machine_adc.c \
197201
machine_bitstream.c \
202+
machine_can.c \
198203
machine_i2c.c \
199204
machine_i2s.c \
200205
machine_led.c \
@@ -323,6 +328,7 @@ endif
323328
MICROPY_HW_SDRAM_AVAIL ?= 0
324329
MICROPY_HW_SDRAM_SIZE ?= 0
325330
MICROPY_PY_MACHINE_SDCARD ?= 0
331+
MICROPY_HW_ENABLE_CAN ?= 0
326332

327333
# Configure default compiler flags
328334
CFLAGS += \
@@ -343,6 +349,7 @@ CFLAGS += \
343349
-DMICROPY_HW_SDRAM_AVAIL=$(MICROPY_HW_SDRAM_AVAIL) \
344350
-DMICROPY_HW_SDRAM_SIZE=$(MICROPY_HW_SDRAM_SIZE) \
345351
-DMICROPY_PY_MACHINE_SDCARD=$(MICROPY_PY_MACHINE_SDCARD) \
352+
-DMICROPY_HW_ENABLE_CAN=$(MICROPY_HW_ENABLE_CAN) \
346353
-DSPI_RETRY_TIMES=1000000 \
347354
-DUART_RETRY_TIMES=1000000 \
348355
-DXIP_BOOT_HEADER_ENABLE=1 \

ports/mimxrt/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ MIMXRT1064_EVK boards.
88
Features:
99
- REPL over USB VCP
1010
- machine.ADC
11+
- machine.CAN
1112
- machine.I2C
1213
- machine.LED
1314
- machine.Pin
@@ -27,7 +28,7 @@ Features:
2728
Known issues:
2829

2930
TODO:
30-
- More peripherals (Counter, I2S, CAN, etc)
31+
- More peripherals (Counter, I2S, etc)
3132
- More Python options
3233

3334
## Build Instructions

ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@
7777
{ 0 }, { 0 }, \
7878
{ IOMUXC_GPIO_SD_B1_02_LPI2C4_SCL }, { IOMUXC_GPIO_SD_B1_03_LPI2C4_SDA },
7979

80+
#define MICROPY_HW_CAN_INDEX { 1 }
81+
#define MICROPY_HW_NUM_CAN_IRQS (1)
82+
83+
#define IOMUX_TABLE_CAN \
84+
{ IOMUXC_GPIO_SD_B1_00_FLEXCAN1_TX }, { IOMUXC_GPIO_SD_B1_01_FLEXCAN1_RX },
85+
8086
#define MICROPY_PY_MACHINE_I2S (1)
8187
#define MICROPY_HW_I2S_NUM (1)
8288
#define I2S_CLOCK_MUX { 0, kCLOCK_Sai1Mux, kCLOCK_Sai2Mux }

ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MCU_VARIANT = MIMXRT1021DAG5A
33

44
MICROPY_FLOAT_IMPL = double
55
MICROPY_PY_MACHINE_SDCARD = 1
6+
MICROPY_HW_ENABLE_CAN = 1
67
MICROPY_HW_FLASH_TYPE = qspi_nor_flash
78
MICROPY_HW_FLASH_SIZE = 0x800000 # 8MB
89

ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@
6565
{ 0 }, { 0 }, \
6666
{ IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL }, { IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA },
6767

68+
#define MICROPY_HW_CAN_INDEX { 2 }
69+
#define MICROPY_HW_NUM_CAN_IRQS (1)
70+
71+
#define IOMUX_TABLE_CAN \
72+
{ 0 }, { 0 }, \
73+
{ IOMUXC_GPIO_AD_B0_14_FLEXCAN2_TX }, { IOMUXC_GPIO_AD_B0_15_FLEXCAN2_RX },
74+
6875
#define MICROPY_PY_MACHINE_I2S (1)
6976
#define MICROPY_HW_I2S_NUM (1)
7077
#define I2S_CLOCK_MUX { 0, kCLOCK_Sai1Mux, kCLOCK_Sai2Mux }

ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MCU_VARIANT = MIMXRT1052DVL6B
33

44
MICROPY_FLOAT_IMPL = double
55
MICROPY_PY_MACHINE_SDCARD = 1
6+
MICROPY_HW_ENABLE_CAN = 1
67
MICROPY_HW_FLASH_TYPE = qspi_hyper_flash
78
MICROPY_HW_FLASH_SIZE = 0x4000000 # 64MB
89

ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@
6565
{ 0 }, { 0 }, \
6666
{ IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL }, { IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA },
6767

68+
#define MICROPY_HW_CAN_INDEX { 2 }
69+
#define MICROPY_HW_NUM_CAN_IRQS (1)
70+
71+
#define IOMUX_TABLE_CAN \
72+
{ 0 }, { 0 }, \
73+
{ IOMUXC_GPIO_AD_B0_14_FLEXCAN2_TX }, { IOMUXC_GPIO_AD_B0_15_FLEXCAN2_RX },
74+
6875
#define MICROPY_PY_MACHINE_I2S (1)
6976
#define MICROPY_HW_I2S_NUM (1)
7077
#define I2S_CLOCK_MUX { 0, kCLOCK_Sai1Mux, kCLOCK_Sai2Mux }

ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MCU_VARIANT = MIMXRT1062DVJ6A
33

44
MICROPY_FLOAT_IMPL = double
55
MICROPY_PY_MACHINE_SDCARD = 1
6+
MICROPY_HW_ENABLE_CAN = 1
67
MICROPY_HW_FLASH_TYPE = qspi_nor_flash
78
MICROPY_HW_FLASH_SIZE = 0x800000 # 8MB
89

ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line number 10000 Diff line change
@@ -65,6 +65,13 @@
6565
{ 0 }, { 0 }, \
6666
{ IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL }, { IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA },
6767

68+
#define MICROPY_HW_CAN_INDEX { 2 }
69+
#define MICROPY_HW_NUM_CAN_IRQS (1)
70+
71+
#define IOMUX_TABLE_CAN \
72+
{ 0 }, { 0 }, \
73+
{ IOMUXC_GPIO_AD_B0_14_FLEXCAN2_TX }, { IOMUXC_GPIO_AD_B0_15_FLEXCAN2_RX },
74+
6875
#define MICROPY_PY_MACHINE_I2S (1)
6976
#define MICROPY_HW_I2S_NUM (1)
7077
#define I2S_CLOCK_MUX { 0, kCLOCK_Sai1Mux, kCLOCK_Sai2Mux }

ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MCU_VARIANT = MIMXRT1064DVL6A
33

44
MICROPY_FLOAT_IMPL = double
55
MICROPY_PY_MACHINE_SDCARD = 1
6+
MICROPY_HW_ENABLE_CAN = 1
67
MICROPY_HW_FLASH_TYPE = internal
78
MICROPY_HW_FLASH_SIZE = 0x400000 # 4MB
89

ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,14 @@
104104
{ IOMUXC_GPIO_LPSR_05_LPI2C5_SCL }, { IOMUXC_GPIO_LPSR_04_LPI2C5_SDA }, \
105105
{ IOMUXC_GPIO_LPSR_11_LPI2C6_SCL }, { IOMUXC_GPIO_LPSR_10_LPI2C6_SDA },
106106

107+
#define MICROPY_HW_CAN_INDEX { 1, 3 }
108+
#define MICROPY_HW_NUM_CAN_IRQS (2)
109+
110+
#define IOMUX_TABLE_CAN \
111+
{ IOMUXC_GPIO_AD_06_FLEXCAN1_TX }, { IOMUXC_GPIO_AD_07_FLEXCAN1_RX }, \
112+
{ 0 }, { 0 }, \
113+
{ IOMUXC_GPIO_LPSR_00_FLEXCAN3_TX }, { IOMUXC_GPIO_LPSR_01_FLEXCAN3_RX },
114+
107115
#define MICROPY_PY_MACHINE_I2S (1)
108116
#define MICROPY_HW_I2S_NUM (1)
109117
#define I2S_CLOCK_MUX { 0, kCLOCK_Root_Sai1, kCLOCK_Root_Sai2, kCLOCK_Root_Sai3, kCLOCK_Root_Sai4 }

ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ MCU_CORE = _cm7
44

55
MICROPY_FLOAT_IMPL = double
66
MICROPY_PY_MACHINE_SDCARD = 1
7+
MICROPY_HW_ENABLE_CAN = 1
78
MICROPY_HW_FLASH_TYPE ?= qspi_nor_flash
89
MICROPY_HW_FLASH_SIZE ?= 0x1000000 # 16MB
910
MICROPY_HW_FLASH_RESERVED ?= 0x100000 # 1MB CM4 Code address space

ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@
7777
{ IOMUXC_GPIO_B0_04_LPI2C2_SCL }, { IOMUXC_GPIO_B0_05_LPI2C2_SDA }, \
7878
{ IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL }, { IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA }
7979

80+
#define MICROPY_HW_CAN_INDEX { 2 }
81+
#define MICROPY_HW_NUM_CAN_IRQS (1)
82+
83+
#define IOMUX_TABLE_CAN \
84+
{ 0 }, { 0 }, \
85+
{ IOMUXC_GPIO_AD_B0_14_FLEXCAN2_TX }, { IOMUXC_GPIO_AD_B0_15_FLEXCAN2_RX },
86+
8087
#define MICROPY_PY_MACHINE_I2S (1)
8188
#define MICROPY_HW_I2S_NUM (1)
8289
#define I2S_CLOCK_MUX { 0, kCLOCK_Sai1Mux }

ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MCU_VARIANT = MIMXRT1052DVL6B
33

44
MICROPY_FLOAT_IMPL = double
55
MICROPY_PY_MACHINE_SDCARD = 1
6+
MICROPY_HW_ENABLE_CAN = 1
67
MICROPY_HW_FLASH_TYPE = qspi_nor_flash
78
MICROPY_HW_FLASH_SIZE = 0x800000 # 8MB
89

ports/mimxrt/boards/TEENSY40/mpconfigboard.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,13 @@
6868
{ IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL }, { IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA }, \
6969
{ IOMUXC_GPIO_AD_B0_12_LPI2C4_SCL }, { IOMUXC_GPIO_AD_B0_13_LPI2C4_SDA },
7070

71+
#define MICROPY_HW_CAN_INDEX { 1, 2 }
72+
#define MICROPY_HW_NUM_CAN_IRQS (2)
73+
74+
#define IOMUX_TABLE_CAN \
75+
{ IOMUXC_GPIO_B0_02_FLEXCAN1_TX }, { IOMUXC_GPIO_B0_03_FLEXCAN1_RX }, \
76+
{ IOMUXC_GPIO_AD_B0_02_FLEXCAN2_TX }, { IOMUXC_GPIO_AD_B0_03_FLEXCAN2_RX },
77+
7178
#define MICROPY_PY_MACHINE_I2S (1)
7279
#define MICROPY_HW_I2S_NUM (2)
7380
#define I2S_CLOCK_MUX { 0, kCLOCK_Sai1Mux, kCLOCK_Sai2Mux }

ports/mimxrt/boards/TEENSY40/mpconfigboard.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MCU_VARIANT = MIMXRT1062DVJ6A
33

44
MICROPY_FLOAT_IMPL = double
55
MICROPY_PY_MACHINE_SDCARD = 1
6+
MICROPY_HW_ENABLE_CAN = 1
67
MICROPY_HW_FLASH_TYPE = qspi_nor_flash
78
MICROPY_HW_FLASH_SIZE = 0x200000 # 2MB
89
MICROPY_HW_FLASH_RESERVED ?= 0x1000 # 4KB

ports/mimxrt/boards/TEENSY41/mpconfigboard.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,14 @@
7070
{ IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL }, { IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA }, \
7171
{ IOMUXC_GPIO_AD_B0_12_LPI2C4_SCL }, { IOMUXC_GPIO_AD_B0_13_LPI2C4_SDA },
7272

73+
#define MICROPY_HW_CAN_INDEX { 1, 2, 3 }
74+
#define MICROPY_HW_NUM_CAN_IRQS (3)
75+
76+
#define IOMUX_TABLE_CAN \
77+
{ IOMUXC_GPIO_B0_02_FLEXCAN1_TX }, { IOMUXC_GPIO_B0_03_FLEXCAN1_RX }, \
78+
{ IOMUXC_GPIO_AD_B0_02_FLEXCAN2_TX }, { IOMUXC_GPIO_AD_B0_03_FLEXCAN2_RX }, \
79+
{ IOMUXC_GPIO_EMC_36_FLEXCAN3_TX }, { IOMUXC_GPIO_EMC_37_FLEXCAN3_RX },
80+
7381
#define MICROPY_PY_MACHINE_I2S (1)
7482
#define MICROPY_HW_I2S_NUM (2)
7583
#define I2S_CLOCK_MUX { 0, kCLOCK_Sai1Mux, kCLOCK_Sai2Mux }

ports/mimxrt/boards/TEENSY41/mpconfigboard.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MCU_VARIANT = MIMXRT1062DVJ6A
33

44
MICROPY_FLOAT_IMPL = double
55
MICROPY_PY_MACHINE_SDCARD = 1
6+
MICROPY_HW_ENABLE_CAN = 1
67
MICROPY_HW_FLASH_TYPE = qspi_nor_flash
78
MICROPY_HW_FLASH_SIZE = 0x800000 # 8MB
89
MICROPY_HW_FLASH_RESERVED ?= 0x1000 # 4KB

0 commit comments

Comments
 (0)
0