Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
Trying to update an existing design to use S2-LP , but I need table of values for 433 and 868Mhz operation. This needs to be one pcb layout that can be populated for either frequency. I have searched through the website but I can’t find a solution. I have found a eval board for FKI433V2 @ 433 Mhz, but no equivalent for 868Mhz. The other 868Mhz boards use a balun, so the layout would be quite different.I’m sure many people have gone down this route in the past.
Hello, I recently noticed that new Packs are available for download in MX2 (2.1.0). I downloaded the Packs for one of my projects but then I realized that I have to do this for every project individually. Is there a way to download new versions of Packs only once and have them available in all the projects? Thank you,-Gil
I am testing Rhino encoder motors(ig32) 100rpm on an STM32H723ZG Nucleo-144.my actual connections are: Motor driver PWM → PC6 → TIM8_CH1Motor driver DIR → A0 → PA3Encoder A → D5 → PE11 → TIM1_CH2Encoder B → D6 → PE9 → TIM1_CH1my confirmed the CubeMX configuration shows: TIM1 Encoder Mode = TI1 + TI2PE9 = TIM1_CH1PE11 = TIM1_CH2So the encoder is a genuine quadrature encoder, and I have intentionally kept TI12 rather than switching permanently to TI1.2. Motor encoder specificationRhino RMCS-5031 datasheet.The datasheet specifies:Gear ratio: 1:174 Encoder type: Quadrature Output-shaft CPR listed as 9048 Base Hall sensor count: 13The relationship is:13×174=226213\times174=2262and with 4× quadrature decoding:2262×4=90482262\times4=9048So the manufacturer's 9048 figure and my observed quadrature counts became an important part of the investigation.3. my original problemI originally wanted the motor to:rotate exactly one output-shaft revolution and stop based on encoder counts.i initi
I am trying to use a STM32G0B1CBT3 for standard (non-FD CAN communication).The device is running from a 8 MHz HSE oscillator.This is the clock topology I am using: As you see the CCS is disabled and the CAN clock and the system clock is running on 64 MHz.In some cases my CAN frames are transmitted with a bitrate faster than expected:The edges some times falling totally to the sampling points, the calculated bit times are lower than 4 us: Putting the correct and incorrect frames the difference is more visible: I have tried to route the HSE to the MCO to see how stable is it, but I have not detected any deviation which could cause this deviation.I also tried to run an overnight test to send a CAN frame continuously and capture the waveform and calculate back the bit times are quite identical: Any hints, ideas would be welcome!
Hello everyone, I have the following use case: I want to receive raw data via Ethernet, which works fine, but I have a problem: When I send 100 bytes, I only receive 14 bytes in my software on the MCU (STM32H7S3L8). I was able to fix this by settingAutomaticPadCRCStrip to DISABLE. Now I receive 104 bytes, which is also not the desired behavior. After a little research, I found out that the 4 bytes are CRC, so I continued searching. After some searching, I found the CRCStripTypePacket property and set it to ENABLE, but unfortunately this property has no effect. What do I need to do to get my 100 bytes but not the CRC? Do I need to set something else? Is this a bug? Please help me, I'm stuck.Thanksstm32h7rsxx-hal-driver 1.2.1Best regards,Paul B
Hello,I have a Nucleo-L432KC with a dead microcontroller, but the STLink IC is ok.I wanted to use the STM32F103 to develop some USB code, so I removed the broken L432 and populated the reprogramming header for the SWD, CN2.I connected there a STLINK-MINIE to erase it, but CubeIDEProgrammer cannot read back anything.At the first connection I was able to erase it (maybe just partially?), because now it is not recognized anymore as ST_Link device and the LED has only a faint red color.I also connected the reset to the STLINK-MINIE and tied the BOOT0 to 3.3V.Is there anything else I can try to fully erase and then re-program the F103? Thanks,Marco
In testing the LoRaWAN_End_Node_LBM application supplied with STM32CubeWL-1.5.0 release I found that the output power is substantially lower than the same test setup with the LoRaWAN_End_Node application supplied with STM32CubeWL-1.4.0. This testing was conducted only using the US915 region setting.First I found that the EIRP was being defined as 16 dBm in Middlewares/Third_Party/LoRaWAN/smtc_modem_core/lr1mac/src/smtc_real/src/region_us_915_defs.h when it should be 24 dBm.#if defined( LR11XX ) || defined( SX1262 ) || defined( SX1268 ) // region is 30 dBm but radio is 22 dBm ERP (+2 to EIRP) #define TX_POWER_EIRP_US_915 (24) // define in dbm #else // region is 30 dBm but radio is 14 dBm ERP (+2 to EIRP) #define TX_POWER_EIRP_US_915 (16) // define in dbm // TODO must be checked, SX126x dependent for the max power #endifSince the project compiles with the preprocessor symbol -DSX126X the #if condition fails and the maximum transmit power is capped at 14 dBm ERP rather tha
Hello, I am working with X-NUCLEO-WB05KN1 together with NUCLEO-U083RC. I had previously tested U0 consumption in Stop mode and I got around 1.5uA (using 3.3V supply and LSI). From the datasheet it says that STM32WB05KZ should be an ultra low-power MCU, however I am using the Beacon app from the X-CUBE-WB05N software package and I am getting measurements of around 37mA. Is this related with the SPI firmware (DTM binary) flashed into the shield to run the example? I would like to achieve a consumption on the uA scale, do I need to make my own firmware to the chip? If so, is there any example and how to communicate with my U0?I am supplying 3.3V into the CN6 pin 4 and measuring with a multimeter so the ST-LINK is now being powered.BR
Cubemx2 only allots enough buffer descriptor table space for 4 endpoints. When a 5th endpoint is added, the table will overlap with the data buffer. In the following generated code, address should be starting at 0x28 and not 0x20. HAL_PCD_PMAConfig(&hUSB_DRD_FS_PCD, 0x0, HAL_PCD_SNG_BUF, 0x20); HAL_PCD_PMAConfig(&hUSB_DRD_FS_PCD, 0x80, HAL_PCD_SNG_BUF, 0x60); HAL_PCD_PMAConfig(&hUSB_DRD_FS_PCD, 0x81, HAL_PCD_SNG_BUF, 0xA0); HAL_PCD_PMAConfig(&hUSB_DRD_FS_PCD, 0x82, HAL_PCD_SNG_BUF, 0xE0); HAL_PCD_PMAConfig(&hUSB_DRD_FS_PCD, 0x3, HAL_PCD_SNG_BUF, 0x120); HAL_PCD_PMAConfig(&hUSB_DRD_FS_PCD, 0x83, HAL_PCD_SNG_BUF, 0x160); HAL_PCD_PMAConfig(&hUSB_DRD_FS_PCD, 0x4, HAL_PCD_SNG_BUF, 0x1A0);
I am working on an STM32H7-based project where I continuously poll sensor data over SPI in DMA mode. Everything works as expected for the first few hours, but occasionally the SPI bus freezes and triggers a timeout error (HAL_SPI_ERROR_TIMEOUT).Resetting the SPI peripheral manually recovers the communication, but I want to identify the root cause instead of using a soft-reset workaround.Has anyone encountered similar bus lockup issues with STM32H7 SPI DMA implementation? Any tips on proper flag clearing or clearing the FIFO buffer safely would be greatly appreciated!
I am running STM32CubeMX2 (1.1.1) on a Mac (Tahoe 26.6.2) and I did (with some difficulty) get it installed and running. I configured a MCU (STM32C552CEUx) and generated an STM32CubeIDE project. No problem.I went back and copied the .ioc2 file, renamed it, and went to configure a different system. Everything was going fine until I tried to configure some new pins after adding middle ware (FreeRTOS and basic_stdio). I could not select pin functions in the graphic mode, table mode, or through activating the associated peripheral (I2C2) and updating the GPIO there. So, I closed CubeMX2 and restarted. Now I get the splash screens showing fine, but when they go away, I just get the spinning timer in the upper-left of an empty screen. In file, I can click Close Window which it will dutifully do, but then I have nothing. In view, Reload and Force Feload do not seem to do anything. Any thoughts as to how to debug this would be greatly appreciated.
Hi,I am trying to flash my STM32U5G9J-DK2 via TouchGFX Run Target button. The mk file returns this error:* STM32CubeProgrammer is not found. Make sure the STM32CubeProgrammer is installed in its default directory. ** You can download it at https://www.st.com/en/development-tools/stm32cubeprog.html * I am 100% sure that STM32CubeProgrammer is installed at the right directory that is required by the mk file.The problem happens even when trying to flash an exemple app after selecting the right demo board in TouchGFX Designer.Anyone encountered this issue?
I am using STM32CubeMx to calculate the i2C timing for i2C master. The i2C kernel clock is 200MHz. I2C speed frequency is 400KHz. Coefficient of digital filter 0, Analog Filter Enabled. If Rise time and Fall time were set to 0, TimingR = 0x109035B7. With this setting, Tpresc = 10ns, Tsclh = 1840ns, Tscll = 540ns, Tscldel = 100ns, Tsdadel = 10ns, Tsclh + Tscll + Tscldel +Tsdadel = 2490ns. Actual SCL clock is measured ~2500ns. If Rise time and Fall time are set to 300ns( I2C Fast mode max tr and tf), TimingR = 0x40FA1531. With this setting, Tpresc = 25ns, Tsclh = 1250ns, Tscll = 550ns, Tscldel = 400ns, Tsdadel = 275ns, Tsclh + Tscll + Tscldel +Tsdadel = 2475ns. Actual SCL clock period is measured only ~2000ns (Tsclh ~650ns, Tscll ~1350ns).Why is SCL clock period too low in the latter case? Should SCL be stretching low for Tscldel +Tsdadel?
For STM32C562RE, why can CubeProgrammer validate the OEM key and report "RDP2 unlocked successfully", while the RDP regression does not erase the existing user flash and flash erase remains prohibited? Is this a known CubeProgrammer/ST-LINK limitation or does this indicate that the device was provisioned with a non-regressible security configuration?Device: STM32C562RETx / NUCLEO-C562RECubeProgrammer: v2.22.0ST-LINK: V3J17M11SWD connection works.Device ID: 0x44E.OEM key is available.RDP unlock operation sometimes reports:"Validation Status: 3"followed by:"RDP2 unlocked successfully"After physical power removal and restoration:RDP_level = 0xFF (Unknown Value)Flash still contains:0x08000000 : 200007C8 08000671 0800073D 08000735Mass erase:Error: Mass erase operation failed. Please verify flash protectionProgramming:Erasing internal memory sector 0Error: failed to erase memory
Hi,I am using the following hardware setup: NUCLEO-G474RE X-NUCLEO-IHM09M2 STEVAL-IPM20B DC bus: 400 V Motor rated current: about 5 Apeak STM32 Motor Control SDK / Motor Pilot 6.4.2 I have loaded the Motor Profiler firmware generated by Motor Control Workbench.My question is:Can I use the Profiler function in Motor Pilot 6.4.2 to automatically measure the motor parameters with this hardware configuration at a 400 V DC bus voltage?My main concern is that the DC bus voltage is relatively high. I would like to confirm whether the Motor Profiler supports this voltage range with the STEVAL-IPM20B, or whether the profiling procedure should be performed at a lower DC bus voltage first.Are there any recommended voltage/current limits or additional precautions when using Motor Profiler with STEVAL-IPM20B?Thank you.
i have enabled FATFS via CubeMX like belowbut for some reason in the code generation settings I can’t disableI want disable it because CubeMX generates a void function; instead, I want the MX_FATFS_Init return a status code if it is generated or not so, I want to have a uint8_t MX_FATFS_Init()
Hi,I am using:STM32U575VGT6Q STM32CubeIDE 2.1.1 STM32Cube FW U5 V1.9.0 X-CUBE-FREERTOS 1.6.0 / FreeRTOS 11.2 TrustZone enabled FreeRTOS running in NonSecure (TZ_Non_Secure) FreeRTOS Secure support enabled (TZ_Secure)The generated NonSecure project fails at link time with:undefined reference to `SecureContext_AllocateContext'undefined reference to `SecureContext_LoadContext'undefined reference to `SecureContext_FreeContext'undefined reference to `SecureContext_SaveContext'undefined reference to `SecureContext_Init'undefined reference to `SecureInit_DePrioritizeNSExceptions'Some of them are followed by:Unknown destination type (ARM/Thumb)dangerous relocation: unsupported relocationThe NonSecure linker correctly links:Secure/Debug/secure_nsclib.obut CubeMX did not copy the required Secure FreeRTOS source files into the generated project:secure_context.csecure_context_port.csecure_heap.csecure_init.cOnly the corresponding .h files were copied under:Middlewares/Third_Party/FreeRTOS/Source/p
Hello there, I’m working on a device that in its normal operation uses the MSC.But I want my clients to also be able to update the device via USB using DFU.#define USBD_PID_FS 57105#define USBD_PRODUCT_STRING_FS "STM32 DownLoad Firmware Update"#define USBD_CONFIGURATION_STRING_FS "DFU Config"#define USBD_INTERFACE_STRING_FS "DFU Interface"#define USBD_PID_FS 22314#define USBD_PRODUCT_STRING_FS "STM32 Mass Storage"#define USBD_CONFIGURATION_STRING_FS "MSC Config"#define USBD_INTERFACE_STRING_FS "MSC Interface"I found these differences and made a work around, CubeProgrammer is detecting a DFU device when a button is pressed:void MX_USB_DEVICE_Init(void){ /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ //check to enter DFU mode if(HAL_GPIO_ReadPin(USR_BUT_ENTER_GPIO_Port, USR_BUT_ENTER_Pin) == GPIO_PIN_RESET){ if (USBD_Init(&hUsbDeviceFS, &DFU_Desc, DEVICE_FS) != USBD_OK) { Error_Handler(); } if (USBD_RegisterClass(&hUsbDeviceFS, &U
I am trying to work with a legacy project using an ST7 processor. I bought an RLink second-hand, but it didn’t come with any software.I thought I could just go to the Raisonance site and download it, but their portal is not working for me and their support is completely unresponsive.Does anyone know of where to find the software or able to share an installer?
Hi, we use on a design a ISM6HG256X. We want to detect a shock end event using the interrupt INT2.We use this configuration : * INT2_HG_WU = 0 * INT1_HG_WU = 0 * INT2_HG_SHOCK_CHANGE = 1 * INT1_HG_SHOCK_CHANGE = 0Logically, we should have an interrupt INT2 only when the shock event end is detected. In fact, we have an interrupt at wake_up event and at the shock end and sometimes we have interrupt on INT1. We use a STEVAL - MKI248KA to evaluate the ISM6.Do you have some tips to solve this problem?
I have a LSM6DSV16X IMU powered from a 3.3V LDO. It communicates with a TMS320F2800137 MCU via SPI which is powered from a separate 3.3V buck rail. Power to the MCU and rest of system is controlled via the shutdown of the 3.3V buck. An interrupt from the IMU can control the shutdown of this 3.3V buck to wake it back up again. My first issue arose when powering down the MCU system that 3.3 V from the IMU would back feed from the CS pin 12 through the GPIO of the MCU and draw excessive current as seen as a 0.6V drop across the 3.3V buck rail. Current measurements showed 700uA from the 14.4 V supply. To fix this backfeeding voltage I turned off the I2C/I3C interface via the IF_CFG register, however, this leads to the next issue.With the IMU programmed with the accelerometer in LPM1 with ODR 1.875 Hz and gyroscope in sleep mode; no other embedded functions enabled, I disable power to the 3.3V buck, leaving only the IMU and 3.3V LDO powered to find the IMU consuming about 250uA for about 10
Hi, I have a lot of SVG files in my project, so much so that I had to move them to my external flash. Now, I know I can move SVG files to external flash by adding a section to my linker script: ExtFlashSection : { */SVGDatabase.o(.rodata.*) } >EXT_FLASHHowever it would be simpler to simply set this in TouchGFX Designer itself just like I can choose the location of PNGs.As seen in the image below. I can select a Section for PNGs, but not for SVGs.Is this something that can/will be added to TouchGFX in the future?
I’m trying to use ADC oversampling and noticed that temperature value is distorted in that case.I have configured ADC with 7 external inputs, temperature sensor input and Vref input. Vcc/Vcca is 3.27V, sampling time is 7.5 cycles.When oversampling is disabled - I’ve got averaged raw value 2115 for analog input (voltage 1.64V), 1005 for temperature sensor and 1582 for Vref. When oversampling is enabled (no matter 2x or 16x, with shifting to same count of bits as added by oversampling) - I’ve got 2115 for analog input, 1107 (!!) for temperature sensor and 1584 for Vref. So, only temperature sensor input value differs. And, as result, I’ve got 63*C instead of 33*C when oversampling is enabled.What’s wrong with oversampling? Can it be fixed by some kind of settings? Or I must forget about it and use software oversampling instead?I’m using latest CubeIDE 2.2.0 and CubeMX 6.18.1 with latest libs 1.6.3.
I am using the STM32F746NGH6 controller in my circuit to read external ADC (16bits) and transmits the same through USB. I have configured USB in OTG FS (device) MODE including AUTO detection. Test Set-Up.The USB is always connected and controller is powered on for testing and powered off after testing is completed Earlier observationThis was practiced for about two months and was working ok without any issues Current observationThe same is not able to recognize USB (i.e. auto detection is not happening) Further Analysis 1) On probing the circuit, it was observed that 3V is present at USB V-Bus line always after the board is power on, even without the USB cable connected Please clarify does it cause the issues. If yes, why and how Queries We would like you to clarify the following points about the user operation sequence1) Be the controller power on, when engaging and disengaging USB cable2) There is no need for any sequencing in user operation NOTE:We are in need of fix to avoi
Hi, guys. (admin, if this post is inappropriate please delete)So I am doing quite a complicated project (well for my skill level anyway) and my own code is stating to confuse me. Are there any guidelines for writing readable code in embedded development? I attached my whole project link below. my project on github Any tips would be helpful. I am no where near done and the amount of code I have to write is orders of magnitude away from being finished. I am using cube IDE for this project. A while ago I did try and transition over to vscode but I was getting a lot of issues with cmake and might have become allergic to it. I have also changed how cube ide looks a bit. below is an screenshot. tldrtips on orginising code so its easyer for me to follow my own stuff if you have any tips on making cubeide look better? attached link to my github project below.
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.