Skip to content

stm32/boards: Add WeAct_H743VI board support. #17766

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions ports/stm32/boards/WeAct_H743VI/bdev.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#include "storage.h"
#include "spi.h"
#include "py/mpconfig.h"

#if !MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE

static const spi_proto_cfg_t spi_bus = {
.spi = &spi_obj[0], // SPI1
.baudrate = 25000000,
.polarity = 0,
.phase = 0,
.bits = 8,
.firstbit = SPI_FIRSTBIT_MSB,
};

#if MICROPY_HW_SPIFLASH_ENABLE_CACHE
static mp_spiflash_cache_t spi_bdev_cache;
#endif

const mp_spiflash_config_t spiflash_config = {
.bus_kind = MP_SPIFLASH_BUS_SPI,
.bus.u_spi.cs = MICROPY_HW_SPIFLASH_CS,

.bus.u_spi.data = (void *)&spi_bus,
.bus.u_spi.proto = &spi_proto,
#if MICROPY_HW_SPIFLASH_ENABLE_CACHE
.cache = &spi_bdev_cache,
#endif
};

spi_bdev_t spi_bdev;

#endif
15 changes: 15 additions & 0 deletions ports/stm32/boards/WeAct_H743VI/board.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"deploy": [
"../deploy.md"
],
"docs": "",
"features": [],
"images": [
"weact_h743vi.jpg"
],
"mcu": "stm32h7",
"product": "WeAct STM32H743 Core Board",
"thumbnail": "",
"url": "",
"vendor": "WeAct Studio"
}
7 changes: 7 additions & 0 deletions ports/stm32/boards/WeAct_H743VI/board_init.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#include "py/mphal.h"

void WeAct_Core_early_init(void) {
// Turn off the USB switch.
mp_hal_pin_output(pyb_pin_OTG_FS_POWER);
mp_hal_pin_low(pyb_pin_OTG_FS_POWER);
}
1 change: 1 addition & 0 deletions ports/stm32/boards/WeAct_H743VI/manifest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include("$(PORT_DIR)/boards/manifest.py")
141 changes: 141 additions & 0 deletions ports/stm32/boards/WeAct_H743VI/mpconfigboard.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
#define MICROPY_HW_BOARD_NAME "WeAct Studio Core"
#define MICROPY_HW_MCU_NAME "STM32H743VI"

#define MICROPY_HW_ENABLE_RTC (1)
#define MICROPY_HW_ENABLE_SERVO (1)
#define MICROPY_HW_ENABLE_RNG (0) // RNG needs proper configuration
#define MICROPY_HW_ENABLE_ADC (1)
#define MICROPY_HW_ENABLE_DAC (1)
#define MICROPY_HW_ENABLE_USB (1)
#define MICROPY_HW_ENABLE_SDCARD (1)
#define MICROPY_HW_HAS_SWITCH (1)
#define MICROPY_HW_HAS_FLASH (1)

#define MICROPY_BOARD_EARLY_INIT WeAct_Core_early_init

// This board has 25MHz HSE.
// The following gives a 480MHz CPU speed.
#define MICROPY_HW_CLK_USE_HSE (1)
#define MICROPY_HW_CLK_PLLM (5)
#define MICROPY_HW_CLK_PLLN (192)
#define MICROPY_HW_CLK_PLLP (2)
#define MICROPY_HW_CLK_PLLQ (20)
#define MICROPY_HW_CLK_PLLR (2)
#define MICROPY_HW_CLK_PLLVCI (RCC_PLL1VCIRANGE_2)
#define MICROPY_HW_CLK_PLLVCO (RCC_PLL1VCOWIDE)
#define MICROPY_HW_CLK_PLLFRAC (0)

// The USB clock is set using PLL3
#define MICROPY_HW_CLK_PLL3M (5)
#define MICROPY_HW_CLK_PLL3N (192)
#define MICROPY_HW_CLK_PLL3P (2)
#define MICROPY_HW_CLK_PLL3Q (20)
#define MICROPY_HW_CLK_PLL3R (2)
#define MICROPY_HW_CLK_PLL3VCI (RCC_PLL3VCIRANGE_2)
#define MICROPY_HW_CLK_PLL3VCO (RCC_PLL3VCOWIDE)
#define MICROPY_HW_CLK_PLL3FRAC (0)

// 3 wait states
#define MICROPY_HW_FLASH_LATENCY FLASH_LATENCY_6

// The board has an external 32kHz crystal attached
#define MICROPY_HW_RTC_USE_LSE (1)

