Skip to content

Commit

Permalink
[variant] Add Generic L5xx and Nucleo L552ZE-Q
Browse files Browse the repository at this point in the history
Supersede stm32duino#1256

Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
  • Loading branch information
fpistm committed Apr 14, 2021
1 parent 1e4e680 commit e0412b7
Show file tree
Hide file tree
Showing 6 changed files with 841 additions and 2 deletions.
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

0 comments on commit e0412b7

Please sign in to comment.