Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
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
Prev Previous commit
Next Next commit
[variant] Add Generic L5xx and Nucleo L552ZE-Q
Supersede stm32duino#1256

Signed-off-by: Frederic Pillon <[email protected]>
  • Loading branch information
fpistm committed Apr 12, 2021
commit e37a8ad0c4aead3cc4ebce890c4dea1e76f5ef28
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
- [Generic STM32H7 boards](#generic-stm32h7-boards)
- [Generic STM32L0 boards](#generic-stm32l0-boards)
- [Generic STM32L4 boards](#generic-stm32l4-boards)
- [Generic STM32L5 boards](#generic-stm32l5-boards)
- [3D printer boards](#3d-printer-boards)
- [LoRa boards](#lora-boards)
- [Electronic Speed Controller boards](#electronic-speed-controller-boards)
Expand All @@ -82,6 +83,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
| :green_heart: | STM32L496ZG-P | [Nucleo L496ZG-P](http://www.st.com/en/evaluation-tools/nucleo-l496zg-p.html) | *1.3.0* | |
| :green_heart: | STM32L4R5ZI | [Nucleo L4R5ZI](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi.html) | *1.4.0* | |
| :green_heart: | STM32L4R5ZI-P | [Nucleo L4R5ZI-P](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi-p.html) | *1.4.0* | |
| :yellow_heart: | STM32L552ZE-Q | [Nucleo L552ZE-Q](https://www.st.com/en/evaluation-tools/nucleo-l552ze-q.html) | **2.0.0** | |
| :green_heart: | STM32H743ZI | [Nucleo H743ZI(2)](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | *1.5.0* | Nucleo H743ZI2 since 1.6.0 |

### [Nucleo 64](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) boards
Expand Down Expand Up @@ -299,6 +301,13 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
| :yellow_heart: | STM32L4S7ZITx | Generic Board | **2.0.0** | |
| :yellow_heart: | STM32L4S9ZIJx | Generic Board | **2.0.0** | |

### Generic STM32L5 boards

| Status | Device(s) | Name | Release | Notes |
| :----: | :-------: | ---- | :-----: | :---- |
| :yellow_heart: | STM32L552ZC-Q<br>STM32L552ZE-Q | Generic Board | **2.0.0** | |
| :yellow_heart: | STM32L562ZE-Q | Generic Board | **2.0.0** | |

### 3D printer boards

| Status | Device(s) | Name | Release | Notes |
Expand Down
113 changes: 113 additions & 0 deletions boards.txt
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,19 @@ Nucleo_144.menu.pnum.NUCLEO_L4R5ZI_P.build.product_line=STM32L4R5xx
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI_P.build.variant=STM32L4xx/L4R5ZITxP
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI_P.build.cmsis_lib_gcc=arm_cortexM4lf_math

# NUCLEO_L552ZE-Q board
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q=Nucleo L552ZE-Q
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.node=NODE_L552ZE
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.upload.maximum_size=524288
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.upload.maximum_data_size=196608
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.mcu=cortex-m33
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.board=NUCLEO_L552ZE_Q
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.series=STM32L5xx
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.product_line=STM32L552xx
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math

# Upload menu
Nucleo_144.menu.upload_method.MassStorage=Mass Storage
Nucleo_144.menu.upload_method.MassStorage.upload.protocol=
Expand Down Expand Up @@ -2980,6 +2993,58 @@ GenL4.menu.upload_method.dfuMethod.upload.options=-g
GenL4.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg

################################################################################
# Generic L5
GenL5.name=Generic STM32L5 series

GenL5.build.core=arduino
GenL5.build.board=GenL5
GenL5.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
GenL5.build.mcu=cortex-m33
GenL5.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard
GenL5.build.series=STM32L5xx
GenL5.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math

# Generic L552ZCTxQ
GenL5.menu.pnum.GENERIC_L552ZCTXQ=Generic L552ZCTxQ
GenL5.menu.pnum.GENERIC_L552ZCTXQ.upload.maximum_size=262144
GenL5.menu.pnum.GENERIC_L552ZCTXQ.upload.maximum_data_size=196608
GenL5.menu.pnum.GENERIC_L552ZCTXQ.build.board=GENERIC_L552ZCTXQ
GenL5.menu.pnum.GENERIC_L552ZCTXQ.build.product_line=STM32L552xx
GenL5.menu.pnum.GENERIC_L552ZCTXQ.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ

# Generic L552ZETxQ
GenL5.menu.pnum.GENERIC_L552ZETXQ=Generic L552ZETxQ
GenL5.menu.pnum.GENERIC_L552ZETXQ.upload.maximum_size=524288
GenL5.menu.pnum.GENERIC_L552ZETXQ.upload.maximum_data_size=196608
GenL5.menu.pnum.GENERIC_L552ZETXQ.build.board=GENERIC_L552ZETXQ
GenL5.menu.pnum.GENERIC_L552ZETXQ.build.product_line=STM32L552xx
GenL5.menu.pnum.GENERIC_L552ZETXQ.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ

# Generic L562ZETxQ
GenL5.menu.pnum.GENERIC_L562ZETXQ=Generic L562ZETxQ
GenL5.menu.pnum.GENERIC_L562ZETXQ.upload.maximum_size=524288
GenL5.menu.pnum.GENERIC_L562ZETXQ.upload.maximum_data_size=196608
GenL5.menu.pnum.GENERIC_L562ZETXQ.build.board=GENERIC_L562ZETXQ
GenL5.menu.pnum.GENERIC_L562ZETXQ.build.product_line=STM32L562xx
GenL5.menu.pnum.GENERIC_L562ZETXQ.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ

# Upload menu
GenL5.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
GenL5.menu.upload_method.swdMethod.upload.protocol=0
GenL5.menu.upload_method.swdMethod.upload.options=-g
GenL5.menu.upload_method.swdMethod.upload.tool=stm32CubeProg

GenL5.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
GenL5.menu.upload_method.serialMethod.upload.protocol=1
GenL5.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
GenL5.menu.upload_method.serialMethod.upload.tool=stm32CubeProg

GenL5.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
GenL5.menu.upload_method.dfuMethod.upload.protocol=2
GenL5.menu.upload_method.dfuMethod.upload.options=-g
GenL5.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg

#################################################################################
# Electronic Speed Controller boards

ESC_board.name=Electronic speed controllers
Expand Down Expand Up @@ -3590,6 +3655,12 @@ GenL4.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
GenL4.menu.xserial.disabled=Disabled (no Serial support)
GenL4.menu.xserial.disabled.build.xSerial=

GenL5.menu.xserial.generic=Enabled (generic 'Serial')
GenL5.menu.xserial.none=Enabled (no generic 'Serial')
GenL5.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
GenL5.menu.xserial.disabled=Disabled (no Serial support)
GenL5.menu.xserial.disabled.build.xSerial=

ESC_board.menu.xserial.generic=Enabled (generic 'Serial')
ESC_board.menu.xserial.none=Enabled (no generic 'Serial')
ESC_board.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
Expand Down Expand Up @@ -3797,6 +3868,19 @@ GenL4.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
GenL4.menu.xusb.HSFS=High Speed in Full Speed mode
GenL4.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS

GenL5.menu.usb.none=None
GenL5.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
GenL5.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
GenL5.menu.usb.CDC=CDC (no generic 'Serial')
GenL5.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
GenL5.menu.usb.HID=HID (keyboard and mouse)
GenL5.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
GenL5.menu.xusb.FS=Low/Full Speed
GenL5.menu.xusb.HS=High Speed
GenL5.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
GenL5.menu.xusb.HSFS=High Speed in Full Speed mode
GenL5.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS

3dprinter.menu.usb.none=None
3dprinter.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
3dprinter.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
Expand Down Expand Up @@ -4135,6 +4219,25 @@ GenL4.menu.opt.o3lto.build.flags.optimize=-O3 -flto
GenL4.menu.opt.ogstd=Debug (-g)
GenL4.menu.opt.ogstd.build.flags.optimize=-g -Og

GenL5.menu.opt.osstd=Smallest (-Os default)
GenL5.menu.opt.osstd.build.flags.optimize=-Os
GenL5.menu.opt.oslto=Smallest (-Os) with LTO
GenL5.menu.opt.oslto.build.flags.optimize=-Os -flto
GenL5.menu.opt.o1std=Fast (-O1)
GenL5.menu.opt.o1std.build.flags.optimize=-O1
GenL5.menu.opt.o1lto=Fast (-O1) with LTO
GenL5.menu.opt.o1lto.build.flags.optimize=-O1 -flto
GenL5.menu.opt.o2std=Faster (-O2)
GenL5.menu.opt.o2std.build.flags.optimize=-O2
GenL5.menu.opt.o2lto=Faster (-O2) with LTO
GenL5.menu.opt.o2lto.build.flags.optimize=-O2 -flto
GenL5.menu.opt.o3std=Fastest (-O3)
GenL5.menu.opt.o3std.build.flags.optimize=-O3
GenL5.menu.opt.o3lto=Fastest (-O3) with LTO
GenL5.menu.opt.o3lto.build.flags.optimize=-O3 -flto
GenL5.menu.opt.ogstd=Debug (-g)
GenL5.menu.opt.ogstd.build.flags.optimize=-g -Og

ESC_board.menu.opt.osstd=Smallest (-Os default)
ESC_board.menu.opt.oslto=Smallest (-Os) with LTO
ESC_board.menu.opt.oslto.build.flags.optimize=-Os -flto
Expand Down Expand Up @@ -4404,6 +4507,16 @@ GenL4.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float
GenL4.menu.rtlib.full=Newlib Standard
GenL4.menu.rtlib.full.build.flags.ldspecs=

GenL5.menu.rtlib.nano=Newlib Nano (default)
GenL5.menu.rtlib.nanofp=Newlib Nano + Float Printf
GenL5.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
GenL5.menu.rtlib.nanofs=Newlib Nano + Float Scanf
GenL5.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
GenL5.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
GenL5.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
GenL5.menu.rtlib.full=Newlib Standard
GenL5.menu.rtlib.full.build.flags.ldspecs=

ESC_board.menu.rtlib.nano=Newlib Nano (default)
ESC_board.menu.rtlib.nanofp=Newlib Nano + Float Printf
ESC_board.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
Expand Down
38 changes: 36 additions & 2 deletions variants/STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ/generic_clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,42 @@
*/
WEAK void SystemClock_Config(void)
{
/* SystemClock_Config can be generated by STM32CubeMX */
#warning "SystemClock_Config() is empty. Default clock at reset is used."
RCC_OscInitTypeDef RCC_OscInitStruct = {};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};

/** Configure the main internal regulator output voltage
*/
if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE0) != HAL_OK) {
Error_Handler();
}
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 4;
RCC_OscInitStruct.PLL.PLLN = 55;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7;
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
Error_Handler();
}
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
Error_Handler();
}
}

#endif /* ARDUINO_GENERIC_* */
Loading