Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi everyone,I am currently experiencing some issues with the FDCAN interface; my setup consists of two nucleo boards (Nucleo-G0B1RE) which use FDCAN interface to communicate with each other. As transceivers I am using two ATA6563-click boards.The clock used for FDCAN interface is PLLQ which ticks at 32MHz. The FDCAN parameters were configured using kvaser canfd timing calculator; Filters are disabled.I’ve generated two set of parameters:Nominal bitrate 500 kBit/s; Data bitrate: 2MBit/s Nominal bitrate 500 kBit/s; Data bitrate: 4MBit/s In both scenarios I’ve used a payload of 12 bytes and preserved the sending header:txh_n1.Identifier = 0x1ad; txh_n1.IdType = FDCAN_STANDARD_ID; txh_n1.TxFrameType = FDCAN_DATA_FRAME; txh_n1.DataLength = FDCAN_DLC_BYTES_12; txh_n1.ErrorStateIndicator = FDCAN_ESI_ACTIVE; txh_n1.BitRateSwitch = FDCAN_BRS_ON; txh_n1.FDFormat = FDCAN_FD_CAN; txh_n1.TxEventFifoControl = FDCAN_NO_TX_EVENTS; txh_n1.MessageMarker = 0x0;and the same while loop:bo
Hello,I am working on a CANbus communication with a critical system component that, if it is NOT communicating, portions of the systems should be shut down. I am trying to come up with a way to determine if communication is lost, but I feel like the solutions I'm coming up with are way more complicated than they need to be. One feature that I noticed is AutoRetransmission in the CAN configuration. So it will try to resend the message if it does not get an ACK from the device it's communicating with. Is there a way to keep track of how many transmission attempts have occurred with no response from a specific node? If so, then I can just say "If the message failed to send X times, then communication is lost and react accordingly."Does anyone know if this exists and, if so, how to implement something like this?For reference, I am using the STM32H7B3IIT6 MCU.
Hello!I am facing a problem with the STM32H563VIT6 trying to set up MQTT client. I tried to take STM32H573I-DK\Applications\NetXDuo\Nx_MQTT_Client example as a base example on how to do it, but it has not worked for me. The problem I am facing is that no IP can be acquired and thus the MQTT client will not work. I have set up everything correctly in the netxduo header file (DNS, MQTT broker name).What I am trying to achieve right now is to have the board send simple MQTT packets to my computer (like in the STM32H573I exmaple). The board is connected to the router.I tested a simple MQTT packet sending by doing it from my phone to my computer. Also, connected my phone to the router via an Ethernet cable, and with using the Wi-Fi. In both times, the test was successful, so from that it seems that the problem cannot be in my computer or in the router.When debugging the program the error I receive is from the App_Link_Thread_Entry. Getting this error after calling nx_ip_interface_statu
Hello I tried to receive any CAN signal on my device based on STM32F303CCT6. Maybe you have solution :), CAN pins are remapped on PB9 and PB8 pins by STMCubeMX configuratorBelow my code (main.c): https://pastecode.io/s/7av2ge6mand my settings in configurator:I also set CAN RX pull HIGH using the internal pull-up, like in the tutorial https://controllerstech.com/can-protocol-in-stm32/Thanks for help
environmentSTM32H743IIT6 FK743M2-IIT6SRAM IS42S16160J External 16-bit 32M byte SDRAMExternal QSPI driver W25Q64LCD 4.3” RGB043M2-800*480*VI1.2 I have 2 problems with this module if I write a line on line y = 0 ok but if y = 10 see wrong lcd output with many pixels blink if I use the DMA to write on lcd no output If I use 0x24000000 instead of 0xC0000000 like FRAMEBUFFER_ADDRESS both lines are ok but the 0x24000000 address cannot be used to fill oll the 800x480 lcb areaConsider that this BSP_LCD_Clear() is able to fill alll the lcd area without problems. void BSP_LCD_Clear(uint32_t Color){ uint32_t index = 0; // Estrae i componenti R, G, B dal colore a 32-bit uint8_t r = (Color >> 16) & 0xFF; uint8_t g = (Color >> 8) & 0xFF; uint8_t b = Color & 0xFF; // Converte in RGB565 (16-bit) uint16_t color16 = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); volatile uint16_t *pFB = (uint16_t *)0xC0000000; for(
Normal mode of FDCAN is not working. Attached project file here. Please suggest if any changes are required in the attached files.
Hello, I initialized CAN on STM32F429ZIT6 on registers. I would like to tranmitt and receive messages. But on transmission lines is silence. In my opinion I forgot about any register, but I don't know which. So could you help me what i sholud change in my code?
Hi, I am using the following:cubeIDE 1.13.1/STM32F072C8U6/baud = 250K - I attached a picture of my clock diagram & param setup.Hi, I am using the following:cubeIDE 1.13.1/STM32F072C8U6/baud = 250K - I attached a picture of my clock diagram & param setup.I do not see messages sending on the CAN bus. They worked fine in my previous IDE. I have a feeling it has to due with the time quanta but not 100% sure. I tried adjusting to quanta 10/5 after reading the following with no luck:http://www.bittiming.can-wiki.info/ Init:static void MX_CAN_Init(void){/* USER CODE BEGIN CAN_Init 0 *//* USER CODE END CAN_Init 0 *//* USER CODE BEGIN CAN_Init 1 *//* USER CODE END CAN_Init 1 */hcan.Instance = CAN;hcan.Init.Prescaler = 32;hcan.Init.Mode = CAN_MODE_NORMAL;hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;hcan.Init.TimeSeg1 = CAN_BS1_1TQ;hcan.Init.TimeSeg2 = CAN_BS2_1TQ;hcan.Init.TimeTriggeredMode = DISABLE;hcan.Init.AutoBusOff = DISABLE;hcan.Init.AutoWakeUp = DISABLE;hcan.Init.AutoRetransmission = DI
Hello,I'm running the BLE_DataThroughput_Server Application on a NUCLEO-WBA65RI (server, notifying) connected to a NUCLEO-WBA55CG (client, receiving notifications), and I'm seeing a significant throughput regression between STM32CubeWBA v1.7.0 and upper versions, with strictly identical configuration. Setup (identical in both cases):Server: NUCLEO-WBA65RI, BLE_DataThroughput_Server Application, from STM32CubeWBA v1.7.0, v1.8.0, and v1.10.0 Client: NUCLEO-WBA55CG, BLE_DataThroughput_Client Application, from STM32CubeWBA v1.10.0 Connection interval: 11.25 ms PHY: 2M MTU size : 244 Build configuration: Release I added :const uint8_t a_BLE_rx_pckt_count_and_rx_pckt_len[2] = { 0x07, 0x00 }; /* rx_pckt_count , rx_pckt_len */ aci_hal_write_config_data(CONFIG_DATA_LL_RX_ACL_CTRL_OFFSET, 2, a_BLE_rx_pckt_count_and_rx_pckt_len);as described in the "How to get the best throughput" section of the wiki (rx_pckt_count=7, rx_pckt_len=0) Results:BLE_DataThroughput_Server Application from STM32CubeW
Hi, I am new to TouchGFX Designer and I saw the previous reply in 2023 mentioning that the team was internally discussing the possibility of importing Figma UI designs into TouchGFX Designer.Is there a way to import Figma UI Design to TouchGFX Designer? May I ask if there has been any update or progress on this feature since then?In addition to the Figma import question, I would also like to ask whether TouchGFX Designer currently provides any form of plugin or extension support.Specifically, is there a way to add a custom entry in the Designer menu or integrate a custom code-generation workflow into the tool? Thanks in advance for any information.
Hello,We are going to use the STM32H573 MCU (STM32H573IIK3Q) on our board, and we are now preparing for mass production. Production will be done at an external contract manufacturer (not in-house), and we need to provision keys and firmware securely during programming.My main question: Is the STM32HSM-V2 card strictly required for secure programming at high volume, or are there supported alternatives?Specifically:1. As far as I understand, the SFI license mechanism is tied to ST's key hierarchy inside the ROM bootloader, so a third-party/commercial HSM (Thales, nShield, etc.) cannot generate licenses that the chip will accept. Is that correct, or is there any supported way to run SFI with our own HSM infrastructure instead of the ST smartcard?2. If STM32HSM-V2 is the only option: for volumes well beyond 300 units, V2ML (10K) and V2HL (100K) do not seem to be orderable through distributors. Is the intended path to request them through an ST sales office, and what lead time should we pla
OverviewDebug Authentication Discovery occasionally succeeds in CLOSED state, but Full Regression fails (“Unable to boot on RSS_DA” / “Unable to detect DBGMCU Mailbox”)Get ready for the stm32 safari! Product / Environment- Board: Custom based off of STM32H7S78-DK (MB1736)- MCU: STM32H7S7L8H6H- Debugger(s) used: STLINK-V3SET- Tool: STM32CubeProgrammer v2.19.0- ST-LINK FW: V3J17M10B6S1- Board setup used during recovery attempts:- tried altering Boot0 (boot from RSS/system flash)- tried manual reset- tried low SWD speed and hardware reset modes Summary of the issueI was attempting to recover the board after secure configuration experiments. The board was originally reachable over SWD, but after running the **`ROT_Provisioning/DA/provisioning.sh`** flow from the STM32CubeH7RS package, normal SWD access stopped working. The board is now in **CLOSED** state, and **Debug Authentication Discovery** can occasionally succeed if I hit a very narrow timing window at power-up, but an
I’m trying to implement USB mass storage class device standalone(no RTOS) on nucleo board STM32U575ZI-Q, using RAM for memory.I mostly followed these steps :, but skipped the eMMC parts (I’m using RAM). Instead i did like here: https://embetronicx.com/tutorials/microcontrollers/stm32/stm32-usb-device-msc/ , in ux_device_msc.c I defined STORAGE_BLK_NBR, STORAGE_BLK_SIZ, and then used memcpy() inside functions like STORAGE_Read_FS().Someone has done seemingly the same thing already(combining these two things) and it worked: https://github.com/ST-TOMAS-Examples-USB/STM32U385RG_Ux_Device_MSC_Standalone . Are there any adittional steps i’ve missed?Right now, after plugging the USB into my PC, it appears in Device Menager with code 10( device cannot start ). I’ve put a breakpoint on STORAGE_Read_FS() line while debugging, but it never stops there.
Hi,I am using my own board based on an STM32F207ZG with STM32F2 HAL v1.9.4. I implemented a USB HID Host using STM32CubeIDE (v1.19.0), simply enabling USB Host and HID Class support in CubeMX and generating the code.I was able to read keys correctly from a standard USB desktop keyboard. However, I was not able to read from a USB HID RF reader. While debugging the problem, I noticed the following code in `usbh_hid.c`, inside `USBH_HID_Process()`:case HID_IDLE: status = USBH_HID_GetReport(phost, 0x01U, 0U, HID_Handle->pData, (uint8_t)HID_Handle->length); if (status == USBH_OK) { HID_Handle->state = HID_SYNC; }This initial `USBH_HID_GetReport()` therefore has to complete successfully before the state machine proceeds to `HID_SYNC` and eventually reaches `HID_GET_DATA`, where `USBH_InterruptReceiveData()` starts polling the HID interrupt IN endpoint EP1. My question is: What is the intended purpose of this initial `G
Dear team,We are using in our Solar charge controller with STM32G030C8T6 mcu with internal Vref calibration. We are getting mostly Input voltage sensing ADC pin PB0, PB1 and PB2 failure either while power on time or after few days of normal working. Due to that we are getting many fields issue for battery charging. request your advice and suggestion to sort it asap.
The problem described in https://community.st.com/stm32-mcus-touchgfx-and-gui-33/duplicit-include-paths-are-added-to-keil-project-when-touchgfx-project-is-regenerated-151799 ist still there. The topic was closed a year ago and it seems that nothing happened since then.Please provide a solution!
Dear ST Community,I am currently testing the position control functionality using the following API: MC_ProgramPositionCommandMotor1(target, duration_s);I would like to clarify the behavior of the duration parameter. Does this parameter define only the expected movement duration, or does the position control algorithm also ensure that the motor reaches the specified target position within that duration?I am testing a case where the target position is intentionally very large: float actual = MC_GetCurrentPosition1();float commanded_target = actual + 10000;MC_ProgramPositionCommandMotor1(commanded_target, 2.0f);In this case, completing a 10000-radian movement within 2 seconds is physically unrealistic for my motor.I am monitoring the control status using the following code: uint32_t start = HAL_GetTick();printf("ms (planned %ld ms)\r\n", (long)(MC_GetMoveDuration1() * 1000));while (1){ if (HAL_GetTick() - start < 10000) { printf("Control status : %d state : %d Fault
Hello, I am currently trying to set up the STM32H745ZIT6, and the datasheet wasn’t too clear about how to wire up the 3 VCAP pins. It stated to use 2x 2.2uF caps, but doesn’t state which pins. I found an old forum with many different configurations, typing all VCAP pins together, no VCAP pins tied togehter, and only two VCAP pins tied together. I just wanted some clarification on how I should be typing these pins.
I am facing an intermittent issue with the STM32N6570-DK when using it with macOS.Setup Board: STM32N6570-DK Host: MacBook Pro STM32CubeProgrammer: v2.23.0 Connection: USB-C hub with USB-A ports ( I am currently using the following USB hub: https://amzn.in/d/02O7R7zS) One USB-A port is connected to the STM32N6570-DK USB1 USB-C port Another USB-A port is connected to the STM32N6570-DK ST-LINK USB-C port Application: AI inference application using the onboard display and USB communication to stream data back to the host Initially, JP2 was configured on pins 1–2 (5V_STLK). IssueWhen using a direct USB-C-to-USB-C connection on Windows, I do not encounter this issue.However, on macOS, a direct USB-C-to-USB-C connection results in DEV_USB_COMM_ERR. Based on a suggestion from a related ST Community discussion (ST-LINK stuck in DEV_USB_COMM_ERR until USB replug after connecting with no target | Community),Also, we found out that a known issue/ limitation regarding this (USB
Hello,I am currently developing a USB Device application using the STM32N657L0.I am reaching out to ask for advice because I am having difficulty meeting the target power consumption requirement of 5V, 2mA max during USB Suspend state. Our target conditions and system requirements are as follows:VDDCORE uses an external power supply. The USB Driver must be maintained during USB Suspend. The system must be able to wake up and recover via USB. Power consumption must remain below 5V, 2mA during USB Suspend.Currently, when the chip is configured in STOP Mode, the measured power consumption is:VDDA18AON (1.8V): ~5mA VDDCORE (0.81V): ~40mA We are looking for ways to further reduce these currents to meet the 2mA requirement.Could you please guide us on how to optimize the power modes, clock gating, or power supply configurations to achieve this? Any suggestions or reference guidelines would be greatly appreciated.Thank you for your support.Best regards,
I’ve been discovering the different views available in STM32Cube IDE and among them is the Build Analyzer view.In this view I found a section in the RAM called ._user_heap_stack.I searched for it in the linker script and found that it corresponds to the following section : /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */._user_heap_stack :{. = ALIGN(8);PROVIDE ( end = . );PROVIDE ( _end = . );. = . + _Min_Heap_Size;. = . + _Min_Stack_Size;. = ALIGN(8);} >RAMWith _Min_Heap_Size = 0x200; /* required amount of heap */_Min_Stack_Size = 0x400; /* required amount of stack */In Figure 1, one can see that the start address of the ._user_heap_stack is 0x2000 002C. This means that the last address of the stack should be 0x2000 002C + 200 + 400 = 0x2000 062C, with the 8 byte alignment that would make it 0x2000 0630. Figure 1 : Screenshot of the Build Analyzer ViewTo make sure my calculations are correct, I added a variable in the linker script (high
Hello,I am getting a hard fault while trying to integrate TouchGFX into a Zephyr application.The application is secure-only and the screen design is very simple: it contains a single screen with one box. When I debug the application, the hard fault occurs in the touchgfx::Application constructor (so I cannot debug), which is called indirectly through:FrontendHeap& heap = FrontendHeap::getInstance();I have already tried increasing the following Zephyr configuration values (CONFIG_MAIN_STACK_SIZE and CONFIG_HEAP_MEM_POOL_SIZE).CRC is enabled. DMA2D is disabled for now — the “Use DMA2D Accelerator” option is set to No in the X-CUBE-TOUCHGFX package, to keep the setup simple and eliminate one possible source of issues.The framebuffers are aligned and placed across AXISRAM3, AXISRAM4, and AXISRAM5The setup is as custom board with:MCU: STM32N65XXZephyr version: 4.4TouchGFX version: 4.26.1Zephyr SDK: 1.0.1I would appreciate any help, suggestions, or debugging directions.Thanks in advance.
I’ve got a working graphics system. It does high level operations on a 32 bit virtual image of the display’s resolution. The image is then translated to a 16 bit buffer image (RGB565 for an ILI9341 display). That image is then transferred over SPI to the display. The SPI drivers can be polled, interrupt driven, or DMA driven. Software drivers are used for all of this, and work.Moving to a different processor (U575 from L562), ChromART is available. It could be used for filling the virtual image, translating to the RGB565 image. 2D DMA can be used to transfer modified blocks to the display.Now the problem.The transfer works erratically in some cases. Some data (and I’m using mostly saturated colors) doesn’t transfer well into RGB565 (say 100% blue), it may just end up with black. Other times, the complete color palette is transferred properly.I’m investigating whether or not the repeated restart of the ChromART peripheral is a problem. Mostly what happens is that the mode sho
Hello everyone!I just wanted to share with you all the pinout of NUCLEO-C542RC and STM32C542RCT6. I just moved from STM32F013RB, which had a lot of schematics online, but currently the C5 series has close to none.The pinout list all the available functions for each pin. I hope it’ll be as useful for you as it was for me. I attached to this post the drawio file, for easy edits.If you have any recommendation, please let me know.
Hello everyone,I’m using Nucleo STM32N6 for a project of mine, and I used template XIP to begin with.In template XIP, clock frequency of the XSPI2 is set to 50Mhz without any prescalers, and VDDIO3 is set to 1 (1.8V). That setup works fine for XIP up to 85Mhz clock frequency, but above that at BOOT (00) it fails as soon as it tries to jump to a application. I haven’t been able to resolve this problem. Is it setup, or something with EXT_MEM middleware?In MX25 datasheet it can be seen that frequency heavily depends on dummy cycles, and 86Mhz corresponds to 8 dummy cycles, but on 200Mhz it requires 20. In EXT_MEM setup there is a 8D8D8D case where i go into during setup and it sets object to 20 dummy cycles, but I’m not sure is it successful in actually forcing that setup. Any help would be welcome.
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.