// UART config
#define MICROPY_HW_UART1_TX (pin_B14)
#define MICROPY_HW_UART1_RX (pin_B15)
#define MICROPY_HW_UART2_TX (pin_D5)
#define MICROPY_HW_UART2_RX (pin_D6)
#define MICROPY_HW_UART2_RTS (pin_D4)
#define MICROPY_HW_UART2_CTS (pin_D3)
#define MICROPY_HW_UART3_TX (pin_D8)
#define MICROPY_HW_UART3_RX (pin_D9)
#define MICROPY_HW_UART5_TX (pin_B6)
#define MICROPY_HW_UART5_RX (pin_B12)
#define MICROPY_HW_UART6_TX (pin_C6)
#define MICROPY_HW_UART6_RX (pin_C7)
#define MICROPY_HW_UART7_TX (pin_F7)
#define MICROPY_HW_UART7_RX (pin_F6)
#define MICROPY_HW_UART8_TX (pin_E1)
#define MICROPY_HW_UART8_RX (pin_E0)

#define MICROPY_HW_UART_REPL PYB_UART_3
#define MICROPY_HW_UART_REPL_BAUD 115200

// I2C buses
#define MICROPY_HW_I2C1_SCL (pin_B8)
#define MICROPY_HW_I2C1_SDA (pin_B9)
#define MICROPY_HW_I2C2_SCL (pin_F1)
#define MICROPY_HW_I2C2_SDA (pin_F0)
#define MICROPY_HW_I2C4_SCL (pin_F14)
#define MICROPY_HW_I2C4_SDA (pin_F15)

// SPI buses
#define MICROPY_HW_SPI2_NSS (pin_A11)
#define MICROPY_HW_SPI2_SCK (pin_A9)
#define MICROPY_HW_SPI2_MISO (pin_B14)
#define MICROPY_HW_SPI2_MOSI (pin_C1)
#define MICROPY_HW_SPI3_NSS (pin_A4)
#define MICROPY_HW_SPI3_SCK (pin_B3)
#define MICROPY_HW_SPI3_MISO (pin_B4)
#define MICROPY_HW_SPI3_MOSI (pin_B5)
#define MICROPY_HW_SPI4_NSS (pin_E11)
#define MICROPY_HW_SPI4_SCK (pin_E12)
#define MICROPY_HW_SPI4_MISO (pin_E13)
#define MICROPY_HW_SPI4_MOSI (pin_E14)

// USRSW is pulled low. Pressing the button makes the input go high.
#define MICROPY_HW_USRSW_PIN (pin_C13)
#define MICROPY_HW_USRSW_PULL (GPIO_PULLDOWN)
#define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_RISING)
#define MICROPY_HW_USRSW_PRESSED (1)

// LEDs
#define MICROPY_HW_LED1 (pin_E3) // blue
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin))
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_low(pin))

// USB config
#define MICROPY_HW_USB_FS (1)

// FDCAN bus
#define MICROPY_HW_CAN1_NAME "FDCAN1"
#define MICROPY_HW_CAN1_TX (pin_D1)
#define MICROPY_HW_CAN1_RX (pin_D0)

// SD card detect switch
#define MICROPY_HW_SDCARD_DETECT_PIN (pin_D4)
#define MICROPY_HW_SDCARD_DETECT_PULL (GPIO_PULLUP)
#define MICROPY_HW_SDCARD_DETECT_PRESENT (GPIO_PIN_SET)

// SPI1 is not accessible because SPI flash module is used.
#define MICROPY_HW_SPI1_NSS (pin_D6)
#define MICROPY_HW_SPI1_SCK (pin_B3)
#define MICROPY_HW_SPI1_MISO (pin_B4)
#define MICROPY_HW_SPI1_MOSI (pin_D7)

// External SPI Flash configuration
#define MICROPY_HW_SPI_IS_RESERVED(id) (id == 1)

// Disable internal filesystem to use spiflash.
#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (0)

// 8MB SPI flash
#define MICROPY_HW_SPIFLASH_SIZE_BYTES (8 * 1024 * 1024)

// SPI flash pins
#define MICROPY_HW_SPIFLASH_CS (pyb_pin_FLASH_CS)
#define MICROPY_HW_SPIFLASH_SCK (pyb_pin_FLASH_SCK)
#define MICROPY_HW_SPIFLASH_MOSI (pyb_pin_FLASH_MOSI)
#define MICROPY_HW_SPIFLASH_MISO (pyb_pin_FLASH_MISO)

extern const struct _mp_spiflash_config_t spiflash_config;
extern struct _spi_bdev_t spi_bdev;
#define MICROPY_HW_SPIFLASH_ENABLE_CACHE (1)
#define MICROPY_HW_BDEV_SPIFLASH (&spi_bdev)
#define MICROPY_HW_BDEV_SPIFLASH_CONFIG (&spiflash_config)
#define MICROPY_HW_BDEV_SPIFLASH_SIZE_BYTES (MICROPY_HW_SPIFLASH_SIZE_BITS / 8)
#define MICROPY_HW_BDEV_SPIFLASH_EXTENDED (&spi_bdev) // for extended block protocol
#define MICROPY_HW_SPIFLASH_SIZE_BITS (MICROPY_HW_SPIFLASH_SIZE_BYTES * 8)

