stm32/boards: Add VCC_GND_F407VE board.

This commit is contained in:
Mike Causer 2020-01-13 17:25:01 +11:00 committed by Damien George
parent 9d58d46e0a
commit c24003abec
6 changed files with 331 additions and 0 deletions

View File

@ -0,0 +1,28 @@
#include "storage.h"
#if !MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE
// External SPI flash uses standard SPI interface
STATIC const mp_soft_spi_obj_t soft_spi_bus = {
.delay_half = MICROPY_HW_SOFTSPI_MIN_DELAY,
.polarity = 0,
.phase = 0,
.sck = MICROPY_HW_SPIFLASH_SCK,
.mosi = MICROPY_HW_SPIFLASH_MOSI,
.miso = MICROPY_HW_SPIFLASH_MISO,
};
STATIC mp_spiflash_cache_t spi_bdev_cache;
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*)&soft_spi_bus,
.bus.u_spi.proto = &mp_soft_spi_proto,
.cache = &spi_bdev_cache,
};
spi_bdev_t spi_bdev;
#endif

View File

@ -0,0 +1,7 @@
#include "py/mphal.h"
void VCC_GND_F407VE_board_early_init(void) {
// set SPI flash CS pin high
mp_hal_pin_output(pin_A4);
mp_hal_pin_write(pin_A4, 1);
}

View File

