Board Support Package For STM32 Microcontroller Boards

Introduction

STM32 F429, F439, F746, F767, H743, H745

Nucleo-144 Boards

 

This board support package (BSP) supports STMicroelectronics STM32 F429, F439, F746, F767, H743, H745 boards. The BSP is based on STM32 SDK and uses GNU ARM Embedded compiler tool chain for generating required binaries.

Getting Started

·       Install STM32 Nucleo driver from manufacturer website for host PC.

·       Create model and build to generate required binary.

·       Refer below for programming and debugging support.

Board Configuration

·      General Configuration

Configuration Parameter

STM32 Nucleo F429

STM32 Nucleo F439

STM32 Nucleo F746

STM32 Nucleo F767

STM32 Nucleo H743

STM32 Nucleo H745

Board Title

STM32F429

STM32F439

STM32F746

STM32F767

STM32H743

STM32H745

Tool Chain Type

Local Build

Local Build

Local Build

Local Build

Local Build

Local Build

Board Preprocessor Symbol

_BUILD_BRD_STM32F429

_BUILD_BRD_STM32F439

_BUILD_BRD_STM32F746

_BUILD_BRD_STM32F767

_BUILD_BRD_STM32H743

_BUILD_BRD_STM32H745

Platform Preprocessor Symbol

_BUILD_PLT_STM32

_BUILD_PLT_STM32

_BUILD_PLT_STM32

_BUILD_PLT_STM32

_BUILD_PLT_STM32

_BUILD_PLT_STM32

Compiler Preprocessor Symbol

_BUILD_CMP_ARM_GCC

_BUILD_CMP_ARM_GCC

_BUILD_CMP_ARM_GCC

_BUILD_CMP_ARM_GCC

_BUILD_CMP_ARM_GCC

_BUILD_CMP_ARM_GCC

C++11 Standard Support

No

No

No

No

No

No

Debug Support

Yes

Yes

Yes

Yes

Yes

Yes

File System Support

No

No

No

No

No

No

OpenMP/OpenCL/CUDA Support

No/No/No

No/No/No

No/No/No

No/No/No

No/No/No

No/No/No

Simulation Panel Support

No

No

No

No

No

No

 

·      Hardware Configuration

Configuration Parameter

STM32 Nucleo F429

STM32 Nucleo F439

STM32 Nucleo F746

STM32 Nucleo F767

STM32 Nucleo H743

STM32 Nucleo H745

Number of CPU cores

1

1

1

1

1

2

Dynamic Memory Support

Yes

Yes

Yes

Yes

Yes

Yes

Prefer Fixed/Floating Point

Floating Point

Floating Point

Floating Point

Floating Point

Floating Point

Floating Point

DI/DO Pins

PB0_LED1_GPIO[0], PB2_GPIO[1], PB5_GPIO[2], PB6_GPIO[3], PB7_LED2_GPIO[4], PB12_GPIO[5], PB14_LED3_GPIO[6], PD7_GPIO[7], PD10_GPIO[8], PD11_GPIO[9], PE0_GPIO[10], PE1_GPIO[11], PE2_GPIO[12], PE3_GPIO[13], PE4_GPIO[14], PE7_GPIO[15], PE8_GPIO[16], PF0_GPIO[17], PF1_GPIO[18], PF2_GPIO[19], PF6_GPIO[20], PF11_GPIO[21], PF12_GPIO[22], PF13_GPIO[23], PF14_GPIO[24], PF15_GPIO[25], PG0_GPIO[26], PG1_GPIO[27], PG2_GPIO[28], PG3_GPIO[29], PG4_GPIO[30], PG5_GPIO[31], PG10_GPIO[32], PG12_GPIO[33], PG15_GPIO[34], PC13_PBSW_GPIO[35]

