Skip to content

Commit 00d95cb

Browse files
committed
Added max32690 EVKIT board & changed APARD board to apard32690
1 parent 3f2e39e commit 00d95cb

9 files changed

Lines changed: 270 additions & 0 deletions

File tree

File renamed without changes.
File renamed without changes.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2024 Brandon Hurst, Analog Devices, Inc
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "supervisor/board.h"
8+
#include "supervisor/port.h"
9+
#include "mpconfigboard.h"
10+
#include "max32_port.h"
11+
12+
// Board-level setup for MAX32690
13+
// clang-format off
14+
const mxc_gpio_cfg_t pb_pin[] = {
15+
{ MXC_GPIO4, MXC_GPIO_PIN_0, MXC_GPIO_FUNC_IN, MXC_GPIO_PAD_NONE, MXC_GPIO_VSSEL_VDDIOH, MXC_GPIO_DRVSTR_0},
16+
};
17+
const int num_pbs = (sizeof(pb_pin) / sizeof(mxc_gpio_cfg_t));
18+
19+
const mxc_gpio_cfg_t led_pin[] = {
20+
{ MXC_GPIO0, MXC_GPIO_PIN_14, MXC_GPIO_FUNC_OUT, MXC_GPIO_PAD_NONE, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
21+
{ MXC_GPIO2, MXC_GPIO_PIN_12, MXC_GPIO_FUNC_OUT, MXC_GPIO_PAD_NONE, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
22+
};
23+
const int num_leds = (sizeof(led_pin) / sizeof(mxc_gpio_cfg_t));
24+
// clang-format on
25+
26+
// DEFAULT: Using the weak-defined supervisor/shared/board.c functions
27+
28+
/***** OPTIONAL BOARD-SPECIFIC FUNCTIONS from supervisor/board.h *****/
29+
// Returns true if the user initiates safe mode in a board specific way.
30+
// Also add BOARD_USER_SAFE_MODE in mpconfigboard.h to explain the board specific
31+
// way.
32+
// bool board_requests_safe_mode(void);
33+
34+
volatile uint32_t system_ticks = 0;
35+
36+
void SysTick_Handler(void) {
37+
system_ticks++;
38+
}
39+
40+
uint32_t board_millis(void) {
41+
return system_ticks;
42+
}
43+
44+
// Initializes board related state once on start up.
45+
void board_init(void) {
46+
// 1ms tick timer
47+
SysTick_Config(SystemCoreClock / 1000);\
48+
49+
// Enable GPIO (enables clocks + common init for ports)
50+
for (int i = 0; i < MXC_CFG_GPIO_INSTANCES; i++){
51+
MXC_GPIO_Init(0x1 << i);
52+
}
53+
54+
// Init Board LEDs
55+
/* setup GPIO for the LED */
56+
for (int i = 0; i < num_leds; i++) {
57+
// Set the output value
58+
MXC_GPIO_OutClr(led_pin[i].port, led_pin[i].mask);
59+
MXC_GPIO_Config(&led_pin[i]);
60+
}
61+
62+
// Turn on one LED to indicate Sign of Life
63+
MXC_GPIO_OutSet(led_pin[2].port, led_pin[2].mask);
64+
}
65+
66+
// Reset the state of off MCU components such as neopixels.
67+
// void reset_board(void);
68+
69+
// Deinit the board. This should put the board in deep sleep durable, low power
70+
// state. It should not prevent the user access method from working (such as
71+
// disabling USB, BLE or flash) because CircuitPython may continue to run.
72+
// void board_deinit(void);
73+
74+
/*******************************************************************/
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
4+
// SPDX-FileCopyrightText: Copyright (c) 2024 Brandon Hurst, Analog Devices Inc.
5+
//
6+
// SPDX-License-Identifier: MIT
7+
8+
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.
9+
// This file is part of the CircuitPython project: https://circuitpython.org
10+
//
11+
// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke
12+
// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries
13+
//
14+
// SPDX-License-Identifier: MIT
15+
16+
#pragma once
17+
18+
#define MICROPY_HW_BOARD_NAME "MAX32690 EvKit"
19+
#define MICROPY_HW_MCU_NAME "max32690"
20+
21+
#define FLASH_SIZE (0x300000) // 3MiB
22+
#define FLASH_PAGE_SIZE (0x4000) // 16384 byte pages (16 KiB)
23+
24+
#define BOARD_HAS_CRYSTAL 1
25+
#define NUM_GPIO_PORTS 5
26+
#define CONSOLE_UART MXC_UART2
27+
28+
// #if INTERNAL_FLASH_FILESYSTEM
29+
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_START_ADDR (0x102E0000) // for MAX32690
30+
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE (128 * 1024) // 64K
31+
32+
#define MAX32_FLASH_SIZE 0x300000 // 3 MiB
33+
#define INTERNAL_FLASH_FILESYSTEM_SIZE CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE
34+
#define INTERNAL_FLASH_FILESYSTEM_START_ADDR 0x102E0000 // Load into the last MiB of code/data storage
35+
36+
// #else
37+
// #define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE (0)
38+
// #endif
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# This file is part of the CircuitPython project: https://circuitpython.org
2+
#
3+
# SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
4+
# SPDX-FileCopyrightText: Copyright (c) 2024 Brandon Hurst, Analog Devices, Inc
5+
#
6+
# SPDX-License-Identifier: MIT
7+
8+
MCU_SERIES=max32
9+
MCU_VARIANT=max32690
10+
11+
INTERNAL_FLASH_FILESYSTEM=1
12+
# FLASH: 0x10000000 to 0x10300000 (ARM)
13+
# SRAM: 0x20000000 to 0x20100000
14+
15+
#### USB CONFIGURATION
16+
# Use 0x0456 for Analog Devices, Inc.; 0B6A for Maxim
17+
USB_VID=0x0456
18+
# USB_VID=0x0B6A
19+
USB_PID=0x003C
20+
USB_MANUFACTURER="Analog Devices, Inc."
21+
USB_PRODUCT="MAX32690 EvKit"
22+
USB_HIGHSPEED=1
23+
24+
# NOTE: MAX32 devices do not support IN/OUT pairs on the same EP
25+
USB_NUM_ENDPOINT_PAIRS=12
26+
###
27+
28+
# define UID len for memory safety (buffer gets passed as a raw ptr)
29+
COMMON_HAL_MCU_PROCESSOR_UID_LENGTH=30
30+
31+
# NOTE: Not implementing external flash for now
32+
# CFLAGS+=-DEXT_FLASH_MX25
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
4+
// SPDX-FileCopyrightText: Copyright (c) 2024 Brandon Hurst, Analog Devices, Inc.
5+
//
6+
// SPDX-License-Identifier: MIT
7+
8+
#include "shared-bindings/board/__init__.h"
9+
10+
static const mp_rom_map_elem_t board_module_globals_table[] = {
11+
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
12+
//P0
13+
{ MP_ROM_QSTR(MP_QSTR_P0_00), MP_ROM_PTR(&pin_P0_00) },
14+
{ MP_ROM_QSTR(MP_QSTR_P0_01), MP_ROM_PTR(&pin_P0_01) },
15+
{ MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) },
16+
{ MP_ROM_QSTR(MP_QSTR_P0_03), MP_ROM_PTR(&pin_P0_03) },
17+
{ MP_ROM_QSTR(MP_QSTR_P0_04), MP_ROM_PTR(&pin_P0_04) },
18+
{ MP_ROM_QSTR(MP_QSTR_P0_05), MP_ROM_PTR(&pin_P0_05) },
19+
{ MP_ROM_QSTR(MP_QSTR_P0_06), MP_ROM_PTR(&pin_P0_06) },
20+
{ MP_ROM_QSTR(MP_QSTR_P0_07), MP_ROM_PTR(&pin_P0_07) },
21+
{ MP_ROM_QSTR(MP_QSTR_P0_08), MP_ROM_PTR(&pin_P0_08) },
22+
{ MP_ROM_QSTR(MP_QSTR_P0_09), MP_ROM_PTR(&pin_P0_09) },
23+
{ MP_ROM_QSTR(MP_QSTR_P0_10), MP_ROM_PTR(&pin_P0_10) },
24+
{ MP_ROM_QSTR(MP_QSTR_P0_11), MP_ROM_PTR(&pin_P0_11) },
25+
{ MP_ROM_QSTR(MP_QSTR_P0_12), MP_ROM_PTR(&pin_P0_12) },
26+
{ MP_ROM_QSTR(MP_QSTR_P0_13), MP_ROM_PTR(&pin_P0_13) },
27+
{ MP_ROM_QSTR(MP_QSTR_P0_14), MP_ROM_PTR(&pin_P0_14) },
28+
{ MP_ROM_QSTR(MP_QSTR_P0_15), MP_ROM_PTR(&pin_P0_15) },
29+
{ MP_ROM_QSTR(MP_QSTR_P0_16), MP_ROM_PTR(&pin_P0_16) },
30+
{ MP_ROM_QSTR(MP_QSTR_P0_17), MP_ROM_PTR(&pin_P0_17) },
31+
{ MP_ROM_QSTR(MP_QSTR_P0_18), MP_ROM_PTR(&pin_P0_18) },
32+
{ MP_ROM_QSTR(MP_QSTR_P0_19), MP_ROM_PTR(&pin_P0_19) },
33+
{ MP_ROM_QSTR(MP_QSTR_P0_20), MP_ROM_PTR(&pin_P0_20) },
34+
{ MP_ROM_QSTR(MP_QSTR_P0_21), MP_ROM_PTR(&pin_P0_21) },
35+
{ MP_ROM_QSTR(MP_QSTR_P0_22), MP_ROM_PTR(&pin_P0_22) },
36+
{ MP_ROM_QSTR(MP_QSTR_P0_23), MP_ROM_PTR(&pin_P0_23) },
37+
{ MP_ROM_QSTR(MP_QSTR_P0_24), MP_ROM_PTR(&pin_P0_24) },
38+
{ MP_ROM_QSTR(MP_QSTR_P0_25), MP_ROM_PTR(&pin_P0_25) },
39+
{ MP_ROM_QSTR(MP_QSTR_P0_26), MP_ROM_PTR(&pin_P0_26) },
40+
{ MP_ROM_QSTR(MP_QSTR_P0_27), MP_ROM_PTR(&pin_P0_27) },
41+
{ MP_ROM_QSTR(MP_QSTR_P0_28), MP_ROM_PTR(&pin_P0_28) },
42+
{ MP_ROM_QSTR(MP_QSTR_P0_29), MP_ROM_PTR(&pin_P0_29) },
43+
{ MP_ROM_QSTR(MP_QSTR_P0_30), MP_ROM_PTR(&pin_P0_30) },
44+
{ MP_ROM_QSTR(MP_QSTR_P0_31), MP_ROM_PTR(&pin_P0_31) },
45+
//P1
46+
{ MP_ROM_QSTR(MP_QSTR_P1_00), MP_ROM_PTR(&pin_P1_00) },
47+
{ MP_ROM_QSTR(MP_QSTR_P1_01), MP_ROM_PTR(&pin_P1_01) },
48+
{ MP_ROM_QSTR(MP_QSTR_P1_02), MP_ROM_PTR(&pin_P1_02) },
49+
{ MP_ROM_QSTR(MP_QSTR_P1_03), MP_ROM_PTR(&pin_P1_03) },
50+
{ MP_ROM_QSTR(MP_QSTR_P1_04), MP_ROM_PTR(&pin_P1_04) },
51+
{ MP_ROM_QSTR(MP_QSTR_P1_05), MP_ROM_PTR(&pin_P1_05) },
52+
{ MP_ROM_QSTR(MP_QSTR_P1_06), MP_ROM_PTR(&pin_P1_06) },
53+
{ MP_ROM_QSTR(MP_QSTR_P1_07), MP_ROM_PTR(&pin_P1_07) },
54+
{ MP_ROM_QSTR(MP_QSTR_P1_08), MP_ROM_PTR(&pin_P1_08) },
55+
{ MP_ROM_QSTR(MP_QSTR_P1_09), MP_ROM_PTR(&pin_P1_09) },
56+
{ MP_ROM_QSTR(MP_QSTR_P1_10), MP_ROM_PTR(&pin_P1_10) },
57+
{ MP_ROM_QSTR(MP_QSTR_P1_11), MP_ROM_PTR(&pin_P1_11) },
58+
{ MP_ROM_QSTR(MP_QSTR_P1_12), MP_ROM_PTR(&pin_P1_12) },
59+
{ MP_ROM_QSTR(MP_QSTR_P1_13), MP_ROM_PTR(&pin_P1_13) },
60+
{ MP_ROM_QSTR(MP_QSTR_P1_14), MP_ROM_PTR(&pin_P1_14) },
61+
{ MP_ROM_QSTR(MP_QSTR_P1_15), MP_ROM_PTR(&pin_P1_15) },
62+
{ MP_ROM_QSTR(MP_QSTR_P1_16), MP_ROM_PTR(&pin_P1_16) },
63+
{ MP_ROM_QSTR(MP_QSTR_P1_17), MP_ROM_PTR(&pin_P1_17) },
64+
{ MP_ROM_QSTR(MP_QSTR_P1_18), MP_ROM_PTR(&pin_P1_18) },
65+
{ MP_ROM_QSTR(MP_QSTR_P1_19), MP_ROM_PTR(&pin_P1_19) },
66+
{ MP_ROM_QSTR(MP_QSTR_P1_20), MP_ROM_PTR(&pin_P1_20) },
67+
{ MP_ROM_QSTR(MP_QSTR_P1_21), MP_ROM_PTR(&pin_P1_21) },
68+
{ MP_ROM_QSTR(MP_QSTR_P1_22), MP_ROM_PTR(&pin_P1_22) },
69+
{ MP_ROM_QSTR(MP_QSTR_P1_23), MP_ROM_PTR(&pin_P1_23) },
70+
{ MP_ROM_QSTR(MP_QSTR_P1_24), MP_ROM_PTR(&pin_P1_24) },
71+
{ MP_ROM_QSTR(MP_QSTR_P1_25), MP_ROM_PTR(&pin_P1_25) },
72+
{ MP_ROM_QSTR(MP_QSTR_P1_26), MP_ROM_PTR(&pin_P1_26) },
73+
{ MP_ROM_QSTR(MP_QSTR_P1_27), MP_ROM_PTR(&pin_P1_27) },
74+
{ MP_ROM_QSTR(MP_QSTR_P1_28), MP_ROM_PTR(&pin_P1_28) },
75+
{ MP_ROM_QSTR(MP_QSTR_P1_29), MP_ROM_PTR(&pin_P1_29) },
76+
{ MP_ROM_QSTR(MP_QSTR_P1_30), MP_ROM_PTR(&pin_P1_30) },
77+
{ MP_ROM_QSTR(MP_QSTR_P1_31), MP_ROM_PTR(&pin_P1_31) },
78+
//P2
79+
{ MP_ROM_QSTR(MP_QSTR_P2_00), MP_ROM_PTR(&pin_P2_00) },
80+
{ MP_ROM_QSTR(MP_QSTR_P2_01), MP_ROM_PTR(&pin_P2_01) },
81+
{ MP_ROM_QSTR(MP_QSTR_P2_02), MP_ROM_PTR(&pin_P2_02) },
82+
{ MP_ROM_QSTR(MP_QSTR_P2_03), MP_ROM_PTR(&pin_P2_03) },
83+
{ MP_ROM_QSTR(MP_QSTR_P2_04), MP_ROM_PTR(&pin_P2_04) },
84+
{ MP_ROM_QSTR(MP_QSTR_P2_05), MP_ROM_PTR(&pin_P2_05) },
85+
{ MP_ROM_QSTR(MP_QSTR_P2_06), MP_ROM_PTR(&pin_P2_06) },
86+
{ MP_ROM_QSTR(MP_QSTR_P2_07), MP_ROM_PTR(&pin_P2_07) },
87+
{ MP_ROM_QSTR(MP_QSTR_P2_08), MP_ROM_PTR(&pin_P2_08) },
88+
{ MP_ROM_QSTR(MP_QSTR_P2_09), MP_ROM_PTR(&pin_P2_09) },
89+
{ MP_ROM_QSTR(MP_QSTR_P2_10), MP_ROM_PTR(&pin_P2_10) },
90+
{ MP_ROM_QSTR(MP_QSTR_P2_11), MP_ROM_PTR(&pin_P2_11) },
91+
{ MP_ROM_QSTR(MP_QSTR_P2_12), MP_ROM_PTR(&pin_P2_12) },
92+
{ MP_ROM_QSTR(MP_QSTR_P2_13), MP_ROM_PTR(&pin_P2_13) },
93+
{ MP_ROM_QSTR(MP_QSTR_P2_14), MP_ROM_PTR(&pin_P2_14) },
94+
{ MP_ROM_QSTR(MP_QSTR_P2_15), MP_ROM_PTR(&pin_P2_15) },
95+
{ MP_ROM_QSTR(MP_QSTR_P2_16), MP_ROM_PTR(&pin_P2_16) },
96+
{ MP_ROM_QSTR(MP_QSTR_P2_17), MP_ROM_PTR(&pin_P2_17) },
97+
{ MP_ROM_QSTR(MP_QSTR_P2_18), MP_ROM_PTR(&pin_P2_18) },
98+
{ MP_ROM_QSTR(MP_QSTR_P2_19), MP_ROM_PTR(&pin_P2_19) },
99+
{ MP_ROM_QSTR(MP_QSTR_P2_20), MP_ROM_PTR(&pin_P2_20) },
100+
{ MP_ROM_QSTR(MP_QSTR_P2_21), MP_ROM_PTR(&pin_P2_21) },
101+
{ MP_ROM_QSTR(MP_QSTR_P2_22), MP_ROM_PTR(&pin_P2_22) },
102+
{ MP_ROM_QSTR(MP_QSTR_P2_23), MP_ROM_PTR(&pin_P2_23) },
103+
{ MP_ROM_QSTR(MP_QSTR_P2_24), MP_ROM_PTR(&pin_P2_24) },
104+
{ MP_ROM_QSTR(MP_QSTR_P2_25), MP_ROM_PTR(&pin_P2_25) },
105+
{ MP_ROM_QSTR(MP_QSTR_P2_26), MP_ROM_PTR(&pin_P2_26) },
106+
{ MP_ROM_QSTR(MP_QSTR_P2_27), MP_ROM_PTR(&pin_P2_27) },
107+
{ MP_ROM_QSTR(MP_QSTR_P2_28), MP_ROM_PTR(&pin_P2_28) },
108+
{ MP_ROM_QSTR(MP_QSTR_P2_29), MP_ROM_PTR(&pin_P2_29) },
109+
{ MP_ROM_QSTR(MP_QSTR_P2_30), MP_ROM_PTR(&pin_P2_30) },
110+
{ MP_ROM_QSTR(MP_QSTR_P2_31), MP_ROM_PTR(&pin_P2_31) },
111+
//P3
112+
{ MP_ROM_QSTR(MP_QSTR_P3_00), MP_ROM_PTR(&pin_P3_00) },
113+
{ MP_ROM_QSTR(MP_QSTR_P3_01), MP_ROM_PTR(&pin_P3_01) },
114+
{ MP_ROM_QSTR(MP_QSTR_P3_02), MP_ROM_PTR(&pin_P3_02) },
115+
{ MP_ROM_QSTR(MP_QSTR_P3_03), MP_ROM_PTR(&pin_P3_03) },
116+
{ MP_ROM_QSTR(MP_QSTR_P3_04), MP_ROM_PTR(&pin_P3_04) },
117+
{ MP_ROM_QSTR(MP_QSTR_P3_05), MP_ROM_PTR(&pin_P3_05) },
118+
{ MP_ROM_QSTR(MP_QSTR_P3_06), MP_ROM_PTR(&pin_P3_06) },
119+
{ MP_ROM_QSTR(MP_QSTR_P3_07), MP_ROM_PTR(&pin_P3_07) },
120+
{ MP_ROM_QSTR(MP_QSTR_P3_08), MP_ROM_PTR(&pin_P3_08) },
121+
{ MP_ROM_QSTR(MP_QSTR_P3_09), MP_ROM_PTR(&pin_P3_09) },
122+
//P4
123+
{ MP_ROM_QSTR(MP_QSTR_P4_00), MP_ROM_PTR(&pin_P4_00) },
124+
{ MP_ROM_QSTR(MP_QSTR_P4_01), MP_ROM_PTR(&pin_P4_01) },
125+
};
126+
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

0 commit comments

Comments
 (0)