Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and discuss STM32 wireless solutions and their implementation for running Bluetooth LE, Zigbee, LoRaWAN applications.
Most recent activity
..
I created a new project from BLE_HeartRate.ioc (v1.13.1) using STM32CubeIDE (v6.4.0). The code executes on the P-NUCLEO-WB55 as well as on my target HW. I then added peripherals from my application: ADC1, I2C3, SAI1 etc. I was unable to communicate via i2C3 with my LED driver. Write timeouts occur. I have an older version of the application code generated using v6.3.0 that works over i2c. It appears that the peripheral clocks are not getting enabled in the code generated by v6.4.0.// v.6.3.0 Code /** * @brief Peripherals Common Clock Configuration * @retval None */ void PeriphCommonClock_Config(void) { RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RFWAKEUP |RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1 |RCC_PERIPHCLK_SAI1|RCC_PERIPHCLK_I2C3 |RCC_PERIPHCLK_RNG|RCC_PERIPHCLK_ADC; PeriphClkInitStruct.PLLSAI1.PLLN = 24; PeriphClk
Hii try to figure out, if my main stack pointer is correct. When debug my program, after execute startup.s file the value of msp is 0x20008000, but like this i used only half sram, right? This micro have 64KB of sram. I believe that the value of msp would be 0x20010000, on top of the sram. This mcu have sram1 start 0x20000000 end 0x20007FFF, and sram2 start 0x20008000 end 0x2000FFFF.Follow my linker script:/* Highest address of the user mode stack */ _estack = ORIGIN(RAM1) + LENGTH(RAM1); /* end of "SRAM1" Ram type memory */ _Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Stack_Size = 0x800; /* required amount of stack */ /* Memories definition */ MEMORY { ROM (rx) : ORIGIN = 0x08000000, LENGTH = 256K RAM1 (xrw) : ORIGIN = 0x20000000, LENGTH = 32K /* Non-backup SRAM1 */ RAM2 (xrw) : ORIGIN = 0x20008000, LENGTH = 32K &nb
In the news today:"Sigfox, the French IoT startup that had raised more than $300M, files for bankruptcy protection as it seeks a buyer"https://techcrunch.com/2022/01/27/sigfox-the-french-iot-startup-that-had-raised-more-than-300m-files-for-bankruptcy-protection-as-it-seeks-a-buyer/
#define RADIO_TCXO_VCC_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()#define RADIO_ANT_SWITCH_CLK_ENABLE_RX() __HAL_RCC_GPIOA_CLK_ENABLE()#define RADIO_ANT_SWITCH_CLK_ENABLE_TX_BOOST() __HAL_RCC_GPIOC_CLK_ENABLE()#define RADIO_ANT_SWITCH_CLK_ENABLE_TX_RFO() __HAL_RCC_GPIOC_CLK_ENABLE()FIRST: TXCO ENABLE/DISABLE, RIGHT ?SECOND: TRANSMIT/RECEIVE ANTENNA DIRECTIONTHIRD: ?FOURTH: ?Thank you!
I'm not able to pair our application running STM32WB55 via STM32CubeMonitor-RF. Pairing with iOS sniffer apps are working. What are the settings and commands I shall apply in STM32CubeMonitor-RF?Our device is using a 6 digit pin, bondle mode, MITM protection. Any other setting which might needed for P-NUCLEO-WB55 dongle? BR,David
Hi all,Currently i'm reading and writing to external flash using the QSPI peripheral. All data i write is received correctly but there seems to be a "unnecessary" delay in both writing and reading QSPI.Sequence start with command 0x34 (page program)Followed by 32bits of addressSo far so good. Then it starts transmitting data using 4 lines. Here a delay is introduced between every set of 2 clock cycles (see attached picture). Does anyone know where this delay comes from or how i can solve it?Kind regards,TaxaraQSPI_CommandTypeDef command; command.InstructionMode = QSPI_INSTRUCTION_1_LINE; command.Instruction = 0x34; command.AddressSize = QSPI_ADDRESS_32_BITS; command.AddressMode = QSPI_ADDRESS_1_LINE; command.Address = address; command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; command.AlternateBytes = QSPI_ALTERNATE_BYTES_NONE; command.AlternateBytesSize = QSPI_ALTERNATE_BYTES_NONE; command.DummyCycles = 0; command.DataMode = QSPI_DATA_4_LINES; command.N
In the AN5566 RF certification process for NUCLEO-WL55JC, chapter 1.3 talk about ETSI 300-200: Short Range Devices (SRD) operating in the frequency range 25 MHz to 1000 MHz.But there is no ETSI 300-200, the correct is ETSI EN 300 220.
Hi,My board has STM32WB55RE on it. I have developed the code from STM32CubeMx.I am trying to program and debug via IAR workbench I am getting this error I have JLink v7.54a software installed. I opened the Jflash and tried to connect the target. It is connected and programmed successfully but the application didn't run. The signals at SWD connector on my boardVTar - 3VGnd - 0VNRST - 3VSCLK - 0VSWDIO - 2.5VI tried another setup; I used SWD lines(ST-Link) from the Nucleo WB55 board to my board and did the program and debug. I was successful. I could see that the application is running. This confirms that the SWD lines on my board are correct. With this setup,VTar - 3VGnd - 0VNRST - 3VSCLK - 0VSWDIO - 3VHow can I enable JLink for my board?I see a difference of level SWDIO 2.5V and 3V in two different setups. Is this causing this problem?Thanks
We are using the STM32WL microcontroller on a custom board designed according to the reference schematic MB1582. There is an issue with LoRa - the message "MAC txTimeOut" is displayed as shown in the image.Other functionalities- GPIOs, interrupts, I2C are working fine. We have used a 32 MHz crystal X2 as given in the reference schematic.Note: 1.We tried using an external clock source instead of the on-board crystal and LoRa worked partially - "MAC txDone" was displayed once in multiple attempts but we couldn't receive the data on the gateway side.2.The sample STM32WL Discovery board uses a TCXO crystal as clock source and LoRa is working perfectly without any problem in that.What has to be done to solve this issue?
I am programming an STM32WLE5CCU6 using STM32CubeProgrammer v2.9.0 and USART / embedded bootloader. Without exception, every binary I attempt to program (ELF or bin does not matter) is truncated at a 4k boundary (0x1E000 in one case, 0x14000 in another). The last portion of the binary is not programmed to the MCU.Using the ST-Link v2 on the same part, programming is successful. Binaries are produced with STM32CubeIDE v1.8.0 using the built-in ARM GCC toolset.This very much looks like a bug in STM32CubeProgrammer v2.9.0
I try add new project and software package BLE1, but generated code report error and software packs report unresolved deps, but i simply cant found way.Pls can anybody write 1.2.3.4 ... steps for setup BLE stack project in MX plugin.
Hi, I'm starting a new project for a client that needs a sub-1 GHz transmitter and receiver. The distance between the 2 communicating devices will be fixed at approximately 5 ft apart. There will be potential obstructions of metal between the 2 devices. The data to communicate is 1-way only, and is just the value of a switch (open or closed). The receiver needs to detect the switch closing at the transmitter within 100 ms. Can you recommend hardware and firmware (including starting example code) that can handle these requirements? Is there an existing firmware protocol stack for something like this? I need to understand the firmware effort required. Thanks...Brian
I have a STM32WB55 Nucleo with which I would like to implement a BLE client (mast, central). In the end it should be able to automatically parse with another BLE (slave, peripheral). Currently I have no idea how to accomplish this task and my Google Skills were disappointing.Does anyone have an example project or knows a good reference?
Application note AN2606, on page 380. It says that in the default bootloader, USART is used on pin PA9 (E5)(TX) and PA10 (C8)(RX). However, when I select USART1 in STM32CubeMX, in mode Asynchronous, pins E1 (TX) and C3 (RX) are used. USART programming is not possible with the default bootloader then, right?
Hi all, I'm trying to implement SPI TX communication with DMA. The following "prepareDMASPI()" function should configure and start DMA transferts from a buffer to the SPI device. But it doesn't work (No spi clock or MOSI data), although the SPI is properly configured (and working when used without DMA)Could you please tell me if you see something missing ? (It's Go code, but should be easy to understand) Thanks. func prepareDMASPI() { // Disable device, memory to memory mode, peripheral increment stm32.DMA1.CCR1.ClearBits(stm32.DMA_CCR1_MEM2MEM | stm32.DMA_CCR1_PINC | stm32.DMA_CCR1_EN) // Set Memory increment, circular mode, memory to peripheral stm32.DMA1.CCR1.SetBits(stm32.DMA_CCR1_MINC | stm32.DMA_CCR1_CIRC | stm32.DMA_CCR1_DIR) stm32.DMA1.CCR1.ReplaceBits(stm32.DMA_CCR1_MSIZE_Bits8, stm32.DMA_CCR1_MSIZE_Msk, 0) // 8bit mem mode stm32.DMA1.CCR1.ReplaceBits(stm32.DMA_CCR1_PSIZE_Bits8, stm32.DMA_CCR1_PSIZE_Msk, 0) // 8bit periph mode stm32.DMA1.CCR1.ReplaceBits(stm32.DM
Hi everyone,I am currently working on the STM32WL55JC, I am using the stm32cubewl_v1-1-0 for doing a LoRa application and a Sigfox application using the provided examples. I would like to know if there are any limitations (Hardware and/or software) for implementing an application which mixes the use at runtime of the 2 LPWAN commmunications (LoRa and Sigfox). In term of memory consumption, I see that the application needs to be optimized to fit in. But do you have any other ones ?Has someone already tried it ? thank you in advance.Best regards
Good afternoon....Trying to trigger scan mode (2 channels but 3 conversions ---- A/D 9, A/D 9, A/D 10) via software trigger that is called in the LPTIMER (I do not have access to other timers bcz they are tied up in other code that is why I am not using a trigger output) callback function. Can someone see something I am missing as the adcValue array is always empty ?ADC CubeMx settings: DMA CubeMx settings: Main IRQ code: (In debugger I can see the timer running and I am getting to the Start DMA)void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef *hlptim) { if (hlptim == &hlptim1) //debounce timer { HAL_LPTIM_OnePulse_Stop_IT(&hlptim1); if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET) { EXTI->PR1 |= EXTI_PR1_PIF1; //clear any that came AFTER debounce EXTI->IMR1 |= EXTI_IMR1_IM1; //enable / unmask ISR.B_LockOut = T; } } else { HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, 0); //LED on // HAL_ADC_Start_IT(&hadc1);
Hi,we are working on an own hardware design with the STM32WL55.According to AN5457, section 5.1.2, I am supposed to select a Power mode (Low or High), and then a maximum output power for which I would want to optimize my design. With that maximum output power in mind I would then get optimal PA settings from table 2. Those settings are what I use in firmware when I adjust the RF matching network in hardware. Using different PA settings can change the PA output impedance, so when I have adjusted the network once, I must make sure to always use those same PA settings on that hardware.In radio_driver.c from the SubGHz_Phy middleware of the STM32Cude Firmware for the STM32WL55 (version 1.1.0) (STM32Cube_FW_WL_V1.1.0\Middlewares\Third_Party\SubGHz_Phy\stm32_radio_driver\radio_driver.c) in the function SUBGRF_SetTxParams, lines 647 to 654, the radio driver selects different PA settings depending on the selected output power. If i understand AN5457 correctly, that could change the PA output i
My project involves LoRaWAN communication and embedded machine learning. we've trained a basic model which fits in flash memory, but barely. As our data set grows and our model becomes smarter, I imagine we will need more space. As of right now, our model absorbs about 90% of flash memory.For the other requirement, we also need the device to be a very simple, Class A or B, LoRa end node that sends very small, simple packets of data to a gateway. Loading up the end node example project, the build analyzer shows that it takes up 26% of flash.Our control loop will be very simple and not add much more to the memory budget, but at this point, I can't see a way forward that will allow me to build my project including both the LoRa stack and our embedded ML model. The only solution I can think of is to somehow expand the available memory with some SPI SD card reader or RAM expansion chip of some kind. But I can't find anywhere in the documentation for the STM32WL series where there is so
I am running a scan mode of AD9 and AD10. I use a timer to generate an interrupt every 15ms....Inside this IRQ I start an ADC conversion scan.....After each conversion I store the value into an array. I have a potentiometer hooked up to adcValue[0] ...This is very stable...I have a battery (1.6V ) connected to adcValue[1] and it is bouncing all over the place. I do NOT want to use DMA. Can someone please look at my code and tell me what I am missing? The ADClock is 64MHz and the Timer is running at 32.768kHz.Here is my code setting up the ADC, TIMER and IRQs:static void MX_ADC1_Init(void) { /* USER CODE BEGIN ADC1_Init 0 */ /* USER CODE END ADC1_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; /* USER CODE BEGIN ADC1_Init 1 */ /* USER CODE END ADC1_Init 1 */ /** Common config */ hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
Hi,I have a problem with USB CDC on STM32WB, after calling LL_C1_IPCC_SetFlag_CHx(IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL). The USB stops working. Data cannot be sent or received via USB and also the USB IRQ is not working. The USB does not work also after finishing MX_APPE_Process() function.The backtrace of LL_C1_IPCC_SetFlag_CHx call:MX_APPE_Process() -> UTIL_SEQ_Run (Mask_bm=4294967295) -> shci_user_evt_proc () -> APPE_SysUserEvtRx (pPayload=0x2002ff7c) -> APPE_SysEvtReadyProcessing () -> APP_THREAD_Init () -> SHCI_C2_THREAD_Init () -> shci_send (cmd_code=64615, len_cmd_payload=0 '\000', p_cmd_payload=0x0, p_rsp=0x2002ff1c) -> TL_SYS_SendCmd (buffer=0x0, size=0) -> HW_IPCC_SYS_SendCmd () -> LL_C1_IPCC_SetFlag_CHx(IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL); Here is my CubeMX configuration for USB and STM32_WPAN.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.