PB0_LED1_GPIO[0], PB2_GPIO[1], PB5_GPIO[2], PB6_GPIO[3], PB7_LED2_GPIO[4], PB12_GPIO[5], PB14_LED3_GPIO[6], PD7_GPIO[7], PD10_GPIO[8], PD11_GPIO[9], PE0_GPIO[10], PE1_GPIO[11], PE2_GPIO[12], PE3_GPIO[13], PE4_GPIO[14], PE7_GPIO[15], PE8_GPIO[16], PF0_GPIO[17], PF1_GPIO[18], PF2_GPIO[19], PF6_GPIO[20], PF11_GPIO[21], PF12_GPIO[22], PF13_GPIO[23], PF14_GPIO[24], PF15_GPIO[25], PG0_GPIO[26], PG1_GPIO[27], PG2_GPIO[28], PG3_GPIO[29], PG4_GPIO[30], PG5_GPIO[31], PG10_GPIO[32], PG12_GPIO[33], PG15_GPIO[34], PC13_PBSW_GPIO[35]

PB0_LED1_GPIO[0], PB2_GPIO[1], PB5_GPIO[2], PB6_GPIO[3], PB7_LED2_GPIO[4], PB12_GPIO[5], PB14_LED3_GPIO[6], PD7_GPIO[7], PD10_GPIO[8], PD11_GPIO[9], PE0_GPIO[10], PE1_GPIO[11], PE2_GPIO[12], PE3_GPIO[13], PE4_GPIO[14], PE7_GPIO[15], PE8_GPIO[16], PF0_GPIO[17], PF1_GPIO[18], PF2_GPIO[19], PF6_GPIO[20], PF11_GPIO[21], PF12_GPIO[22], PF13_GPIO[23], PF14_GPIO[24], PF15_GPIO[25], PG0_GPIO[26], PG1_GPIO[27], PG2_GPIO[28], PG3_GPIO[29], PG4_GPIO[30], PG5_GPIO[31], PG10_GPIO[32], PG12_GPIO[33], PG15_GPIO[34], PC13_PBSW_GPIO[35]

PB0_LED1_GPIO[0], PB2_GPIO[1], PB5_GPIO[2], PB6_GPIO[3], PB7_LED2_GPIO[4], PB12_GPIO[5], PB14_LED3_GPIO[6], PD7_GPIO[7], PD10_GPIO[8], PD11_GPIO[9], PE0_GPIO[10], PE1_GPIO[11], PE2_GPIO[12], PE3_GPIO[13], PE4_GPIO[14], PE7_GPIO[15], PE8_GPIO[16], PF0_GPIO[17], PF1_GPIO[18], PF2_GPIO[19], PF6_GPIO[20], PF11_GPIO[21], PF12_GPIO[22], PF13_GPIO[23], PF14_GPIO[24], PF15_GPIO[25], PG0_GPIO[26], PG1_GPIO[27], PG2_GPIO[28], PG3_GPIO[29], PG4_GPIO[30], PG5_GPIO[31], PG10_GPIO[32], PG12_GPIO[33], PG15_GPIO[34], PC13_PBSW_GPIO[35]

PB0_LED1_GPIO[0], PB2_GPIO[1], PB5_GPIO[2], PB6_GPIO[3], PB7_LED2_GPIO[4], PB12_GPIO[5], PB14_LED3_GPIO[6], PD7_GPIO[7], PD10_GPIO[8], PD11_GPIO[9], PE0_GPIO[10], PE1_GPIO[11], PE2_GPIO[12], PE3_GPIO[13], PE4_GPIO[14], PE7_GPIO[15], PE8_GPIO[16], PF0_GPIO[17], PF1_GPIO[18], PF2_GPIO[19], PF6_GPIO[20], PC2_GPIO[21], PC3_GPIO[22], PA0_GPIO[23], PF14_GPIO[24], PF15_GPIO[25], PG0_GPIO[26], PG1_GPIO[27], PG2_GPIO[28], PG3_GPIO[29], PG4_GPIO[30], PG5_GPIO[31], PG10_GPIO[32], PG12_GPIO[33], PG15_GPIO[34], PC13_PBSW_GPIO[35]