void WeAct_Core_early_init(void);
22 changes: 22 additions & 0 deletions ports/stm32/boards/WeAct_H743VI/mpconfigboard.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
USE_MBOOT ?= 0

# MCU settings
MCU_SERIES = h7
CMSIS_MCU = STM32H743xx
MICROPY_FLOAT_IMPL = double
AF_FILE = boards/stm32h743_af.csv

ifeq ($(USE_MBOOT),1)
# When using Mboot everything goes after the bootloader
LD_FILES = boards/stm32h723.ld boards/common_bl.ld
TEXT0_ADDR = 0x08020000
else
# When not using Mboot everything goes at the start of flash
LD_FILES = boards/stm32h723.ld boards/common_basic.ld
TEXT0_ADDR = 0x08000000
endif

# MicroPython settings
MICROPY_VFS_LFS2 = 1

FROZEN_MANIFEST ?= $(BOARD_DIR)/manifest.py
118 changes: 118 additions & 0 deletions ports/stm32/boards/WeAct_H743VI/pins.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
A0,PA0
A1,PA1
A2,PA2
A3,PA3
A4,PA4
A5,PA5
A6,PA6
A7,PA7
A8,PA8
A9,PA9
A10,PA10
A11,PA11
A12,PA12
A15,PA15
B0,PB0
B1,PB1
B2,PB2
B3,PB3
B4,PB4
B5,PB5
B6,PB6
B7,PB7
B8,PB8
B9,PB9
B10,PB10
B11,PB11
B12,PB12
B13,PB13
B14,PB14
B15,PB15
C0,PC0
C1,PC1
C2,PC2
C3,PC3
C4,PC4
C5,PC5
C6,PC6
C7,PC7
C8,PC8
C9,PC9
C10,PC10
C11,PC11
C12,PC12
C13,PC13
D0,PD0
D1,PD1
D2,PD2
D3,PD3
D4,PD4
D5,PD5
D6,PD6
D7,PD7
D8,PD8
D9,PD9
D10,PD10
D11,PD11
D12,PD12
D13,PD13
D14,PD14
D15,PD15
E0,PE0
E1,PE1
E2,PE2
E3,PE3
E4,PE4
E5,PE5
E6,PE6
E7,PE7
E8,PE8
E9,PE9
E10,PE10
E11,PE11
E11,PE11
E12,PE12
E13,PE13
E14,PE14
E15,PE15
DAC1,PA4
DAC2,PA5
LED1,PE3
SW,PC13
I2C1_SDA,PB9
I2C1_SCL,PB8
I2C2_SDA,PF0
I2C2_SCL,PF1
I2C4_SCL,PF14
I2C4_SDA,PF15
SD_D0,PC8
SD_D1,PC9
SD_D2,PC10
SD_D3,PC11
SD_CMD,PD2
SD_CK,PC12
SD_SW,PG2
OTG_FS_POWER,PD10
OTG_FS_OVER_CURRENT,PG7
USB_VBUS,PA9
USB_ID,PA10
USB_DM,PA11
USB_DP,PA12
UART2_TX,PD5
UART2_RX,PD6
UART2_RTS,PD4
UART2_CTS,PD3
UART3_TX,PD8
UART3_RX,PD9
UART5_TX,PB6
UART5_RX,PB12
UART6_TX,PC6
UART6_RX,PC7
UART7_TX,PF7
UART7_RX,PF6
UART8_TX,PE1
UART8_RX,PE0
-FLASH_CS,PD6
-FLASH_SCK,PB3
-FLASH_MISO,PB4
-FLASH_MOSI,PD7
19 changes: 19 additions & 0 deletions ports/stm32/boards/WeAct_H743VI/stm32h7xx_hal_conf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/* This file is part of the MicroPython project, http://micropython.org/
* The MIT License (MIT)
* Copyright (c) 2019 Damien P. George
*/
#ifndef MICROPY_INCLUDED_STM32H7XX_HAL_CONF_H
#define MICROPY_INCLUDED_STM32H7XX_HAL_CONF_H

// Oscillator values in Hz
#define HSE_VALUE (25000000)
#define LSE_VALUE (32768)
#define EXTERNAL_CLOCK_VALUE (12288000)

// Oscillator timeouts in ms
#define HSE_STARTUP_TIMEOUT (5000)
#define LSE_STARTUP_TIMEOUT (5000)

#include "boards/stm32h7xx_hal_conf_base.h"

#endif // MICROPY_INCLUDED_STM32H7XX_HAL_CONF_H
Loading
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