This is an old revision of the document!
Table of Contents
NUCLEO-WL55JC1
This board uses a dual core STM32WL55JC MCU which contains both a Cortex-M4 and Cortex-M0+ CPU.
Two demo boards exist, the JC1 and JC2. The former is for high band RF and the latter low band RF.
Pinout
Clocks
OSC32 X2 NX2012SA 32.768KHz PC14/PC15 OSC X3 NX2016SA 32MHz
Peripherals
PB9 LED2 GREEN PB11 LED3 RED PB15 LED1 BLUE PA2 USART2_TX VCP_TX LPUART1_TX PA3 USART2_TX VCP_TX LPUART1_RX PB6 USART1_TX ARDUINO_TX PB7 USART1_RX ARDUINO_RX PA0 BUTTON1 PC13 PA1 BUTTON2 PC6 BUTTON3
Frontend
PC3 FE_CTRL3 PC4 FE_CTRL1 PC5 FE_CTRL2 PB0 VDD_TCXO
RF mode | FE_CTRL1 | FE_CTRL2 | FE_CTRL3 |
---|---|---|---|
Tx high power | 0 | 1 | 1 |
Tx low power | 1 | 1 | 1 |
Rx | 1 | 0 | 1 |
Software
Software available for this board depends on a proprietary IDE and doesn't support GNU Make or cmake out of the box.
There are two version of the support package. One contains proprietary source code and is dated, the other only free to use source code and is maintained and kept up to date.
1.3.0
This version contains proprietary source files and requires an ST login to download.
Extract
unzip en.stm32cubewl-v1-3-0.zip
Github
Source code on github is maintained but lacks proprietary code. See the README section for a list of features removed.
Checkout
git clone --recursive https://github.com/STMicroelectronics/STM32CubeWL.git
Update
git pull git submodule update --init --recursive
README
These are the features removed from the non proprietary version maintained at github
cat Projects/README.md # Some projects are unavailable in this repository In this repository, some middleware libraries **along with** the projects (demos, applications, and examples) using them, are **not available**. Please refer to the [README.md](../README.md#some-middleware-libraries-and-projects-are-unavailable-in-this-repository) file at the root of this repository for further details. ## List of unavailable projects * `./Projects/B-WL5M-SUBG1/Applications/LoRaWAN/LoRaWAN_End_Node_DualCore` * `./Projects/B-WL5M-SUBG1/Applications/LoRaWAN_FUOTA_DualCore_ExtFlash` * `./Projects/NUCLEO-WL55JC/Applications/BFU_1_Slot` * `./Projects/NUCLEO-WL55JC/Applications/BFU_2_Slots` * `./Projects/NUCLEO-WL55JC/Applications/LoRaWAN/LoRaWAN_AT_Slave_DualCore` * `./Projects/NUCLEO-WL55JC/Applications/LoRaWAN/LoRaWAN_End_Node_DualCore` * `./Projects/NUCLEO-WL55JC/Applications/LoRaWAN/LoRaWAN_End_Node_DualCoreFreeRTOS` * `./Projects/NUCLEO-WL55JC/Applications/LoRaWAN_FUOTA` * `./Projects/NUCLEO-WL55JC/Applications/LoRaWAN_FUOTA_DualCore` * `./Projects/NUCLEO-WL55JC/Applications/LoRaWAN_SBSFU_1_Slot_DualCore` * `./Projects/NUCLEO-WL55JC/Applications/SBSFU_1_Slot_DualCore` * `./Projects/NUCLEO-WL55JC/Applications/SBSFU_2_Slots_DualCore` * `./Projects/NUCLEO-WL55JC1/Applications/Sigfox_SBSFU_1_Slot_DualCore`
Application
Checkout the software package from github into the STM32CubeMX project directory as STM32CubeWL
Create an LoRAWAN end node which will default to the following connection parameters
EU_863_870 Default frequency plan for Europe Link Layer TS001-1.0.4 + Regional Parameters RP002-1.0.1
- Open STM32CubeMX
- Go to Load project
- Navigate to STM32CubeWL/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/LoRaWAN_End_Node
- Open LoRaWAN_End_Node.ioc
- Go to Project Manager
- Change toolchain to Makefile
- Change MCU and Firmware Location to the checkout directory STM32CubeWL
- Setup LoRaWAN commissioning (LoRaWAN/App/se-identity.h)
- Generate code (ignore message about Platform settings)
At this point the project can be built using `make'
make ... text data bss dec hex filename 78816 280 10968 90064 15fd0 build/LoRaWAN_End_Node.elf arm-none-eabi-objcopy -O ihex build/LoRaWAN_End_Node.elf build/LoRaWAN_End_Node.hex arm-none-eabi-objcopy -O binary -S build/LoRaWAN_End_Node.elf build/LoRaWAN_End_Node.bin
Program using the STM32CubeProgrammer GUI for convenience.
Log
APPLICATION_VERSION: V1.3.0 MW_LORAWAN_VERSION: V2.5.0 MW_RADIO_VERSION: V1.3.0 L2_SPEC_VERSION: V1.0.4 RP_SPEC_VERSION: V2-1.0.1 ###### AppKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### NwkKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### AppSKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### NwkSKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### DevEUI: xx:xx:xx:xx:xx:xx:xx:xx ###### AppEUI: 01:01:01:01:01:01:01:01 ###### DevAddr: xx:xx:xx:xx 0s037:TX on freq 868500000 Hz at DR 0 1s522:MAC txDone 6s553:RX_1 on freq 868500000 Hz at DR 0 7s871:MAC rxDone ###### = JOINED = OTAA ===================== ###### U/L FRAME:JOIN | DR:0 | PWR:0 ###### MCRootKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### MCKEKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### AppSKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### NwkSKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### DBIntKey: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx ###### DevEUI: xx:xx:xx:xx:xx:xx:xx:xx ###### AppEUI: 01:01:01:01:01:01:01:01 ###### DevAddr: xx:xx:xx:xx ... ###### ========== MCPS-Confirm ============= ###### U/L FRAME:0010 | PORT:2 | DR:0 | PWR:0 | MSG TYPE:UNCONFIRMED 110s118:VDDA: 254 110s118:temp: 25 110s118:Next Tx in : ~49 second(s) 160s030:VDDA: 254 160s030:temp: 25 160s034:TX on freq 868500000 Hz at DR 0 160s037:SEND REQUEST 161s683:MAC txDone 162s714:RX_1 on freq 868500000 Hz at DR 0 162s913:IRQ_RX_TX_TIMEOUT 162s913:MAC rxTimeOut 163s714:RX_2 on freq 869525000 Hz at DR 0 163s913:IRQ_RX_TX_TIMEOUT 163s913:MAC rxTimeOut ###### ========== MCPS-Confirm ============= ###### U/L FRAME:0011 | PORT:2 | DR:0 | PWR:0 | MSG TYPE:UNCONFIRMED 170s038:VDDA: 254 170s038:temp: 25 170s038:Next Tx in : ~154 second(s)