PB0_LED1_GPIO[0][GPIOB], PB2_GPIO[1][GPIOB], PB5_GPIO[2][GPIOB], PB6_GPIO[3][GPIOB], PB7_GPIO[4][GPIOB], PB8_GPIO[5][GPIOB], PB9_GPIO[6][GPIOB], PB14_LED3_GPIO[7][GPIOB], PB15_GPIO[8][GPIOB], PC6_GPIO[9][GPIOC], PC7_GPIO[10][GPIOC], PC8_GPIO[11][GPIOC], PC9_GPIO[12][GPIOC], PC10_GPIO[13][GPIOC], PC11_GPIO[14][GPIOC], PD3_GPIO[15][GPIOD], PD4_GPIO[16][GPIOD], PD5_GPIO[17][GPIOD], PD6_GPIO[18][GPIOD], PD7_GPIO[19][GPIOD], PE0_GPIO[20][GPIOE], PE1_LED2_GPIO[21][GPIOE], PE2_GPIO[22][GPIOE], PE3_GPIO[23][GPIOE], PE4_GPIO[24][GPIOE], PE10_GPIO[25][GPIOE], PE12_GPIO[26][GPIOE], PE15_GPIO[27][GPIOE], PF15_GPIO[28][GPIOF], PG6_GPIO[29][GPIOG], PG8_GPIO[30][GPIOG], PG9_GPIO[31][GPIOG], PG10_GPIO[32][GPIOG], PG12_GPIO[33][GPIOG], PG14_GPIO[34][GPIOG], PC13_PBSW_GPIO[35][GPIOC]

ADC Default Resolution

12

12

12

12

16

16

ADC Pins

PA0_ADC[0], PA6_ADC[1], PB1_ADC[2], PC2_ADC[3], PA3_ADC[4], PB0_LED1_ADC[5], PC0_ADC[6], PC3_ADC[7], PF10_ADC[8], PF3_ADC[9], PF4_ADC[10], PF5_ADC[11]

PA0_ADC[0], PA6_ADC[1], PB1_ADC[2], PC2_ADC[3], PA3_ADC[4], PB0_LED1_ADC[5], PC0_ADC[6], PC3_ADC[7], PF10_ADC[8], PF3_ADC[9], PF4_ADC[10], PF5_ADC[11]

PA0_ADC[0], PA6_ADC[1], PB1_ADC[2], PC2_ADC[3], PA3_ADC[4], PB0_LED1_ADC[5], PC0_ADC[6], PC3_ADC[7], PF10_ADC[8], PF3_ADC[9], PF4_ADC[10], PF5_ADC[11]

PA0_ADC[0], PA6_ADC[1], PB1_ADC[2], PC2_ADC[3], PA3_ADC[4], PB0_LED1_ADC[5], PC0_ADC[6], PC3_ADC[7], PF10_ADC[8], PF3_ADC[9], PF4_ADC[10], PF5_ADC[11]

PF11_ADC[0], PF12_ADC[1], PB0_ADC[2], PA3_ADC[3], PC3_ADC[4], PA6_ADC[5], PB1_ADC[6], PC0_ADC[7], PF5_ADC[8], PF3_ADC[9], PF10_ADC[10], PF4_ADC[11]

PF11_ADC1_CH2[0][ADC1], PA6_ADC1_CH3[1][ADC1], PC0_ADC1_CH10[2][ADC1], PA0_ADC1_CH16[3][ADC1], PB1_ADC2_CH5[4][ADC2], PF14_ADC2_CH6[5][ADC2], PB0_ADC2_CH9 (LED1)[6][ADC2], PA3_ADC2_CH15[7][ADC2], PC2_ADC3_CH0[8][ADC3], PC3_ADC3_CH1[9][ADC3], PF10_ADC3_CH6[10][ADC3], PF6_ADC3_CH8[11][ADC3]

PWM Default Resolution

16

16

16

16

16

16

PWM Pins

PE9_PWM[0], PE11_PWM[1], PE13_PWM[2], PE14_PWM[3], PA15_PWM[4], PB10_PWM[5], PB11_PWM[6], PB4_PWM[7], PC7_PWM[8], PC8_PWM[9], PD12_PWM[10], PD13_PWM[11], PD14_PWM[12], PD15_PWM[13], PC6_PWM[14], PC9_PWM[15], PE5_PWM[16], PE6_PWM[17], PB14_LED3_PWM[18], PB15_PWM[19]

