Commit 2a791170 authored by Chris Mason's avatar Chris Mason Committed by Damien George

stm32/boards: Add NUCLEO_F413ZH board configuration.

The alternate function pin allocations are different to other NUCLEO-144
boards.  This is because the STM32F413 has a very high peripheral count:
10x UART, 5x SPI, 3x I2C, 3x CAN.  The pinout was chosen to expose all
these devices on separate pins except CAN3 which shares a pin with UART1
and SPI1 which shares pins with DAC.
parent 1b956ec8
#define MICROPY_HW_BOARD_NAME "NUCLEO-F413ZH"
#define MICROPY_HW_MCU_NAME "STM32F413"
#define MICROPY_HW_HAS_SWITCH (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)
// HSE is 8MHz, CPU freq set to 96MHz
#define MICROPY_HW_CLK_PLLM (8)
#define MICROPY_HW_CLK_PLLN (192)
#define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)
#define MICROPY_HW_CLK_PLLQ (4)
// For 2.7 to 3.6 V, 75 to 100 MHz: 3 wait states.
#define MICROPY_HW_FLASH_LATENCY FLASH_LATENCY_3
// UART config
#define MICROPY_HW_UART1_TX (pin_B6)
#define MICROPY_HW_UART1_RX (pin_B3) // shared with CAN3
#define MICROPY_HW_UART2_TX (pin_D5)
#define MICROPY_HW_UART2_RX (pin_D6)
#define MICROPY_HW_UART3_TX (pin_D8)
#define MICROPY_HW_UART3_RX (pin_D9)
#define MICROPY_HW_UART4_TX (pin_D1)
#define MICROPY_HW_UART4_RX (pin_D0)
#define MICROPY_HW_UART5_TX (pin_C12)
#define MICROPY_HW_UART5_RX (pin_D2)
#define MICROPY_HW_UART6_TX (pin_G14)
#define MICROPY_HW_UART6_RX (pin_G9)
#define MICROPY_HW_UART7_TX (pin_E8)
#define MICROPY_HW_UART7_RX (pin_E7)
#define MICROPY_HW_UART8_TX (pin_E1)
#define MICROPY_HW_UART8_RX (pin_E0)
#define MICROPY_HW_UART9_TX (pin_D15)
#define MICROPY_HW_UART9_RX (pin_D14)
#define MICROPY_HW_UART10_TX (pin_E3)
#define MICROPY_HW_UART10_RX (pin_E2)
#define MICROPY_HW_UART_REPL PYB_UART_3
#define MICROPY_HW_UART_REPL_BAUD 115200
// I2C busses
#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_I2C3_SCL (pin_A8)
#define MICROPY_HW_I2C3_SDA (pin_C9)
// SPI busses
#define MICROPY_HW_SPI1_NSS (pin_A4) // shared with DAC
#define MICROPY_HW_SPI1_SCK (pin_A5) // shared with DAC
#define MICROPY_HW_SPI1_MISO (pin_A6)
#define MICROPY_HW_SPI1_MOSI (pin_A7)
#define MICROPY_HW_SPI2_NSS (pin_B12)
#define MICROPY_HW_SPI2_SCK (pin_C7)
#define MICROPY_HW_SPI2_MISO (pin_C2)
#define MICROPY_HW_SPI2_MOSI (pin_C3)
#define MICROPY_HW_SPI3_NSS (pin_A15)
#define MICROPY_HW_SPI3_SCK (pin_C10)
#define MICROPY_HW_SPI3_MISO (pin_C11)
#define MICROPY_HW_SPI3_MOSI (pin_B5)
#define MICROPY_HW_SPI4_NSS (pin_E4)
#define MICROPY_HW_SPI4_SCK (pin_B13)
#define MICROPY_HW_SPI4_MISO (pin_E5)
#define MICROPY_HW_SPI4_MOSI (pin_E6)
#define MICROPY_HW_SPI5_NSS (pin_E11)
#define MICROPY_HW_SPI5_SCK (pin_E12)
#define MICROPY_HW_SPI5_MISO (pin_E13)
#define MICROPY_HW_SPI5_MOSI (pin_E14)
// CAN busses
#define MICROPY_HW_CAN1_TX (pin_G1)
#define MICROPY_HW_CAN1_RX (pin_G0)
#define MICROPY_HW_CAN2_TX (pin_G12)
#define MICROPY_HW_CAN2_RX (pin_G11)
#define MICROPY_HW_CAN3_TX (pin_B4)
#define MICROPY_HW_CAN3_RX (pin_B3) // shared with UART1 or use pin_A8 shared with I2C3
// 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_NOPULL)
#define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_RISING)
#define MICROPY_HW_USRSW_PRESSED (1)
// LEDs
#define MICROPY_HW_LED1 (pin_B14) // red
#define MICROPY_HW_LED2 (pin_B0) // green
#define MICROPY_HW_LED3 (pin_B7) // blue
#define MICROPY_HW_LED1_PWM { TIM12, 12, TIM_CHANNEL_1, GPIO_AF9_TIM12 }
#define MICROPY_HW_LED2_PWM { TIM3, 3, TIM_CHANNEL_3, GPIO_AF2_TIM3 }
#define MICROPY_HW_LED3_PWM { TIM4, 4, TIM_CHANNEL_2, GPIO_AF2_TIM4 }
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin))
#define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_low(pin))
// USB config (CN13 - USB OTG FS)
#define MICROPY_HW_USB_FS (1)
#define MICROPY_HW_USB_VBUS_DETECT_PIN (pin_A9)
#define MICROPY_HW_USB_OTG_ID_PIN (pin_A10)
MCU_SERIES = f4
CMSIS_MCU = STM32F413xx
STARTUP_FILE = boards/startup_stm32f413xx.o
AF_FILE = boards/stm32f413_af.csv
LD_FILES = boards/stm32f413xh.ld boards/common_ifs.ld
TEXT0_ADDR = 0x08000000
TEXT1_ADDR = 0x08060000
PA0,PA0
PA1,PA1
PA2,PA2
PA3,PA3
PA4,PA4
PA5,PA5
PA6,PA6
PA7,PA7
PA8,PA8
PA9,PA9
PA10,PA10
PA11,PA11
PA12,PA12
PA13,PA13
PA14,PA14
PA15,PA15
PB0,PB0
PB1,PB1
PB2,PB2
PB3,PB3
PB4,PB4
PB5,PB5
PB6,PB6
PB7,PB7
PB8,PB8
PB9,PB9
PB10,PB10
PB11,PB11
PB12,PB12
PB13,PB13
PB14,PB14
PB15,PB15
PC0,PC0
PC1,PC1
PC2,PC2
PC3,PC3
PC4,PC4
PC5,PC5
PC6,PC6
PC7,PC7
PC8,PC8
PC9,PC9
PC10,PC10
PC11,PC11
PC12,PC12
PC13,PC13
PC14,PC14
PC15,PC15
PD0,PD0
PD1,PD1
PD2,PD2
PD3,PD3
PD4,PD4
PD5,PD5
PD6,PD6
PD7,PD7
PD8,PD8
PD9,PD9
PD10,PD10
PD11,PD11
PD12,PD12
PD13,PD13
PD14,PD14
PD15,PD15
PE0,PE0
PE1,PE1
PE2,PE2
PE3,PE3
PE4,PE4
PE5,PE5
PE6,PE6
PE7,PE7
PE8,PE8
PE9,PE9
PE10,PE10
PE11,PE11
PE12,PE12
PE13,PE13
PE14,PE14
PE15,PE15
PF0,PF0
PF1,PF1
PF2,PF2
PF3,PF3
PF4,PF4
PF5,PF5
PF6,PF6
PF7,PF7
PF8,PF8
PF9,PF9
PF10,PF10
PF11,PF11
PF12,PF12
PF13,PF13
PF14,PF14
PF15,PF15
PG0,PG0
PG1,PG1
PG2,PG2
PG3,PG3
PG4,PG4
PG5,PG5
PG6,PG6
PG7,PG7
PG8,PG8
PG9,PG9
PG10,PG10
PG11,PG11
PG12,PG12
PG13,PG13
PG14,PG14
PG15,PG15
PH0,PH0
PH1,PH1
SW,C13
LED_RED,B14
LED_GREEN,B0
LED_BLUE,B7
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment