Skip to content

feat: rename Blues Wireless (blues.io) to Blues (blues.com) and add CYGNET R4 #2371

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
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
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -75,7 +75,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
- [Generic STM32WBA boards](#generic-stm32wba-boards)
- [Generic STM32WL boards](#generic-stm32wl-boards)
- [3D printer boards](#3d-printer-boards)
- [Blues Wireless boards](#blues-wireless-boards)
- [Blues boards](#blues-boards)
- [Elecgator boards](#elecgator-boards)
- [Electronic Speed Controller boards](#electronic-speed-controller-boards)
- [Garatronic/McHobby boards](#garatronicmchobby-boards)
@@ -766,11 +766,12 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
| :green_heart: | STM32F446VE | [FYSETC_S6](https://wiki.fysetc.com/FYSETC_S6/) | *1.9.0* | |
| :green_heart: | STM32G0B1CB | [BTT EBB42 CAN V1.1](https://github.com/bigtreetech/EBB/tree/master/EBB%20CAN%20V1.1%20(STM32G0B1)/EBB42%20CAN%20V1.1) | *2.4.0* | |

### [Blues Wireless](https://blues.io/) boards
### [Blues](https://blues.com/) boards

| Status | Device(s) | Name | Release | Notes |
| :----: | :-------: | ---- | :-----: | :---- |
| :green_heart: | STM32L4R5ZIYx | [Swan R5](https://blues.io/products/swan) | *2.1.0* | |
| :green_heart: | STM32L4R5ZIYx | [Swan R5](https://blues.com/products/swan) | *3.0.0* | |
| :green_heart: | STM32L431CC | [Cygnet L4](https://blues.com/products/cygnet) | *1.1.0* | |

### [Elecgator](https://www.elecgator.com/) boards

193 changes: 105 additions & 88 deletions boards.txt
Original file line number Diff line number Diff line change
@@ -10707,46 +10707,63 @@ GenWL.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
3dprinter.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg

################################################################################
# Blues Wireless boards

BluesW.name=Blues Wireless boards

BluesW.build.core=arduino
BluesW.build.board=BluesWireless
BluesW.build.variant_h=variant_{build.board}.h
BluesW.build.st_extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
BluesW.build.flash_offset=0x0
BluesW.upload.maximum_size=0
BluesW.upload.maximum_data_size=0

# Swan R5 board
BluesW.menu.pnum.SWAN_R5=Swan R5
BluesW.menu.pnum.SWAN_R5.upload.maximum_size=2097152
BluesW.menu.pnum.SWAN_R5.upload.maximum_data_size=655360
BluesW.menu.pnum.SWAN_R5.build.mcu=cortex-m4
BluesW.menu.pnum.SWAN_R5.build.fpu=-mfpu=fpv4-sp-d16
BluesW.menu.pnum.SWAN_R5.build.float-abi=-mfloat-abi=hard
BluesW.menu.pnum.SWAN_R5.build.board=SWAN_R5
BluesW.menu.pnum.SWAN_R5.build.series=STM32L4xx
BluesW.menu.pnum.SWAN_R5.build.product_line=STM32L4R5xx
BluesW.menu.pnum.SWAN_R5.build.variant=STM32L4xx/L4R5Z(G-I)Y_L4R9Z(G-I)Y_L4S5ZIY_L4S9ZIY
BluesW.menu.pnum.SWAN_R5.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS
# Blues boards

Blues.name=Blues boards

Blues.build.core=arduino
Blues.build.board=Blues
Blues.build.variant_h=variant_{build.board}.h
Blues.build.st_extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
Blues.build.flash_offset=0x0
Blues.upload.maximum_size=0
Blues.upload.maximum_data_size=0

# Swan board
Blues.menu.pnum.SWAN_R5=Swan R5
Blues.menu.pnum.SWAN_R5.upload.maximum_size=2097152
Blues.menu.pnum.SWAN_R5.upload.maximum_data_size=655360
Blues.menu.pnum.SWAN_R5.build.mcu=cortex-m4
Blues.menu.pnum.SWAN_R5.build.fpu=-mfpu=fpv4-sp-d16
Blues.menu.pnum.SWAN_R5.build.float-abi=-mfloat-abi=hard
Blues.menu.pnum.SWAN_R5.build.board=SWAN_R5
Blues.menu.pnum.SWAN_R5.build.series=STM32L4xx
Blues.menu.pnum.SWAN_R5.build.product_line=STM32L4R5xx
Blues.menu.pnum.SWAN_R5.build.variant=STM32L4xx/L4R5Z(G-I)Y_L4R9Z(G-I)Y_L4S5ZIY_L4S9ZIY
Blues.menu.pnum.SWAN_R5.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS
Blues.menu.pnum.SWAN_R5.build.vid=0x30A4
Blues.menu.pnum.SWAN_R5.build.pid=0x0002

# Cygnet board
Blues.menu.pnum.CYGNET_L4=Cygnet L4
Blues.menu.pnum.CYGNET_L4.upload.maximum_size=262144
Blues.menu.pnum.CYGNET_L4.upload.maximum_data_size=65536
Blues.menu.pnum.CYGNET_L4.build.mcu=cortex-m4
Blues.menu.pnum.CYGNET_L4.build.fpu=-mfpu=fpv4-sp-d16
Blues.menu.pnum.CYGNET_L4.build.float-abi=-mfloat-abi=hard
Blues.menu.pnum.CYGNET_L4.build.board=CYGNET_L4
Blues.menu.pnum.CYGNET_L4.build.series=STM32L4xx
Blues.menu.pnum.CYGNET_L4.build.product_line=STM32L431xx
Blues.menu.pnum.CYGNET_L4.build.variant=STM32L4xx/L431C(B-C)(T-U)
Blues.menu.pnum.CYGNET_L4.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS
Blues.menu.pnum.CYGNET_L4.build.vid=0x30A4
Blues.menu.pnum.CYGNET_L4.build.pid=0x0003

# Upload menu
BluesW.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
BluesW.menu.upload_method.swdMethod.upload.protocol=0
BluesW.menu.upload_method.swdMethod.upload.options=
BluesW.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
Blues.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
Blues.menu.upload_method.swdMethod.upload.protocol=0
Blues.menu.upload_method.swdMethod.upload.options=
Blues.menu.upload_method.swdMethod.upload.tool=stm32CubeProg

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

BluesW.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
BluesW.menu.upload_method.dfuMethod.upload.protocol=2
BluesW.menu.upload_method.dfuMethod.upload.options=
BluesW.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
Blues.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
Blues.menu.upload_method.dfuMethod.upload.protocol=2
Blues.menu.upload_method.dfuMethod.upload.options=
Blues.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg

################################################################################
# Elecgator boards
@@ -11443,11 +11460,11 @@ GenWL.menu.xserial.disabled.build.xSerial=
3dprinter.menu.xserial.disabled=Disabled (no Serial support)
3dprinter.menu.xserial.disabled.build.xSerial=

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

Elecgator.menu.xserial.generic=Enabled (generic 'Serial')
Elecgator.menu.xserial.none=Enabled (no generic 'Serial')
@@ -11762,18 +11779,18 @@ GenWB.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
3dprinter.menu.xusb.HSFS=High Speed in Full Speed mode
3dprinter.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS

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

Elecgator.menu.usb.none=None
Elecgator.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
@@ -12367,25 +12384,25 @@ GenWL.menu.opt.o0std.build.flags.optimize=-O0
3dprinter.menu.opt.o0std=No Optimization (-O0)
3dprinter.menu.opt.o0std.build.flags.optimize=-O0

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

Elecgator.menu.opt.osstd=Smallest (-Os default)
Elecgator.menu.opt.oslto=Smallest (-Os) with LTO
@@ -12744,13 +12761,13 @@ GenWL.menu.dbg.enable_all.build.flags.debug=-g
3dprinter.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
3dprinter.menu.dbg.enable_all.build.flags.debug=-g

BluesW.menu.dbg.none=None
BluesW.menu.dbg.enable_sym=Symbols Enabled (-g)
BluesW.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
BluesW.menu.dbg.enable_log=Core logs Enabled
BluesW.menu.dbg.enable_log.build.flags.debug=
BluesW.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
BluesW.menu.dbg.enable_all.build.flags.debug=-g
Blues.menu.dbg.none=None
Blues.menu.dbg.enable_sym=Symbols Enabled (-g)
Blues.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
Blues.menu.dbg.enable_log=Core logs Enabled
Blues.menu.dbg.enable_log.build.flags.debug=
Blues.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
Blues.menu.dbg.enable_all.build.flags.debug=-g

Elecgator.menu.dbg.none=None
Elecgator.menu.dbg.enable_sym=Symbols Enabled (-g)
@@ -13077,15 +13094,15 @@ GenWL.menu.rtlib.full.build.flags.ldspecs=
3dprinter.menu.rtlib.full=Newlib Standard
3dprinter.menu.rtlib.full.build.flags.ldspecs=

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

Elecgator.menu.rtlib.nano=Newlib Nano (default)
Elecgator.menu.rtlib.nanofp=Newlib Nano + Float Printf
82 changes: 82 additions & 0 deletions cmake/boards_db.cmake
Original file line number Diff line number Diff line change
@@ -105964,6 +105964,88 @@ target_compile_options(SWAN_R5_xusb_HSFS INTERFACE
"SHELL:-DUSE_USB_HS -DUSE_USB_HS_IN_FS"
)

# CYGNET_L4
# -----------------------------------------------------------------------------

set(CYGNET_L4_VARIANT_PATH "${CMAKE_CURRENT_LIST_DIR}/../variants/STM32L4xx/L431C(B-C)(T-U)")
set(CYGNET_L4_MAXSIZE 262144)
set(CYGNET_L4_MAXDATASIZE 65536)
set(CYGNET_L4_MCU cortex-m4)
set(CYGNET_L4_FPCONF "fpv4-sp-d16-hard")
add_library(CYGNET_L4 INTERFACE)
target_compile_options(CYGNET_L4 INTERFACE
"SHELL:-DSTM32L4xx "
"SHELL:-DCUSTOM_PERIPHERAL_PINS"
"SHELL:"
"SHELL:-mfpu=fpv4-sp-d16 -mfloat-abi=hard"
-mcpu=${CYGNET_L4_MCU}
)
target_compile_definitions(CYGNET_L4 INTERFACE
"STM32L4xx"
"ARDUINO_CYGNET_L4"
"BOARD_NAME=\"CYGNET_L4\""
"BOARD_ID=CYGNET_L4"
"VARIANT_H=\"variant_CYGNET_L4.h\""
)
target_include_directories(CYGNET_L4 INTERFACE
${CMAKE_CURRENT_LIST_DIR}/../system/STM32L4xx
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32L4xx_HAL_Driver/Inc
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32L4xx_HAL_Driver/Src
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32L4xx/Include/
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/gcc/
${CYGNET_L4_VARIANT_PATH}
)

target_link_options(CYGNET_L4 INTERFACE
"LINKER:--default-script=${CYGNET_L4_VARIANT_PATH}/ldscript.ld"
"LINKER:--defsym=LD_FLASH_OFFSET=0x0"
"LINKER:--defsym=LD_MAX_SIZE=262144"
"LINKER:--defsym=LD_MAX_DATA_SIZE=65536"
"SHELL:-mfpu=fpv4-sp-d16 -mfloat-abi=hard"
-mcpu=${CYGNET_L4_MCU}
)

add_library(CYGNET_L4_serial_disabled INTERFACE)
target_compile_options(CYGNET_L4_serial_disabled INTERFACE
"SHELL:"
)
add_library(CYGNET_L4_serial_generic INTERFACE)
target_compile_options(CYGNET_L4_serial_generic INTERFACE
"SHELL:-DHAL_UART_MODULE_ENABLED"
)
add_library(CYGNET_L4_serial_none INTERFACE)
target_compile_options(CYGNET_L4_serial_none INTERFACE
"SHELL:-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE"
)
add_library(CYGNET_L4_usb_CDC INTERFACE)
target_compile_options(CYGNET_L4_usb_CDC INTERFACE
"SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=-1 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB"
)
add_library(CYGNET_L4_usb_CDCgen INTERFACE)
target_compile_options(CYGNET_L4_usb_CDCgen INTERFACE
"SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=-1 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC"
)
add_library(CYGNET_L4_usb_HID INTERFACE)
target_compile_options(CYGNET_L4_usb_HID INTERFACE
"SHELL:-DUSBCON -DUSBD_VID=0 -DUSBD_PID=-1 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_HID_COMPOSITE"
)
add_library(CYGNET_L4_usb_none INTERFACE)
target_compile_options(CYGNET_L4_usb_none INTERFACE
"SHELL:"
)
add_library(CYGNET_L4_xusb_FS INTERFACE)
target_compile_options(CYGNET_L4_xusb_FS INTERFACE
"SHELL:"
)
add_library(CYGNET_L4_xusb_HS INTERFACE)
target_compile_options(CYGNET_L4_xusb_HS INTERFACE
"SHELL:-DUSE_USB_HS"
)
add_library(CYGNET_L4_xusb_HSFS INTERFACE)
target_compile_options(CYGNET_L4_xusb_HSFS INTERFACE
"SHELL:-DUSE_USB_HS -DUSE_USB_HS_IN_FS"
)

# THUNDERPACK_F411
# -----------------------------------------------------------------------------

3 changes: 2 additions & 1 deletion tools/platformio/boards_remap.json
Original file line number Diff line number Diff line change
@@ -30,7 +30,8 @@
"thunder_pack_f411": "THUNDERPACK_F411",
"vccgnd_f103zet6": "VCCGND_F103ZET6_MINI",
"waveshare_open103z": "GENERIC_F103ZEHX",
"bw_swan_r5": "SWAN_R5",
"blues_swan_r5": "SWAN_R5",
"blues_cygnet_l4": "CYGNET_L4",
"disco_b_g431b_esc1": "B_G431B_ESC1",
"disco_b_u585i_iot02a": "B_U585I_IOT02A",
"nucleo_wl55jc": "NUCLEO_WL55JC1"
2 changes: 2 additions & 0 deletions variants/STM32L4xx/L431C(B-C)(T-U)/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -21,7 +21,9 @@ target_link_libraries(variant INTERFACE variant_usage)
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
generic_clock.c
PeripheralPins.c
PeripheralPins_CYGNET_L4.c
variant_generic.cpp
variant_CYGNET_L4.cpp
)
target_link_libraries(variant_bin PUBLIC variant_usage)

296 changes: 296 additions & 0 deletions variants/STM32L4xx/L431C(B-C)(T-U)/PeripheralPins_CYGNET_L4.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,296 @@
/*
*******************************************************************************
* Copyright (c) 2020, STMicroelectronics
* All rights reserved.
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
*******************************************************************************
*/
/*
* Manually generated by Blues with knowledge of the CYGNET schematic
*/
#if defined(ARDUINO_CYGNET_L4)
#include "Arduino.h"
#include "PeripheralPins.h"

/* =====
* Notes:
* - The pins mentioned Px_y_ALTz are alternative possibilities which use other
* HW peripheral instances. You can use them the same way as any other "normal"
* pin (i.e. analogWrite(PA7_ALT1, 128);).
*
* - Commented lines are alternative possibilities which are not used per default.
* If you change them, you will have to know what you do
* =====
*/

//*** ADC ***

#ifdef HAL_ADC_MODULE_ENABLED
WEAK const PinMap PinMap_ADC[] = {
{PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5 - A0
{PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6 - A1
{PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 - A2
{PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8 - A3
{PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9 - BAT_VOLTAGE
{PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10 - CK
{PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 - MI
{PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12 - A5
{PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15 - D11
{PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16 - A4
{NC, NP, 0}
};
#endif

//*** DAC ***

#ifdef HAL_DAC_MODULE_ENABLED
WEAK const PinMap PinMap_DAC[] = {
// {PA_4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 - BAT_VOLTAGE
{PA_5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 - CK
{NC, NP, 0}
};
#endif

//*** I2C ***

#ifdef HAL_I2C_MODULE_ENABLED
WEAK const PinMap PinMap_I2C_SDA[] = {
{PA_10, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - RX
{PB_4, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, // - D13
{PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - SDA
{PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - D6
// {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, // - LPUART1_VCP_TX
{PB_14, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, // - D9
{NC, NP, 0}
};
#endif

#ifdef HAL_I2C_MODULE_ENABLED
WEAK const PinMap PinMap_I2C_SCL[] = {
{PA_7, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, // - A5
{PA_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - TX
{PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - SCL
{PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, // - D5
// {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, // - LPUART1_VCP_RX
{PB_13, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, // - D10
{NC, NP, 0}
};
#endif

//*** No I3C ***

//*** TIM ***

#ifdef HAL_TIM_MODULE_ENABLED
WEAK const PinMap PinMap_TIM[] = {
{PA_0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - A0
{PA_1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 - A1
{PA_1_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 1)}, // TIM15_CH1N - A1
{PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 - A2
{PA_2_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 0)}, // TIM15_CH1 - A2
{PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 - A3
{PA_3_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 2, 0)}, // TIM15_CH2 - A3
{PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - CK
{PA_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 0)}, // TIM16_CH1 - MI
{PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N - A5
{PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 - LED_BUILTIN
{PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 - TX
{PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 - RX
// {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 - USB_DM
// {PA_15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - CHARGE_DETECT
{PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N - D11
{PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N - A4
// {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 - USER_BTN
{PB_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 1)}, // TIM16_CH1N - SCL
{PB_8, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 0)}, // TIM16_CH1 - D5
// {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 - LPUART1_VCP_RX
// {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 - LPUART1_VCP_TX
{PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N - D10
{PB_13_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 1)}, // TIM15_CH1N - D10
{PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N - D9
{PB_14_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 0)}, // TIM15_CH1 - D9
{PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N - D12
{PB_15_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 2, 0)}, // TIM15_CH2 - D12
{NC, NP, 0}
};
#endif

//*** UART ***

#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_TX[] = {
{PA_2, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - A2
{PA_2_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // - A2
{PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - TX
{PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - SCL
{PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - LPUART1_VCP_RX
{PB_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - LPUART1_VCP_TX
{NC, NP, 0}
};
#endif

#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_RX[] = {
{PA_3, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - A3
{PA_3_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // - A3
{PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - RX
// {PA_15, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART2)}, // - CHARGE_DETECT
{PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - SDA
{PB_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - LPUART1_VCP_RX
{PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - LPUART1_VCP_TX
{NC, NP, 0}
};
#endif

#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_RTS[] = {
{PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // - A1
// {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - USB_DP
// {PA_15, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - CHARGE_DETECT
{PB_1, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - A4
{PB_1_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - A4
// {PB_3, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - USER_BTN
// {PB_12, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - NC
{PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - D9
{NC, NP, 0}
};
#endif

#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_CTS[] = {
{PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // - A0
{PA_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - MI
{PA_6_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - MI
// {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - USB_DM
{PB_4, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // - D13
{PB_13, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // - D10
{PB_13_ALT1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // - D10
{NC, NP, 0}
};
#endif

//*** SPI ***

#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_MOSI[] = {
{PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - A5
// {PA_12, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - USB_DP
{PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - MO
{PB_5_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - MO
{PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - D12
{NC, NP, 0}
};
#endif

#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_MISO[] = {
{PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - MI
// {PA_11, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - USB_DM
{PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - D13
{PB_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - D13
{PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - D9
{NC, NP, 0}
};
#endif

#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_SCLK[] = {
{PA_1, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - A1
{PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - CK
// {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - USER_BTN
// {PB_3_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - USER_BTN
// {PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - LPUART1_VCP_RX
{PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - D10
{NC, NP, 0}
};
#endif

#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_SSEL[] = {
// {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - BAT_VOLTAGE
// {PA_4_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - BAT_VOLTAGE
// {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - CHARGE_DETECT
// {PA_15_ALT1, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // - CHARGE_DETECT
{PB_0, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // - D11
{PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - D6
// {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)}, // - NC
{NC, NP, 0}
};
#endif

//*** CAN ***

#if defined(HAL_CAN_MODULE_ENABLED) || defined(HAL_CAN_LEGACY_MODULE_ENABLED)
WEAK const PinMap PinMap_CAN_RD[] = {
// {PA_11, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, // - USB_DM
{PB_8, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, // - D5
{NC, NP, 0}
};
#endif

#if defined(HAL_CAN_MODULE_ENABLED) || defined(HAL_CAN_LEGACY_MODULE_ENABLED)
WEAK const PinMap PinMap_CAN_TD[] = {
// {PA_12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, // - USB_DP
{PB_9, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)}, // - D6
{NC, NP, 0}
};
#endif

//*** No ETHERNET ***

//*** QUADSPI ***

#ifdef HAL_QSPI_MODULE_ENABLED
WEAK const PinMap PinMap_QUADSPI_DATA0[] = {
{PB_1, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO0 - A4
{NC, NP, 0}
};
#endif

#ifdef HAL_QSPI_MODULE_ENABLED
WEAK const PinMap PinMap_QUADSPI_DATA1[] = {
{PB_0, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO1 - D11
{NC, NP, 0}
};
#endif

#ifdef HAL_QSPI_MODULE_ENABLED
WEAK const PinMap PinMap_QUADSPI_DATA2[] = {
{PA_7, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO2 - A5
{NC, NP, 0}
};
#endif

#ifdef HAL_QSPI_MODULE_ENABLED
WEAK const PinMap PinMap_QUADSPI_DATA3[] = {
{PA_6, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO3 - MI
{NC, NP, 0}
};
#endif

#ifdef HAL_QSPI_MODULE_ENABLED
WEAK const PinMap PinMap_QUADSPI_SCLK[] = {
{PA_3, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_CLK - A3
// {PB_10, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_CLK - LPUART1_VCP_RX
{NC, NP, 0}
};
#endif

#ifdef HAL_QSPI_MODULE_ENABLED
WEAK const PinMap PinMap_QUADSPI_SSEL[] = {
{PA_2, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_NCS - A2
// {PB_11, QUADSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_NCS - LPUART1_VCP_TX
{NC, NP, 0}
};
#endif

//*** No USB ***

//*** No SD ***

#endif /* !CUSTOM_PERIPHERAL_PINS */
168 changes: 168 additions & 0 deletions variants/STM32L4xx/L431C(B-C)(T-U)/variant_CYGNET_L4.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
/*
*******************************************************************************
* Copyright (c) 2020, STMicroelectronics
* All rights reserved.
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
*******************************************************************************
*/
#if defined(ARDUINO_CYGNET_L4)
#include "pins_arduino.h"

// Digital PinName array
const PinName digitalPin[] = {
PA_0, // 0 - A0/D0
PA_1, // 1 - A1/D1
PA_2, // 2 - A2/D2
PA_3, // 3 - A3/D3
PB_1, // 4 - A4/D4
PB_8, // 5 - D5
PB_9, // 6 - D6
PA_4, // 7 - BAT_VOLTAGE
PA_8, // 8 - LED_BUILTIN
PB_14, // 9 - D9
PB_13, // 10 - D10
PB_0, // 11 - D11
PB_15, // 12 - D12
PB_4, // 13 - D13
PA_5, // 14 - CK
PA_6, // 15 - MI
PA_7, // 16 - A5
PA_9, // 17 - TX
PA_10, // 18 - RX
PA_11, // 19 - USB_DM
PA_12, // 20 - USB_DP
PA_13, // 21 - SWDIO
PA_14, // 22 - SWCLK
PA_15, // 23 - CHARGE_DETECT
PB_3, // 24 - USER_BTN
PB_5, // 25 - MO
PB_6, // 26 - SCL
PB_7, // 27 - SDA
PB_10, // 28 - LPUART1_VCP_RX
PB_11, // 29 - LPUART1_VCP_TX
PC_13, // 30 - USB_DETECT
PC_14, // 31 - OSC32_IN
PC_15, // 32 - OSC32_OUT
PH_0, // 33 - ENABLE_3V3
PH_1, // 34 - DISCHARGE_3V3
PH_3 // 35 - B
};

// Analog (Ax) to digital pin number array
const uint32_t analogInputPin[] = {
0, // A0, PA0
1, // A1, PA1
2, // A2, PA2
3, // A3, PA3
4, // A4, PB1
16 // A5, PA7
};

// ----------------------------------------------------------------------------

#ifdef __cplusplus
extern "C" {
#endif

WEAK void initVariant(void)
{
GPIO_InitTypeDef GPIO_InitStruct;

// Init lines that we'll be using below
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();

/* Set DISCHARGE_3V3 as well as the pins we're not initially using to FLOAT */
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pin = GPIO_PIN_1;
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); /* PH1 DISCHARGE_3V3 */
GPIO_InitStruct.Pin = GPIO_PIN_13;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /* PC13 is USB_DETECT */
GPIO_InitStruct.Pin = GPIO_PIN_15;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* PA15 is CHARGE_DETECT */
GPIO_InitStruct.Pin = GPIO_PIN_4;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* PA4 is BAT_VOLTAGE */

/* Turn on the 3V3 regulator */
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
GPIO_InitStruct.Pin = GPIO_PIN_0;
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOH, GPIO_InitStruct.Pin, GPIO_PIN_SET);

}

/**
* @brief System Clock Configuration
* @param None
* @retval None
*/
WEAK void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {};

/** Configure the main internal regulator output voltage
*/
if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) {
Error_Handler();
}
/** Configure LSE Drive Capability
*/
HAL_PWR_EnableBkUpAccess();
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_MSI;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
RCC_OscInitStruct.MSIState = RCC_MSI_ON;
RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
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_2) != HAL_OK) {
Error_Handler();
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB | RCC_PERIPHCLK_SDMMC1
| RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_OSPI;
PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK;
PeriphClkInit.OspiClockSelection = RCC_OSPICLKSOURCE_SYSCLK;
PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_MSI;
PeriphClkInit.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_MSI;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
Error_Handler();
}
/** Enable MSI Auto calibration
*/
HAL_RCCEx_EnableMSIPLLMode();

/** Ensure that MSI is wake-up system clock
*/
__HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_MSI);
}

#ifdef __cplusplus
}
#endif

#endif /* ARDUINO_CYGNET_L4 */
208 changes: 208 additions & 0 deletions variants/STM32L4xx/L431C(B-C)(T-U)/variant_CYGNET_L4.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
/*
*******************************************************************************
* Copyright (c) 2020, STMicroelectronics
* All rights reserved.
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
*******************************************************************************
*/
#pragma once

/*----------------------------------------------------------------------------
* Arduino digital pin numbers on the right (indexes into the digitalPin[] array)
* and the STM32 pins they correspond to on the left. The only apparent
* function I can see is to reference a pin in a sketch in something
* like digitalWrite() and have it index into digitalPin[] to find the
* actual pin. On the other hand, PIN_A* are numbers offset by PNUM_ANALOG_BASE,
* which serves to say that this IS an analog pin and which tells analogWrite
* to index into the digitalPin[] array to find the actual pin.
*----------------------------------------------------------------------------*/
#define PA0 PIN_A0 // A0/D0
#define PA1 PIN_A1 // A1/D1
#define PA2 PIN_A2 // A2/D2
#define PA3 PIN_A3 // A3/D3
#define PB1 PIN_A4 // A4/D4
#define PB8 5 // D5
#define PB9 6 // D6
#define PA4 7 // BAT_VOLTAGE
#define PA8 8 // LED_BUILTIN
#define PB14 9 // D9
#define PB13 10 // D10
#define PB0 11 // D11
#define PB15 12 // D12
#define PB4 13 // D13
#define PA5 14 // CK
#define PA6 15 // MI
#define PA7 PIN_A5 // A5
#define PA9 17 // TX
#define PA10 18 // RX
#define PA11 19 // USB_DM
#define PA12 20 // USB_DP
#define PA13 21 // SWDIO
#define PA14 22 // SWCLK
#define PA15 23 // CHARGE_DETECT
#define PB3 24 // USER_BTN
#define PB5 25 // MO
#define PB6 26 // SCL
#define PB7 27 // SDA
#define PB10 28 // LPUART1_VCP_RX
#define PB11 29 // LPUART1_VCP_TX
#define PC13 30 // USB_DETECT
#define PC14 31 // OSC32_IN
#define PC15 32 // OSC32_OUT
#define PH0 33 // ENABLE_3V3
#define PH1 34 // DISCHARGE_3V3
#define PH3 35 // B

// Alternate pins number
#define PA1_ALT1 (PA1 | ALT1)
#define PA2_ALT1 (PA2 | ALT1)
#define PA3_ALT1 (PA3 | ALT1)
#define PA4_ALT1 (PA4 | ALT1)
#define PA6_ALT1 (PA6 | ALT1)
#define PA15_ALT1 (PA15 | ALT1)
#define PB1_ALT1 (PB1 | ALT1)
#define PB3_ALT1 (PB3 | ALT1)
#define PB4_ALT1 (PB4 | ALT1)
#define PB5_ALT1 (PB5 | ALT1)
#define PB13_ALT1 (PB13 | ALT1)
#define PB14_ALT1 (PB14 | ALT1)
#define PB15_ALT1 (PB15 | ALT1)

#define NUM_DIGITAL_PINS 36
#define NUM_ANALOG_INPUTS 6

// On-board LED pin number
#ifndef LED_BUILTIN
#define LED_BUILTIN PA8
#endif

// On-board user button
#ifndef USER_BTN
#define USER_BTN PB3
#endif

// Power switch ENABLE and DISCHARGE pins
#ifndef ENABLE_3V3
#define ENABLE_3V3 PH0
#endif
#ifndef DISCHARGE_3V3
#define DISCHARGE_3V3 PH1
#define DISABLE_DISCHARGING HIGH
#define ENABLE_DISCHARGING LOW
#endif
#ifndef CHARGE_DETECT
#define CHARGE_DETECT PA15
#endif

// SPI definitions
#ifndef PIN_SPI_SS
#define PIN_SPI_SS PB8 // Just default to D5, because we don't have a CS pin
#endif
#ifndef PIN_SPI_SS1
#define PIN_SPI_SS1 PNUM_NOT_DEFINED
#endif
#ifndef PIN_SPI_SS2
#define PIN_SPI_SS2 PNUM_NOT_DEFINED
#endif
#ifndef PIN_SPI_SS3
#define PIN_SPI_SS3 PNUM_NOT_DEFINED
#endif
#ifndef PIN_SPI_MOSI
#define PIN_SPI_MOSI PB5
#endif
#ifndef PIN_SPI_MISO
#define PIN_SPI_MISO PA6
#endif
#ifndef PIN_SPI_SCK
#define PIN_SPI_SCK PA5
#endif

// I2C definitions
#ifndef PIN_WIRE_SDA
#define PIN_WIRE_SDA PB7
#endif
#ifndef PIN_WIRE_SCL
#define PIN_WIRE_SCL PB6
#endif

// Timer Definitions
// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin
#ifndef TIMER_TONE
#define TIMER_TONE TIM6
#endif
#ifndef TIMER_SERVO
#define TIMER_SERVO TIM7
#endif

// UART Definitions
#ifndef SERIAL_UART_INSTANCE
#define SERIAL_UART_INSTANCE 101
#endif

// Default pin used for generic 'Serial' instance
// Mandatory for Firmata
#ifndef PIN_SERIAL_RX
#define PIN_SERIAL_RX PA10
#endif
#ifndef PIN_SERIAL_TX
#define PIN_SERIAL_TX PA9
#endif

// LPUART1
#ifndef PIN_SERIAL_LP1_RX
#define PIN_SERIAL_LP1_RX PB10
#endif
#ifndef PIN_SERIAL_LP1_TX
#define PIN_SERIAL_LP1_TX PB11
#endif

// Virtual COM Port for Cygnet with a 14-pin STLink Connector mounted.
// To use the STLINK's Virtual COM port, this would be added to an Arduino project:
// HardwareSerial SerialVCP(PIN_VCP_RX, PIN_VCP_TX);
#ifndef PIN_VCP_RX
#define PIN_VCP_RX PIN_SERIAL_LP1_RX
#endif
#ifndef PIN_VCP_TX
#define PIN_VCP_TX PIN_SERIAL_LP1_TX
#endif

// Extra HAL modules
#if !defined(HAL_DAC_MODULE_DISABLED)
#define HAL_DAC_MODULE_ENABLED
#endif
#if !defined(HAL_QSPI_MODULE_DISABLED)
#define HAL_QSPI_MODULE_ENABLED
#endif

/*----------------------------------------------------------------------------
* Arduino objects - C++ only
*----------------------------------------------------------------------------*/

#ifdef __cplusplus
// These serial port names are intended to allow libraries and architecture-neutral
// sketches to automatically default to the correct port name for a particular type
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
//
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
//
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
//
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
//
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
//
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
// pins are NOT connected to anything by default.
#ifndef SERIAL_PORT_MONITOR
#define SERIAL_PORT_MONITOR Serial
#endif
#ifndef SERIAL_PORT_HARDWARE
#define SERIAL_PORT_HARDWARE Serial
#endif
#endif