PE9_PWM[0], PE11_PWM[1], PE13_PWM[2], PE14_PWM[3], PA15_PWM[4], PB10_PWM[5], PB11_PWM[6], PB4_PWM[7], PC7_PWM[8], PC8_PWM[9], PD12_PWM[10], PD13_PWM[11], PD14_PWM[12], PD15_PWM[13], PC6_PWM[14], PC9_PWM[15], PE5_PWM[16], PE6_PWM[17], PB14_LED3_PWM[18], PB15_PWM[19]

PE9_PWM[0], PE11_PWM[1], PE13_PWM[2], PE14_PWM[3], PA15_PWM[4], PB10_PWM[5], PB11_PWM[6], PB4_PWM[7], PC7_PWM[8], PC8_PWM[9], PD12_PWM[10], PD13_PWM[11], PD14_PWM[12], PD15_PWM[13], PC6_PWM[14], PC9_PWM[15], PE5_PWM[16], PE6_PWM[17], PB14_LED3_PWM[18], PB15_PWM[19]

PE9_PWM[0], PE11_PWM[1], PE13_PWM[2], PE14_PWM[3], PA15_PWM[4], PB10_PWM[5], PB11_PWM[6], PB4_PWM[7], PC7_PWM[8], PC8_PWM[9], PD12_PWM[10], PD13_PWM[11], PD14_PWM[12], PD15_PWM[13], PC6_PWM[14], PC9_PWM[15], PE5_PWM[16], PE6_PWM[17], PB14_LED3_PWM[18], PB15_PWM[19]

PE9_PWM[0], PE11_PWM[1], PE13_PWM[2], PE14_PWM[3], PA15_PWM[4], PB10_PWM[5], PB11_PWM[6], PB4_PWM[7], PC7_PWM[8], PC8_PWM[9], PD12_PWM[10], PD13_PWM[11], PD14_PWM[12], PD15_PWM[13], PC6_PWM[14], PC9_PWM[15], PE5_PWM[16], PE6_PWM[17], PB14_LED3_PWM[18], PB15_PWM[19]

PE9_TIM1_CH1[0][TIM1], PE11_TIM1_CH2[1][TIM1], PE13_TIM1_CH3[2][TIM1], PE14_TIM1_CH4[3][TIM1], PB10_TIM2_CH3[4][TIM2], PB11_TIM2_CH4[5][TIM2], PC6_TIM3_CH1[6][TIM3], PC7_TIM3_CH2[7][TIM3], PC8_TIM3_CH3[8][TIM3], PC9_TIM3_CH4[9][TIM3], PD12_TIM4_CH1[10][TIM4], PD13_TIM4_CH2[11][TIM4], PD14_TIM4_CH3[12][TIM4], PD15_TIM4_CH4[13][TIM4], PE5_TIM15_CH1[14][TIM15], PE6_TIM15_CH2[15][TIM15]

DAC Default Resolution

12

12

12

12

12

12

DAC Pins

PA4_DAC[20], PA5_DAC[21]

PA4_DAC[20], PA5_DAC[21]

PA4_DAC[20], PA5_DAC[21]

PA4_DAC[20], PA5_DAC[21]

PA4_DAC[20], PA5_DAC[21]

PA4_DAC[16][DAC1], PA5_DAC[17][DAC1]

UART0 Pins

Via USB Programmer Port (PD9 (RX), PD8 (TX))

Via USB Programmer Port (PD9 (RX), PD8 (TX))

Via USB Programmer Port (PD9 (RX), PD8 (TX))

Via USB Programmer Port (PD9 (RX), PD8 (TX))

Via USB Programmer Port (PD9 (RX), PD8 (TX))

Via USB Programmer Port (PD9 (RX), PD8 (TX))

UART1 Pins

PD6 (RX), PD5 (TX)

PD6 (RX), PD5 (TX)

PD6 (RX), PD5 (TX)

PD6 (RX), PD5 (TX)

PD6 (RX), PD5 (TX)

PD6 (RX), PD5 (TX)

UART2 Pins

PC10 (RX), PC11 (TX)

PC10 (RX), PC11 (TX)

PC10 (RX), PC11 (TX)

PC10 (RX), PC11 (TX)

PC10 (RX), PC11 (TX)

PC10 (RX), PC11 (TX)

UART3 Pins

PD2 (RX), PC12 (TX)

PD2 (RX), PC12 (TX)

PD2 (RX), PC12 (TX)

PD2 (RX), PC12 (TX)

PD2 (RX), PC12 (TX)

PD2 (RX), PC12 (TX)

UART4 Pins

PE7 (RX), PE8 (TX)

PE7 (RX), PE8 (TX)

PE7 (RX), PE8 (TX)

PE7 (RX), PE8 (TX)

PE7 (RX), PE8 (TX)

PE7 (RX), PE8 (TX)

SPI Pins

PF9 (MOSI), PF8 (MISO), PF7 (CLK)

PF9 (MOSI), PF8 (MISO), PF7 (CLK)

PF9 (MOSI), PF8 (MISO), PF7 (CLK)

PF9 (MOSI), PF8 (MISO), PF7 (CLK)

PF9 (MOSI), PF8 (MISO), PF7 (CLK)

PF9 (MOSI), PF8 (MISO), PF7 (CLK)

I2C Pins

Implemented through Soft I2C. PF0 (SDA), PF1 (SCL)

Implemented through Soft I2C. PF0 (SDA), PF1 (SCL)

Implemented through Soft I2C. PF0 (SDA), PF1 (SCL)

Implemented through Soft I2C. PF0 (SDA), PF1 (SCL)

Implemented through Soft I2C. PF0 (SDA), PF1 (SCL)

Implemented through Soft I2C. PB9 (SDA), PB8 (SCL)

Ethernet Support

Implemented through TargetHw_LwIP block

Implemented through TargetHw_LwIP block

Implemented through TargetHw_LwIP block

Implemented through TargetHw_LwIP block

Implemented through TargetHw_LwIP block

Implemented through TargetHw_LwIP block

 

STM32H745 Dual Core Usage

The BSP supports dual core feature on STM32H745. Following points shall be noted while creating models for this platform

·     User can create a single model for programming both cores. Each block in a user created model can be assigned to one of the cores. This can be done by entering core index (starting from zero) in ‘Execution Thread’ parameter of ‘_Block Execution’ group under block parameters.

·     Two blocks from different cores cannot be connected.

·     While using hardware IO pins (GPIO, ADC, PWM and DACs) it is recommended to use pins from same pin group within a core. Using pins from same pin group across different cores may cause undesired results. Example using ADC1 CH2 in Core1 and ADC1 CH3 in core Core2 is not recommended. Pin group is given along with pin label and pin internal ID in above table. For example for ADC pin ‘PF11_ADC1_CH2[0][ADC1]’ from above table, PG11_ADC1_CH2 is pin label, 0 is internal pin ID and ADC1 is pin group.

·     To exchange data between blocks that are assigned to different cores user may use ‘Shared Memory With HSEM’ block.

·     Each core shall be build and programmed separately.

·     Options for selecting a particular core and other related options are available through target hardware build options on STM32H745 boards as shown below. Please refer to Project Building & Compiling -> Setup Simulation Parameters in CASP documentation on how to invoke Target Hardware Build Options.

·      Basic

image002.jpg

Entity Name

Description

Default Value

_Select Execution Core

Select current core to build and program the model

Core M7 (Master)

Disable data cache on M7 core

Disables data cache on M7 core. This may be required for some use cases. Proper working of LWIP block requires disabling of data cache on M7 core.

No

Shared memory address offset

Enter shared memory address offset

0x38000000

Shared memory size

Enter shared memory allocated size

16384

 

STM32 Pin out

Programmer

CASP supports Programmer0 (using stlink_cli.exe) for uploading generated hex file to the board.

Debugging

Debugging is supported over USB serial.

Known Issues & Limitations

·     On STM32H745 ‘TargetHw LWIP’ block is currently having issues when executing on M7 core when data cache in enabled. As a work around disable data cache on M7 core or shift LWIP block to M4 core.