@ -0,0 +1,163 @@
/* This file is part of the MicroPython project, http://micropython.org/
* MIT License; Copyright (c) 2021 Damien P. George
*/
// STM32F407VET6 Mini by VCC-GND Studio
// http://vcc-gnd.com/
// https://item.taobao.com/item.htm?ft=t&id=523361737493
// https://www.aliexpress.com/wholesale?SearchText=STM32F407VET6+Mini
// DFU mode can be accessed by switching BOOT0 DIP ON (towards USB)
#define MICROPY_HW_BOARD_NAME "VCC-GND STM32F407VE"
#define MICROPY_HW_MCU_NAME "STM32F407VE"
#define MICROPY_HW_FLASH_FS_LABEL "VCCGNDF407VE"
// 1 = use internal flash (512 KByte)
// 0 = use external SPI flash
#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (1)
#define MICROPY_HW_HAS_FLASH (1)
#define MICROPY_HW_ENABLE_RNG (1)
#define MICROPY_HW_ENABLE_RTC (1)
#define MICROPY_HW_ENABLE_DAC (1)
#define MICROPY_HW_ENABLE_USB (1)
#define MICROPY_HW_ENABLE_SDCARD (1)
// HSE is 25MHz
#define MICROPY_HW_CLK_PLLM (25) // divide external clock by this to get 1MHz
#define MICROPY_HW_CLK_PLLN (336) // PLL clock in MHz
#define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2) // divide PLL clock by this to get core clock
#define MICROPY_HW_CLK_PLLQ (7) // divide core clock by this to get 48MHz
// The board has a 32kHz crystal for the RTC
#define MICROPY_HW_RTC_USE_LSE (1)
#define MICROPY_HW_RTC_USE_US (0)
// #define MICROPY_HW_RTC_USE_CALOUT (1) // turn on/off PC13 512Hz output
// USART1
#define MICROPY_HW_UART1_TX (pin_A9) // PA9,PB6
#define MICROPY_HW_UART1_RX (pin_A10) // PA10,PB7
// USART2
#define MICROPY_HW_UART2_TX (pin_A2) // PA2,PD5
#define MICROPY_HW_UART2_RX (pin_A3) // PA3,PD6
#define MICROPY_HW_UART2_RTS (pin_A1) // PA1,PD4
#define MICROPY_HW_UART2_CTS (pin_A0) // PA0,PD3
// USART3
#define MICROPY_HW_UART3_TX (pin_D8) // PB10,PC10,PD8
#define MICROPY_HW_UART3_RX (pin_D9) // PB11,PC11,PD9
#define MICROPY_HW_UART3_RTS (pin_D12) // PB14,PD12
#define MICROPY_HW_UART3_CTS (pin_D11) // PB13,PD11
// UART4
#define MICROPY_HW_UART4_TX (pin_A0) // PA0,PC10
#define MICROPY_HW_UART4_RX (pin_A1) // PA1,PC11
// UART5
#define MICROPY_HW_UART5_TX (pin_C12) // PC12
#define MICROPY_HW_UART5_RX (pin_D2) // PD2
// USART6
#define MICROPY_HW_UART6_TX (pin_C6) // PC6,PG14
#define MICROPY_HW_UART6_RX (pin_C7) // PC7,PG9
// I2C buses
#define MICROPY_HW_I2C1_SCL (pin_B6) // PB8,PB6
#define MICROPY_HW_I2C1_SDA (pin_B7) // PB9,PB7
#define MICROPY_HW_I2C2_SCL (pin_B10) // PB10
#define MICROPY_HW_I2C2_SDA (pin_B11) // PB11
#define MICROPY_HW_I2C3_SCL (pin_A8) // PA8
#define MICROPY_HW_I2C3_SDA (pin_C9) // PC9
// AT24C08 EEPROM on I2C1 0x50-0x53
// I2S buses
// I2S2_CK PB13
// I2S2_MCK PC6
// I2S2_SD PB15
// I2S2_WS PB12
// I2S3_CK PB3
// I2S3_MCK PC7
// I2S3_SD PB5
// I2S3_WS PA15
// SPI buses
#define MICROPY_HW_SPI1_NSS (pin_A4) // PA4
#define MICROPY_HW_SPI1_SCK (pin_A5) // PA5,PB3
#define MICROPY_HW_SPI1_MISO (pin_A6) // PA6,PB4
#define MICROPY_HW_SPI1_MOSI (pin_A7) // PA7,PB5
#define MICROPY_HW_SPI2_NSS (pin_B12) // PB12
#define MICROPY_HW_SPI2_SCK (pin_B13) // PB13
#define MICROPY_HW_SPI2_MISO (pin_B14) // PB14
#define MICROPY_HW_SPI2_MOSI (pin_B15) // PB15
#define MICROPY_HW_SPI3_NSS (pin_A15) // PA15
#define MICROPY_HW_SPI3_SCK (pin_B3) // PB3
#define MICROPY_HW_SPI3_MISO (pin_B4) // PB4
#define MICROPY_HW_SPI3_MOSI (pin_B5) // PB5
// CAN buses
#define MICROPY_HW_CAN1_TX (pin_B9) // PB9,PD1,PA12
#define MICROPY_HW_CAN1_RX (pin_B8) // PB8,PD0,PA11
#define MICROPY_HW_CAN2_TX (pin_B13) // PB13
#define MICROPY_HW_CAN2_RX (pin_B12) // PB12
// DAC
// DAC_OUT1 PA4
// DAC_OUT2 PA5
// LEDs
#define MICROPY_HW_LED1 (pin_B9) // blue
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin))
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_high(pin))
// If using external SPI flash
#if !MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE
// The board does not have onboard SPI flash. You need to add an external one.
#define MICROPY_HW_SPIFLASH_SIZE_BITS (4 * 1024 * 1024) // W25X40 - 4 Mbit (512 KByte)
// #define MICROPY_HW_SPIFLASH_SIZE_BITS (32 * 1024 * 1024) // W25Q32 - 32 Mbit (4 MByte)
// #define MICROPY_HW_SPIFLASH_SIZE_BITS (64 * 1024 * 1024) // W25Q64 - 64 Mbit (8 MByte)
// #define MICROPY_HW_SPIFLASH_SIZE_BITS (128 * 1024 * 1024) // W25Q128 - 128 Mbit (16 MByte)
#define MICROPY_HW_SPIFLASH_CS (pin_A4) // also in board_init.c
#define MICROPY_HW_SPIFLASH_SCK (pin_A5)
#define MICROPY_HW_SPIFLASH_MISO (pin_A6)
#define MICROPY_HW_SPIFLASH_MOSI (pin_A7)
#define MICROPY_BOARD_EARLY_INIT VCC_GND_F407VE_board_early_init
void VCC_GND_F407VE_board_early_init(void);
extern const struct _mp_spiflash_config_t spiflash_config;
extern struct _spi_bdev_t spi_bdev;
#define MICROPY_HW_BDEV_IOCTL(op, arg) ( \
(op) == BDEV_IOCTL_NUM_BLOCKS ? (MICROPY_HW_SPIFLASH_SIZE_BITS / 8 / FLASH_BLOCK_SIZE) : \
(op) == BDEV_IOCTL_INIT ? spi_bdev_ioctl(&spi_bdev, (op), (uint32_t)&spiflash_config) : \
spi_bdev_ioctl(&spi_bdev, (op), (arg)) \
)
#define MICROPY_HW_BDEV_READBLOCKS(dest, bl, n) spi_bdev_readblocks(&spi_bdev, (dest), (bl), (n))
#define MICROPY_HW_BDEV_WRITEBLOCKS(src, bl, n) spi_bdev_writeblocks(&spi_bdev, (src), (bl), (n))
#endif
// SD card detect switch
#define MICROPY_HW_SDCARD_DETECT_PIN (pin_A8)
#define MICROPY_HW_SDCARD_DETECT_PULL (GPIO_PULLUP)
#define MICROPY_HW_SDCARD_DETECT_PRESENT (GPIO_PIN_RESET)
// 1 - PC10 - DAT2/RES
// 2 - PC11 - CD/DAT3/CS
// 3 - PD2 - CMD/DI
// 4 - VCC - VDD
// 5 - PC12 - CLK/SCLK
// 6 - GND - VSS
// 7 - PC8 - DAT0/D0
// 8 - PC9 - DAT1/RES
// 9 SW2 - GND
// 10 SW1 - PA8
// USB config
#define MICROPY_HW_USB_FS (1)
// #define MICROPY_HW_USB_VBUS_DETECT_PIN (pin_A9)
// #define MICROPY_HW_USB_OTG_ID_PIN (pin_A10)

View File

@ -0,0 +1,6 @@
MCU_SERIES = f4
CMSIS_MCU = STM32F407xx
AF_FILE = boards/stm32f405_af.csv
LD_FILES = boards/stm32f405.ld boards/common_ifs.ld
TEXT0_ADDR = 0x08000000
TEXT1_ADDR = 0x08020000

View File

@ -0,0 +1,112 @@
P1_1,GND
P1_2,GND
P1_3,VBAT
P1_4,VCC_3V3
P1_5,VIN_5V
P1_6,VIN_5V
P1_7,PE0
P1_8,PE1
P1_9,PE2
P1_10,PE3
P1_11,PE4
P1_12,PE5
P1_13,PE6
P1_14,PC13
P1_15,PC14
P1_16,PC15
P1_17,PC0
P1_18,PC1
P1_19,PC2
P1_20,PC3
P1_21,PA0
P1_22,PA2
P1_23,PA1
P1_24,PA3
P1_25,PA4
P1_26,PA5
P1_27,PA6
P1_28,PA7
P1_29,PC4
P1_30,PC5
P1_31,PB0
P1_32,PB1
P1_33,PB2
P1_34,PE7
P1_35,PE8
P1_36,PE9
P2_1,PE11
P2_2,PE10
P2_3,PE13
P2_4,PE12
P2_5,PE15
P2_6,PE14
P2_7,PB11
P2_8,PB10
P2_9,PB13
P2_10,PB12
P2_11,PB15
P2_12,PB14
P2_13,PD9
P2_14,PD8
P2_15,PD11
P2_16,PD10
P2_17,PD13
P2_18,PD12
P2_19,PD15
P2_20,PD14
P3_1,PC8
P3_2,PC6
P3_3,PC9
P3_4,PC7
P3_5,PA9
P3_6,PA8
P3_7,PA11
P3_8,PA10
P3_9,PA13
P3_10,PA12
P3_11,PA15
P3_12,PA14
P3_13,PC11
P3_14,PC10
P3_15,PC12
P3_16,PD0
P3_17,PD1
P3_18,PD2
P3_19,PD3
P3_20,PD4
P3_21,PD5
P3_22,PD6
P3_23,PD7
P3_24,PB3
P3_25,PB4
P3_26,PB5
P3_27,PB6
P3_28,PB7
P3_29,PB8
P3_30,PB9
P3_31,GND
P3_32,GND
P3_33,VCC_3V3
P3_34,VCC_3V3
P3_35,GND
P3_36,GND
DAC1,PA4
DAC2,PA5
BLUE_LED,PB9
BOOT1,PB2
USB_VBUS,PA9
USB_ID,PA10
USB_DM,PA11
USB_DP,PA12
SWCLK,PA14
SWDIO,PA13
OSC32_IN,PC14
OSC32_OUT,PC15
SD_D0,PC8
SD_D1,PC9
SD_D2,PC10
SD_D3,PC11
SD_CK,PC12
SD_CMD,PD2
SD,PA8
SD_SW,PA8
1 P1_1 GND
2 P1_2 GND
3 P1_3 VBAT
4 P1_4 VCC_3V3
5 P1_5 VIN_5V
6 P1_6 VIN_5V
7 P1_7 PE0
8 P1_8 PE1
9 P1_9 PE2
10 P1_10 PE3
11 P1_11 PE4
12 P1_12 PE5
13 P1_13 PE6
14 P1_14 PC13
15 P1_15 PC14
16 P1_16 PC15
17 P1_17 PC0
18 P1_18 PC1
19 P1_19 PC2
20 P1_20 PC3
21 P1_21 PA0
22 P1_22 PA2
23 P1_23 PA1
24 P1_24 PA3
25 P1_25 PA4
26 P1_26 PA5
27 P1_27 PA6
28 P1_28 PA7
29 P1_29 PC4
30 P1_30 PC5
31 P1_31 PB0
32 P1_32 PB1
33 P1_33 PB2
34 P1_34 PE7
35 P1_35 PE8
36 P1_36 PE9
37 P2_1 PE11
38 P2_2 PE10
39 P2_3 PE13
40 P2_4 PE12
41 P2_5 PE15
42 P2_6 PE14
43 P2_7 PB11
44 P2_8 PB10
45 P2_9 PB13
46 P2_10 PB12
47 P2_11 PB15
48 P2_12 PB14
49 P2_13 PD9
50 P2_14 PD8
51 P2_15 PD11
52 P2_16 PD10
53 P2_17 PD13
54 P2_18 PD12
55 P2_19 PD15
56 P2_20 PD14
57 P3_1 PC8
58 P3_2 PC6
59 P3_3 PC9
60 P3_4 PC7
61 P3_5 PA9
62 P3_6 PA8
63 P3_7 PA11
64 P3_8 PA10
65 P3_9 PA13
66 P3_10 PA12
67 P3_11 PA15
68 P3_12 PA14
69 P3_13 PC11
70 P3_14 PC10
71 P3_15 PC12
72 P3_16 PD0
73 P3_17 PD1
74 P3_18 PD2
75 P3_19 PD3
76 P3_20 PD4
77 P3_21 PD5
78 P3_22 PD6
79 P3_23 PD7
80 P3_24 PB3
81 P3_25 PB4
82 P3_26 PB5
83 P3_27 PB6
84 P3_28 PB7
85 P3_29 PB8
86 P3_30 PB9
87 P3_31 GND
88 P3_32 GND
89 P3_33 VCC_3V3
90 P3_34 VCC_3V3
91 P3_35 GND
92 P3_36 GND
93 DAC1 PA4
94 DAC2 PA5
95 BLUE_LED PB9
96 BOOT1 PB2
97 USB_VBUS PA9
98 USB_ID PA10
99 USB_DM PA11
100 USB_DP PA12
101 SWCLK PA14
102 SWDIO PA13
103 OSC32_IN PC14
104 OSC32_OUT PC15
105 SD_D0 PC8
106 SD_D1 PC9
107 SD_D2 PC10
108 SD_D3 PC11
109 SD_CK PC12
110 SD_CMD PD2
111 SD PA8
112 SD_SW PA8

View File

@ -0,0 +1,15 @@
#ifndef MICROPY_INCLUDED_STM32F4XX_HAL_CONF_H
#define MICROPY_INCLUDED_STM32F4XX_HAL_CONF_H
#include "boards/stm32f4xx_hal_conf_base.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 (100)
#define LSE_STARTUP_TIMEOUT (5000)
#endif // MICROPY_INCLUDED_STM32F4XX_HAL_CONF_H