Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I am trying to plot reference speed and measured speed on graph in Motor Pilot. But in graph why measured speed is coming before reference speed? I tried it at different speeds but response coming is same.
I have a question regarding internal PLLs.I would like to know the jitter of the PLL in the STM32H743XGH6.I could not find a PLL Characteristics table that would have the answer I want to know. I have seen posts about jitter in various other PLLs.However, I cannot decide how much to trust that information because of the different models.Perhaps it is very unlikely that these jitter values will adversely affect the system, but I would like to have some data to base my decision on. Does anyone know of any data on this?
Hello, I am working with a custom board using an STM32u5g9vjt6q and a DSI display in video mode. The screen consist of multiple elements including scrollwheels, text boxes, arcs and boxes with borders and using the double buffer strategy Originally I had the project running on FreeRTOS and all of the elements would update correctly by calling invalidate on the items that needed to be updated.I have switched to running no OS for various reasons and now the only screen elements that update 100% of the time are the scrollwheels, I sometimes see a textbox wildcard flicker between the default value and the updated value but that is not very common. If I call View::invalidate(); from inside of screen1::handleTickEvent() all of the screen elements will refresh and be displayed correctly but this kills the performance of the device as expected and I know this is not the solution to my problem. I have been doing a lot of reading on this forum and I started to look into th
Hello, I've been working on stm32u5g9j dk1 board, with a 466 * 466 oled display that I've changed.It works great with bitmap widgets, or vector widgets on a software rendering.But if I change it to hardware rendering to use neochromVG, the display only shows bitmap widgets, not vector widgets.Software vector rendering has a performance issue, so I'd like to use hardware vector rendering to look nice and smooth.I attatched main.c and ioc file. Could you please have a look into it and help me out?If you need anything more, reply me and I'll send you rest of it as soon as I can.Thank you.
Hi, i have a project here using an STM32U575RIT6Q with an external device i have connected throught the SPI interface.The microcontroller is at 160MHz using HSE with PLL. The SPI interface is at 40MHz with SPI mode 0, nss software and 8 bits per word.The problem surges when i call the function HAL_SPI_Receive. The reception of a long frame breaks up after some received bytes and then timeouts. Due to this timeout i cannot be able to receive the whole frame.I have made some test on the NUCLEO-U575ZI-Q using the 3 SPI peripherals to check if my SPI interface has any limitation. The result is the same.Here is the configuration for the SPI interfaces:/** * @brief SPI1 Initialization Function * @PAram None * @retval None */ static void MX_SPI1_Init(void) { /* USER CODE BEGIN SPI1_Init 0 */ /* USER CODE END SPI1_Init 0 */ SPI_AutonomousModeConfTypeDef HAL_SPI_AutonomousMode_Cfg_Struct = {0}; /* USER CODE BEGIN SPI1_Init 1 */ /* USER CODE END SPI1_Init 1 */ /* SPI1 paramet
Hello I have a monochrome RGB display which expects on the green pins a 8 bits grey scale value, 0x00 is black and 0xFF is white . I managed to make it work without TouchGfx, configuring LTDC with L8 pixel format on layer 0 and using a LUT (HAL_LTDC_ConfigCLUT and HAL_LTDC_EnableCLUT functions). Now I want to use the display with TouchGfx.I see I can not select a Frame buffer Pixel Format (LTDC) which would make Touch Gfx to write on frame buffer with a 8 bits grey scale format. I selected ABGR2222, in order to test and see what happened.I designed a few boxes of different grey scale on TouhGfx Designer. I generated code from TouchGfx Designer. I can see on my TouchGFXGeneratedHAL.cpp that a LCD8bpp_CLUT[] is used.The program runs and the display shows something.The problem is I can not see the whole range of 256 gray scale. It seems I only have a few of grey scales. I have an snippet which tries to show smoothly the grey scale on a box color, I only get
Hello,When I read though AN5200 (Getting started with STM32H7 Series SDMMC host controller), I am not sure I fully understand the statement about UHS-I mode support in Table 2. (SDMMC1 and SDMMC2 main features) as in below screenshot, The table states that SDMMC2 does not have control signals for external voltage switch transceiver, but it also states in footnote that it seems can support a transceiver with bus direction sensing without the need for direction control signals.I can not find further information in documents about how UHS-I mode on SDMMC2 is implemented, but what in the above table and the footnote implies it is possible. so I would like to ask here to confirm that1) if UHS-I mode support can be achieved on SDMMC2 port, without direction control signals, and 2) As no clock feedback input pin and direction control pin on SDMMC2 port, are these pin actually not needed in this scenario? Thus a level shifter with bus direction sensing like TXB0108 (from TI) will be
Dear ST expert, We want to upgrade from STM32G4 to STM32H7 dual core. - Can you please suggest how to use CORDIC in STM32H745 series? If not then what is the best way to calculate sine and cosine of float values? - Please suggest any alternate part no which has CORDIC and dual core combination - Is there any other consideration needed to upgrade? We want to upgrade to dual core due to high throughput FDCAN link where one of the core, preferably M7, would be used entirely to handle FDCAN. - Do you have any library or example codes for high throughput FDCAN link? Regards, Jitendra Edited by ST Moderator to add the right labels
Hi, I'm not able to find any DMA available with CAN peripheral in STM32G4. After going deep search I found there's no such native DMA request available for CAN peripherals. So, I want to know is it true that STM32 controllers don't come with DMA with FDCAN/CAN. If available, then kindly share me the reference for making it work. Since, I want to have fast data transfer, and if I use the FDCAN with interrupt based, it will overload my CPU cycles. Thanks in advance.
Hi ST,I have generated dual FOC code using micro STM32F415zgtx and MC Workbench 6.4.0. I have to use STM32F767ZI in my application. Is It possible to port this software from STM32F415zgtx to STM32F767ZI and run two BLDC motors with FOC.Thanks,Rahul Deshpande
I started a new STM32G0B1 project based on the example project, ADC_MultiChannelSingleConversion, and added FreeRTOS. The default task makes the same HAL_ADCEx_Calibration_Start and HAL_ADC_Start_DMA ffunctino calls as the example, starts a periodic timer to fire every 10 ms and then goes into an infinite loop where all it does it repeatedly call osDelay(1000).Every time the timer I started fires, it calls a function that increments a counter, toggles the green, LED,makes the same HAL_ADC_Start call the example does, delays, calls HAL_Delay(1), and then checks ubDmaTransferStatus, also the same way the example does I also print out the loop counter and the computed values from the example, plus a few more for seven altogether, and then clear ubDmaTransferStatus.But if ubDmaTransferStatus is not set, I print out a line of dashes.I eliminated the blue button entirely from the project because I'm using the timer for the same purpose..Here's the issue. the fl
void HAL_FDCAN_TxBufferCompleteCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t BufferIndexes) { extern FDCAN_HandleTypeDef hfdcan1; if(hfdcan == &hfdcan1) { // printf("tx cplt = %d\n",BufferIndexes); can_tx_cplt = 1; } } void HAL_FDCAN_ErrorCallback(FDCAN_HandleTypeDef *hfdcan) { // 错误处理 //printf("FDCAN Error Callback: ErrorCode=%lu\n", (unsigned long)(hfdcan->ErrorCode)); uint32_t error; error = HAL_FDCAN_GetError(hfdcan); if(error == 4) { can_init(); } printf("FDCAN Error = %d\n",error); } void can_send_msg(uint32_t id, uint8_t *data) { can_send_msg_len(id,data,3); } #if 1 void can_send_msg_len(uint32_t id, uint8_t *data,uint8_t len) { FDCAN_TxHeaderTypeDef FDCAN_Tx; static uint32_t can_tx_time_out_count = 0; extern FDCAN_HandleTypeDef hfdcan1; uint8_t retry_count = 0; bool flag = 0; FDCAN_Tx.TxFrameType = FDCAN_DATA_FRAME; FDCAN_Tx.TxEventFifoControl = FDCAN_NO_TX_EVENTS; FDCAN_Tx.MessageMarker = 0x00; FDCAN_Tx.Identifier = id; // 使用输入的ID FDCAN_
Hi,I would like to consult the USB HID GetReport feature.The issue is that the printout data from MCU log is different from bus hound displayed result.Bus hound is trial version, the data length indeed is 16.This is the log I set to printout from USBD_HID_Keyboard_SetReport#define UX_DEVICE_CLASS_HID_EVENT_BUFFER_LENGTH 32 static uint8_t g_last_input_report[17]; // adjust size to match your report static UINT g_last_input_report_len = 0; /** * @brief USBD_HID_Keyboard_GetReport * This function is invoked when host is requesting event through * control GET_REPORT request. * hid_instance: Pointer to the hid class instance. * hid_event: Pointer to structure of the hid event. * @retval status */ UINT USBD_HID_Keyboard_GetReport(UX_SLAVE_CLASS_HID *hid_instance, UX_SLAVE_CLASS_HID_EVENT *hid_event) { printf(">>> USBD_HID_Keyboard_GetReport invoked\r\n"); static uint32_t get_report_counter = 0; printf("=== GET_REPORT #%lu at %lu ms ===\r\n", ++get_report_counter, HAL_G
Use CY7C1441KV33 to expand memory space on STM32H7A3, with the following connections::The timing requirements for burst read and write of CY7C1441KV33 are as follows: (1)Read timing: First read the data of CY7C1441KV33, and then add 1 to the internal address of CY7C1441KV33.(2)Write timing: First, add 1 to the internal address of CY7C1441KV33, and then write data to CY7C1441KV33. STM32H7A3 can meet the read timing requirements of CY7C1441KV33. But STM32H7A3 does not meet the writing timing requirements of CY7C1441KV33. May I ask if STM32H7A3 can use CY7C1441KV33? NOTE:The burst read timing diagram of STM32H7A3 and CY7C1441KV33 is shown below:STM32H7A3 read timingCY7C1441KV33 read timing The burst write timing diagram of STM32H7A3 and CY7C1441KV33 is shown below:STM32H7A3 write timingCY7C1441KV33 write timing
hii, i am using stm32 nucleo g0-b1re i am trying to receive data in interrupt mode, but cant figure out what is wrong, i am new to stm32 i2c protocol.i have used master as nucleo-h743zi2 and transmitting data, but it is not showing anything on minicom.
Hello, i see trouble with I2C HAL_I2C_Master_Transmit(&hi2c2, addr==0 ? I2C_ADDR_DACR : addr, Buff,3,5);in project with TouchGFX RTOS i have two threads. One for GUI and second is this hw I2C.On scope i see, that I2C sometimes (random) split send or receive with clock stretch and sometimes complete hang or skip bytes. How is right setup for use it in multitask envi?Seems when thread block more as timeout in this cmd , then cmd skip bytes or...Now on U5, but i mean issue is all HAL. And i ask some tips, except DMA and IT, this ofcourse can change situation.
Would STM32G4 performance gets effected if runs at lower voltage (1.8V)? Can the core clock run at max 170MHZ or it will run lower speed?
I am trying to configure the LPUART on my board, but appear to be getting nowhere. I've already configured the PLL to run at 110 MHz, and I changed the appropriate registers (`SW`) to use PLL as the system clock. I've tried flashing the board with Zephyr OS just to make sure that it works, and it indeed works. When I use GDB to inspect the relevant registers (the ones changed by my code below) they appear to all have the values that I expect. I can't for the life of me figure out what is going on. Using a logic analyzer, I see 0 activity on the TX pin, which is in a constant state of high. Here is my code for configuring my LPUART (I am using CMSIS). I want a baud rate of 115200, and my board is configured to run at 110 MHz.```#include <stdint.h> #include "stm32l5xx.h" void enable_lpuart1(void) { volatile uint32_t dummy; RCC->CCIPR1 &= ~(3 << RCC_CCIPR1_LPUART1SEL_Pos); RCC->CCIPR1 |= (1 << RCC_CCIPR1_LPUART1SEL_Pos); // turn on the LPU
Hello,I would like to use the X-CUBE-CRYPTOLIB to calculate a SHA256 with a key, i'm using STM32CubeIDE 1.18.0 for an STM32u083 microcontroller, STM32CubeExpansion_Crypto_V4.2.0.The issue I have is the first time I call cmox_mac_compute the wrong result is returned. cmox_init_arg_t init_target = {CMOX_INIT_TARGET_AUTO, NULL}; if (cmox_initialize(&init_target) != CMOX_INIT_SUCCESS) { Error_Handler(); } uint8_t tResult[32] = {0}; uint8_t tMessage[63] = {153,234,98,104,200,115,43,208,16,24,124,106,63,66,15,0,0,0,0,0,250,191,113,33,0,0,0,0,0,0,0,53,231,216,222,211,203,112,30,58,145,125,101,150,57,215,149,108,50,229,247,80,239,35,157,119,19,121,218,120,231,50,70}; uint8_t tKey[32] = {173,182,187,187,244,184,224,88,49,224,82,119,184,125,189,202,255,179,154,153,213,5,120,138,162,120,25,250,40,96,170,122}; //Test 1 retval = cmox_mac_compute(CMOX_HMAC_SHA256_ALGO, // Use HMAC SHA256 algorithm tMessage, sizeof(tMessage), // Message to authenticate tKey,sizeof(tKey)
I am using the NUCLEO-L433RC-P development board and in the process of designing my own PCB.I would like to be able to update firmware via USB, but need to make sure my PCB design allows for this.Currently I have VDDUSB connected to 3.3V, but thinking this is now incorrect.The VDDUSB pin is not rated to 5V, so I can't connect the 5V from the USB-C connector to the VDDUSB pin.Presumably the VDDUSB is used to indicate to the MCU that the USB cable is connected ? Is VDDUSB used as a signal or for power ?Should I just use a linear regulator to convert the USB 5V to 3.3V for the VDDUSB pin ?Also, the BOOT0 pin has to be pulled high to put the STM32 into bootloader mode.Can BOOT0 be connected to a pin on the USB-C connector ?Otherwise I would need an external connector to pull up the BOOT0 pin which does not seem user friendly.
Hey All,I hope you can help me. I'm trying to bring up my new board, which contains a STM32N657IO. Attached are the schematics. You can assume the 5V supply is working(it is after a few bodge wires). My problem is as follows. I'm trying to connect to the STM32N6 over SWD using a JLink. It seems the SWD communication with the Debug port is successful, but the communication with the core fails. I get the following output when trying to connect to the MCU:Device "STM32N657I0" selected. Connecting to target via SWD ConfigTargetSettings() start ---Setting ETM Base Address--- ---Setting TF Base Address--- ---Setting ETF Base Address--- ---Setting TPIU Base Address--- ConfigTargetSettings() end - Took 24us InitTarget() start SWD selected. Executing JTAG -> SWD switching sequence. DAP initialized successfully. Can not attach to CPU. Trying connect under reset. SWD selected. Executing JTAG -> SWD switching sequence. DAP initialized successfully. Connecting to CPU via connect under
Hi, I am developing firmware for an STM32H747 with Ethernet connected via RMII to a LAN8742 PHY. The project uses lwIP and FreeRTOS. UDP communication works fine when sending data, but when receiving UDP packets, the system crashes after some rundom time, even just when pinging the device. Has anyone encountered a similar issue or can suggest what might cause UDP receive-related crashes in this setup? Thank you
HelloI have a MB1779 B-WL5M-SUBG1 board that I am trying to adapt some LoRa example code from the Nucleo-WL55JC. I see the LoRa front ends are different and the device tree needs to be modified to work, however the PC5 and PC3 pins are not defined on the data sheet with a reference to the GPIO pin that should be used to communicate with the module. It seems the data sheet reveals Pin 27 as the switch between high and low power. My question is:To communicate with the module as on the Nucleo-WL55JC, what would the device tree need to refer to for RX/TX?This is a new process for me, any help is greatly appreciated.Thank youOther relevant posts:https://community.st.com/t5/stm32-mcus-wireless/b-wl5m-subg1-rf-switch/td-p/737015
Hello, I am a beginner developer who is new to STM32 with TouchGFX.I am currently trying to display the GUI configured in TouchGFX Designer on a custom board consisting of an STM32F429IGT6 MCU and IS42S16400J - 7TL SDRAM.I have completed all GPIO settings while reviewing the circuit diagram, and also completed settings for FMC and LTDC in CubeMX. I have also written the SDRAM initialization code in the main.c file based on the example.The issue is that the screen remains blank.After reviewing various materials, I believe the settings are correct, and I have also completed the PCB power-on test.It seems like the SDRAM is not initializing properly. Please let me know if there is anything I might have missed.
Hello Friends,I am Using STM32F303 MCU for my FULL Speed USB communication board. Used interrupt transfer.Board is going to use in Noisy Industrial environment.So , Planned to use Shielded USB cable with EMI Chokes ( Both Side ).Cable Length is 1.8 Mtr.I plan to use ESD / EMI ICs on the board before the MCU like ....USBUF01W6 "OR" USBLC6-2SC6.Any Suggestion Which would be better out of two ? Regards,Bsuthar
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.