Skip to content

Commit 92d4b51

Browse files
dhylandsdpgeorge
authored andcommitted
stmhal: Add STM32F7DISC and associated changes.
1 parent 7e7fb0b commit 92d4b51

25 files changed

Lines changed: 1084 additions & 120 deletions

stmhal/Makefile

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,13 @@ INC += -I../lib/mp-readline
4444
INC += -I../lib/netutils
4545
INC += -I../lib/timeutils
4646

47-
CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mabi=aapcs-linux -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion
48-
CFLAGS = $(INC) -Wall -Wpointer-arith -Werror -ansi -std=gnu99 -nostdlib $(CFLAGS_MOD) $(CFLAGS_CORTEX_M4) $(COPT)
47+
CFLAGS_CORTEX_M = -mthumb -mabi=aapcs-linux -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion
48+
CFLAGS_MCU_f4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
49+
CFLAGS_MCU_f7 = $(CFLAGS_CORTEX_M) -mtune=cortex-m7 -mcpu=cortex-m7
50+
51+
CFLAGS = $(INC) -Wall -Wpointer-arith -Werror -ansi -std=gnu99 -nostdlib $(CFLAGS_MOD)
52+
CFLAGS += $(CFLAGS_MCU_$(MCU_SERIES))
53+
CFLAGS += $(COPT)
4954
CFLAGS += -Iboards/$(BOARD)
5055
CFLAGS += -DSTM32_HAL_H='<stm32$(MCU_SERIES)xx_hal.h>'
5156

@@ -154,6 +159,7 @@ SRC_C = \
154159
servo.c \
155160
dac.c \
156161
adc.c \
162+
$(wildcard boards/$(BOARD)/*.c)
157163

158164
SRC_O = \
159165
startup_stm32.o \

stmhal/adc.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,11 @@
6262
defined(STM32F411xE)
6363
#define VBAT_DIV (2)
6464
#elif defined(STM32F427xx) || defined(STM32F429xx) || \
65-
defined(STM32F437xx) || defined(STM32F439xx)
65+
defined(STM32F437xx) || defined(STM32F439xx) || \
66+
defined(STM32F746xx)
6667
#define VBAT_DIV (4)
68+
#else
69+
#error Unsupported processor
6770
#endif
6871

6972
/* Core temperature sensor definitions */
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#include STM32_HAL_H
2+
3+
void STM32F7DISC_board_early_init(void) {
4+
GPIO_InitTypeDef GPIO_InitStructure;
5+
6+
__GPIOK_CLK_ENABLE();
7+
8+
// Turn off the backlight. LCD_BL_CTRL = PK3
9+
GPIO_InitStructure.Pin = GPIO_PIN_3;
10+
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
11+
GPIO_InitStructure.Pull = GPIO_PULLUP;
12+
GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
13+
HAL_GPIO_Init(GPIOK, &GPIO_InitStructure);
14+
HAL_GPIO_WritePin(GPIOK, GPIO_PIN_3, GPIO_PIN_RESET);
15+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#define STM32F7DISC
2+
3+
#define MICROPY_HW_BOARD_NAME "F7DISC"
4+
#define MICROPY_HW_MCU_NAME "STM32F746"
5+
6+
#define MICROPY_HW_HAS_SWITCH (1)
7+
#define MICROPY_HW_HAS_SDCARD (0)
8+
#define MICROPY_HW_HAS_MMA7660 (0)
9+
#define MICROPY_HW_HAS_LIS3DSH (0)
10+
#define MICROPY_HW_HAS_LCD (0)
11+
#define MICROPY_HW_ENABLE_RNG (1)
12+
#define MICROPY_HW_ENABLE_RTC (1)
13+
#define MICROPY_HW_ENABLE_TIMER (1)
14+
#define MICROPY_HW_ENABLE_SERVO (0)
15+
#define MICROPY_HW_ENABLE_DAC (0)
16+
#define MICROPY_HW_ENABLE_SPI1 (1)
17+
#define MICROPY_HW_ENABLE_SPI2 (1)
18+
#define MICROPY_HW_ENABLE_SPI3 (0)
19+
#define MICROPY_HW_ENABLE_CAN (1)
20+
21+
#define MICROPY_BOARD_EARLY_INIT STM32F7DISC_board_early_init
22+
void STM32F7DISC_board_early_init(void);
23+
24+
// HSE is 8MHz
25+
#define MICROPY_HW_CLK_PLLM (25)
26+
#define MICROPY_HW_CLK_PLLN (400)
27+
#define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)
28+
#define MICROPY_HW_CLK_PLLQ (8)
29+
30+
#define MICROPY_HW_FLASH_LATENCY FLASH_LATENCY_6
31+
32+
// UART config
33+
#define MICROPY_HW_UART6_PORT (GPIOC)
34+
#define MICROPY_HW_UART6_PINS (GPIO_PIN_6 | GPIO_PIN_7)
35+
#define MICROPY_HW_UART7_PORT (GPIOF)
36+
#define MICROPY_HW_UART7_PINS (GPIO_PIN_6 | GPIO_PIN_7)
37+
38+
#define MICROPY_HW_UART_REPL PYB_UART_6
39+
#define MICROPY_HW_UART_REPL_BAUD 115200
40+
41+
// I2C busses
42+
#define MICROPY_HW_I2C1_SCL (pin_B8)
43+
#define MICROPY_HW_I2C1_SDA (pin_B9)
44+
45+
// USRSW is pulled low. Pressing the button makes the input go high.
46+
#define MICROPY_HW_USRSW_PIN (pin_I11)
47+
#define MICROPY_HW_USRSW_PULL (GPIO_NOPULL)
48+
#define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_RISING)
49+
#define MICROPY_HW_USRSW_PRESSED (1)
50+
51+
// LEDs
52+
#define MICROPY_HW_LED1 (pin_I1) // green
53+
#define MICROPY_HW_LED_OTYPE (GPIO_MODE_OUTPUT_PP)
54+
#define MICROPY_HW_LED_ON(pin) (pin->gpio->BSRR = pin->pin_mask)
55+
#define MICROPY_HW_LED_OFF(pin) (pin->gpio->BSRR = (pin->pin_mask << 16))
56+
57+
// USB config (CN13 - USB OTG FS)
58+
#define MICROPY_HW_USB_VBUS_DETECT_PIN (pin_A9)
59+
#define MICROPY_HW_USB_OTG_ID_PIN (pin_A10)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
MCU_SERIES = f7
2+
AF_FILE = boards/stm32f746_af.csv
3+
LD_FILE = boards/stm32f746.ld

stmhal/boards/STM32F7DISC/pins.csv

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
A0,PA0
2+
A1,PF10
3+
A2,PF9
4+
A3,PF8
5+
A4,PF7
6+
A5,PF6
7+
D0,PC7
8+
D1,PC6
9+
D2,PG6
10+
D3,PB4
11+
D4,PG7
12+
D5,PA8
13+
D6,PH6
14+
D7,PI3
15+
D8,PI2
16+
D9,PA15
17+
D10,PI0
18+
D11,PB15
19+
D12,PB14
20+
D13,PI1
21+
D14,PB9
22+
D15,PB8
23+
LED,PI1
24+
SW,PI11
25+
TP1,PH2
26+
TP2,PI8
27+
TP3,PH15
28+
LCD_BL_CTRL,PK3
29+
USB_VBUS,PA9
30+
USB_ID,PA10
31+
USB_DM,PA11
32+
USB_DP,PA12

0 commit comments

Comments
 (0)