Skip to content

Commit eaf5776

Browse files
committed
ports/mimxrt: Add machine.CAN driver.
Signed-off-by: Kwabena W. Agyeman <kwagyeman@live.com>
1 parent 1dedb65 commit eaf5776

File tree

22 files changed

+1009
-1
lines changed

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 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/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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy