Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi, I'm working on a ESL project using STM32WB09. In order to reach greater distances, is it possible to use the CODED PHY ? Thank you
The STM32G441KB datasheet is still watermarked with DRAFT , seems to be latest version, DS12960 Rev 5.That can make a user a little unsure… 😉
Hello,ST Customer Support advised me to post this question in the ST Community.I am planning to use a NUCLEO-WL55JC1 (MB1389) as a transmitter in Japan. According to the official ST Japan certification list, this board has Japanese radio certification number 018-210191:https://www.stmcu.jp/technical/hint/no-119/The Japanese certification database shows the following information: Emission designation: G1D Frequencies: 920.6 to 928.0 MHz Channel spacing: 200 kHz, 38 channels Antenna power: 16.0 mW However, the Avnet Japan product page states that the certification applies only to LoRa and Sigfox modulation:https://www.avnet.com/japan/products/product-highlights/stmicroelectronics-nucleo-wl55jc/I need to determine whether certification 018-210191 also covers custom 2-FSK or 2-GFSK transmission.Could an ST employee or someone familiar with the certification documents please clarify the following? Does certification 018-210191 cover 2-FSK or 2-GFSK transmission? If it does, what are
Hi all,I am Jacopo and I am working on a project using STM32U5G9ZJ and I updated to the latest firmware package (STM32Cube_FW_U5_V1.9.0) with STM32CubeMX.I noticed that with the new package the call to HAL_ADC_Start fails to actually start the conversion if used with ADC4. Digging inside the function code I noticed that the call to LL_ADC_REG_StartConversion(hadc->Instance) got moved a couple of lines with respect to the previous version. This means that when the check for ADC4 passes nothing is done, and moving the function call back fixes the problem.Is this a bug? For now I fixed it by manually calling LL_ADC_REG_StartConversion after HAL_ADC_Start, but this is less than ideal.Thank you. Jacopo
Setup:MCU: STM32WB5x (WB55 in particular)Performing OTA firmware update over BLE, using a custom OTA service/characteristics (based on the STM32WB Cube OTA support), sending firmware in chunks after the device reboots into OTA/bootloader mode.Client app: Android, iOS appProblem:During an OTA session, if the connection between the client and the device is interrupted (e.g. chunk write failure or stuck, or the client fails to resume sending data) while the device is already in OTA mode, the device gets stuck — it stays in OTA mode waiting for the remaining firmware data, but no new connection can be established to resume or restart the transfer. The device appears to remain advertising/connectable at the BLE stack level in some cases, but the OTA session itself cannot be recovered or restarted from the client side once this happens, effectively bricking the update flow until a manual power-cycle.Question:To make the OTA process self-recoverable, I'm considering adding a timeout mechanism
We are interested in incorporating the STSAFE-A120 authentication chip (part number: STSAFA120S8SPL05) into our current design. However, the available datasheet lacks the necessary details for firmware development. We would highly appreciate your help and guidance on this matter.
Hi I didn’t find any topic or help for the porting of the X-cube-NFC06 to a nucleo 144 f439zi. I’m writting down all the setup I used to achieve this porting with succes, maybe that will help someone one day. IOC configurationsSPI: prescaler 16 (5.25MBits/s) / CPHA 2 edge (info from example and can be found in st25r3916b datasheet) do not enable NSS from cubeMX instead configure PD14 as GPIO_OUTPUT and name it SPI1-CS. IRQ: rising edge / no pull / don’t forget to activate IRQ from NVIC (exti line3 interrupt) *ETH peripheral is using PA7, instead of PA7 I used PB5 as SPI1_MOSI pin. U just have to use a jumper wire to wire up PB5 to D11 (old PA7).Code modificationsAfter generating the code, you should be able to compile without any trouble. If you program the nucleo, you will be facing this : The program isn’t giving any error but, it’s stuck in a infinite “loop”. If you measure with a multimeter btw GND and ST25R_IRQ pin you will constantly have a high lvl (we don’t want this). Here is
I want to use the 2-wire Direct Test Mode defined in Bluetooth Core Spec Vol. 6 Part F for RF testing of my STM32WBA custom board.I've already tried BLE_TransparentMode. While HCI / ACI commands work, DTM commands don't respond.Is it impossible to control with 2-wire DTM commands in BLE_TransparentMode?Please let me know if there's any way to do this.
Hello,I have a Nucleo-WB09KE.I cannot connect normally to the Board using the Programmer. Only Hotplug is working ?!?. Any idea ?What I already tried: - Connect with hotplug and mass erase. → Flash is blank. - Update the Programmer and the Driver to the latest one. - connect via mode ‘normal’ ’under rest’ failed
Hello ST Community,I would appreciate your guidance on the logic for BLE data transfer. I've created custom GATT services to transmit sensor data to mobile application via BLE. Currently, the data is sent in HEX format. Is there any method to send the raw read values from the sensor instead of HEX format so that it would be easily read and not prone to parsing errors. I've searched online for resources but haven't found a suitable one, so I'm posting here.Thanks in advance
I am working on a project on a STM32H563 with trustzone enabled. Our firmware update strategy relies on using the dual bank flash and swapping when needed. I was wondering if you can set the SWAP_BANK option byte and trigger a bank swap from non-secure code with SECBOOT_LOCK not set?. I am asking because do not I want a hacked non-secure application to be able to trigger a bank swap to potentially untrusted code on the other bank. I could not find a clear answer in the reference manual.
Hello, I have a kind of general question about the usage of interruptions and memory barriers.Because of the pipeline architecture of the processor, it is recommanded by ARM (https://support.arm.com/documentation/dai0321/a/ ) to use DSB / ISB instruction when enabling disabling instruction. The guide focuses (amongst othr cases) on the NVIC operations. The CMSIS functions __NVIC_DisableIRQ and __NVIC_EnableIRQ look to respect the guidelines.However, I’m wondering if such practices should be applied when enabling/disabling the peripheral interrupt (typically via the enable interrupt register) ? Same with the RegisterCallback functions avaialble in the HAl libraries. Regards.
I am working with an STM32H723ZG Nucleo-144 board and a small GA12-type encoder DC gear motor connected through a motor driver.My connections are:Motor driver PWM → D15 / PD15, configured as TIM4 Channel 4 PWM Motor driver DIR → Arduino A2 / PC3, configured as GPIO Output Encoder C1 → D6 / PE9, configured as TIM1 Channel 1 Encoder C2 → D5 / PE11, configured as TIM1 Channel 2 Encoder is configured in TIM1 Encoder Mode TI12PWM is working and the motor rotates, but I cannot make the motor rotate in the opposite direction. I have tried setting the DIR pin both HIGH and LOW: HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET);HAL_Delay(3000); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET);HAL_Delay(3000);However, the motor continues rotating in the same direction.I have confirmed in STM32CubeMX that A2 corresponds to PC3 and PC3 is configured as GPIO output. I am using TIM4 CH4 for PWM and TIM1 CH1/CH2 for the encoder.What could be causing the DIR signal not to reverse the motor direct
Erase sector operation is failing for more than 2 sectorsI have attached the code baseignore trace functionality added for debugging0x20 function code, (Not clear if the call to erase sector are separate or single call)write enable, erase command, wait for Busy bit to be clearedCan someone help to spot the issue
Does STEVAL-ESC001V1 evaluation board support 6 step ?.it already supports FOCif so any idea how to implement 6 step in steval esc001v1
Hi,I am working with an STM32H573 and would like to reliably detect when the device is running in the built-in ST System Bootloader.Is there any supported mechanism to determine that the MCU has entered the System Bootloader?For example, is there any status information, register, persistent flag, GPIO behavior, or other mechanism that can be used to distinguish the System Bootloader from the normal user application?The goal is to provide an external indication when the device is in this state. A status LED would be one possible example, but I am mainly interested in whether there is a general and reliable way to detect the System Bootloader state.In our setup, Secure Manager is enabled, so entering the System Bootloader may also happen as part of the secure boot / recovery flow.Is there any recommended approach for this on STM32H573 devices?Thanks!
Hello,I have a project that uses I3C to connect a Nucleo-C562RE with an STM32C542CCT6 MCU. The setup was working fine with HAL 2.0.0 but it does not work in 2.1.0. I generated the code with MX2 and I observed that it is identical to the code in the private_it_controller example code. I stepped through the mx_i3c1_init function and I noticed that the moment the GPIO for SDA and SCL are enabled, the I3C clock (SCL) is turned on (visible on the oscilloscope) and does not stop. I don’t see how this could be correct. When I try to start DAA it fails instantly (the error callback is invoked) and the SDA line never changes state (it stays HIGH after reset).Can someone help with this issue?Thank you,Gil
Hi ,I'm currently working with a BlueNRG-332AC and am unable to establish an SWD connection for programming/debugging.Hardware Checks Verified the SWD header continuity – all connections are OK. Tried swapping SWDIO and SWCLK to rule out wiring issues, but it made no difference. The target board is powered. Voltage Measurements on SWD HeaderPin Measured Voltage Pin 1 (VCC) 3.3 V Pin 2 3.3 V Pin 3 (SWDIO) 3.3 V Pin 4 (SWCLK) 0 V GND 0 v Software Tried BlueNRG ST-Link Utility RF Flasher Utility BlueNRG ST-Link Utility Log18:29:21 : Can not connect to target! If you're trying to connect to a low frequency application, please select a lower SWD Frequency mode from Target->Settings menu.18:29:22 : No target connected18:29:32 : Can not connect to target! Please select "Connect with Pre-Reset" mode from Target->Settings menu and try again. If you're trying to connect to a low frequency application, please select a lower SWD Frequency
Hello,i ‘m using the library with FOC mode using a custom board with a STM32G474RE microcontroller, Hall sensor and 3 shunts for the phase current measurements. The maximum phase current will be about 28A. The shunts resistors are 1mohm. The voltage value is amplified by a INA with gain 20 and the voltage offset for zero current is 1.65V. Since the microcontroller VREF+ is very unstable and ADCs sometimes go crazy i decided to switch to the internal reference voltage set to 2.5V with successful results. The problem is that the motor control library uses a indecent constant, defined in the file mc_config.c without a define, set to 32767 as the offset for currente measurements. But 1.65/2.5*65536 is not equal to 32767. The workbench does not allow to set any offset. By changing manually that value it works! But changing values manually in a huge, chaotic and disorganized code is risky and error-prone. Is there any way to change these values safely? Leonardo
I am working with the official X-CUBE-SBSFU package and I need to port the example that is provided for NUCLEO-H753ZI (STM32H753ZI) to my custom board based on STM32H733ZGTX.This is the closest official example available for my MCU. There is no .ioc file and the whole project structure (SECoreBin + SBSFU + UserApp) is built specifically for the H753ZI.I have already read AN5056 (Integration guide for the X-CUBE-SBSFU). It explains the hardware adaptations and especially the memory mapping changes (mapping_sbsfu / mapping_fwimg), but it does not give a clear step-by-step procedure for changing the target MCU itself (startup files, linker scripts, CMSIS device headers, project settings, etc.).Could someone from ST or the community please advise on the recommended and proper way to perform this port?Specifically I would like to know:The correct sequence of steps to change the target device from STM32H753ZI to STM32H733ZGTX in the three projects (SECoreBin, SBSFU, UserApp). How to properly
I tried to build the GPIO Toggle project for the NUCLEO-C542RC board, but I encountered the following build error.Could you help me to solve this issue? **** CMake Configure of configuration release_GCC_NUCLEO-C542RC for project NUCLEOC542RC_LedBlink ****C:\ST\STM32CubeIDE_1.14.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cmake.win32_1.1.200.202605190741\tools\bin\cmake.exe -S D:\Project\Gen3\InterfaceController\STM32CubeC5\examples\hal\gpio\toggle\NUCLEO-C542RC\cmake --preset release_GCC_NUCLEO-C542RCCMake Warning:Ignoring empty string ("") provided on the command line. CMake Error at cmake/components.cmake:70 (add_subdirectory):The source directory D:/Project/Gen3/InterfaceController/STM32CubeC5/arch/cmsis does not contain a CMakeLists.txt file.Call Stack (most recent call first):CMakeLists.txt:15 (include) CMake Error at cmake/components.cmake:71 (add_subdirectory):The source directory D:/Project/Gen3/InterfaceController/STM32CubeC5/stm32c5xx_dfp does not contain
MCU : STM32WLE5CCU6Firmware Package Name and Version : STM32Cube FW_WL V1.4.0Application : FUOTA using LoRaWANSetup : End Node(STM32WL) <===> Gateway(Dragino LPS8) <====> TTNHello, I am trying to get my LoRaWAN FUOTA example running for few days with unsuccessful attempts.At first i was successfully able to build LoRaWAN FUOTA application provided by ST under STM32Cube_FW_WL_V1.4.0. This firmware is made for NUCLEO-WL55JC(STM32WL55JC, Dual core with 256KB flash)But as i have STM32WLE5CCU6(Single core 256KB flash). With that also i tried to change the startup and linkers and updating .cproject with correct part number and was able to build it but while flashing gets an error.\STM32Cube\Repository\STM32Cube_FW_WL_V1.4.0\Projects\NUCLEO-WL55JC\Applications\LoRaWAN_FUOTA\Scripts\STM32CubeIDE> .\program.bat ########################################### # 0- Set all global variables ########################################### ######################################
In order to meet the USB suspend mode maximum current requirement I am using Stop mode once the suspend has taken effect. I have no difficulties getting it to go into Stop and the current consumption falls to well below 2.5mA, as required. My problem is that it won’t wake up following either a host-induced wakeup, or due to a remote wakeup that I have set up on my product’s buttons.Host-induced wakeup does cause the current consumption to increase, but it doesn’t get going again. Remote wakeup has no effect whatsoever.If I replace my HAL_PWR_EnterSTOPMode call with a simple __WFI() it wakes up from both without any difficulties, so I know the EXTIs are all set up correctly etc.So what’s wrong? I actually know the answer (after days of head-scratching) and will post it as an answer to my own question so that this is documented and will hopefully save others similar frustration. Although I’m using a C0 with USBX, I imagine this applies to all MCUs.
When I was using STM32N6, I tried to generate USART with STM32CubeMx, but when you enable DCache the DMA did not properly handle USART-RX data.The USART startup code is as follows static FIXED_DMA_USER_RAM uint8_t s_ulDebugUsartRxDmaFifo[16]; bool DevUsartInit(void) { bool ret = false; //HAL_UART_DeInit(&huart1); //MX_USART1_UART_Init(); memset(s_ulDebugUsartRxDmaFifo, 0, sizeof(s_ulDebugUsartRxDmaFifo)); if (HAL_UARTEx_ReceiveToIdle_DMA(&huart1, s_ulDebugUsartRxDmaFifo, sizeof(s_ulDebugUsartRxDmaFifo)) == HAL_OK) { ret = true; } __DSB(); return ret;}/** * @brief The application entry point. * @retval int */int main(void){ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MPU Configuration--------------------------------------------------------*/ MPU_Config(); /* Enable the CPU Cache */ /* Enable I-Cache---------------------------------------------------------*/ SCB_EnableICache(); /* Enable D-Cache--------------------------------------
I am currently working to redesign one of our products to include Bluetooth communication for remote control. For this, I am targetting the STM32WBA23.Given that the PCB is mounted inside a solid, cast-aluminium housing, I will need to put the antenna on a seperate board and connect it with a cable to the main PCB.My question now is: Where do I put the tuning components? Do I place these on the main PCB, close to the controller, or do I put them on the antenna board?Or maybe it doesn't actually matter. I would appreciate any comments and directions by those more RF savvy than me.
ST Community highlights – April to June 2026
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.