Get ready for the STM32 Summit 2026 | Online, November 3
Join conversations with your peers and ST experts. Explore the full potential of STM32 microprocessors for your embedded design.
Most recent activity
Is micro python an option?
..
I have to design a system, where a STM32MP157, with its embedded Cortex M4, communicate with other clients over a high-speed serial connection. There should be a 10 : 1 serializer for the MOSI line, and a 1 : 10 deserializer for the MISO line (from the STM32MP15x perspective).While the transmission from the STM32MP15x via the serializer looks doable with the FMC address lines, I am looking for a reasonable fast way to read the asynchronous data from the deserializer. After I read the app note AN5020 Digital camera interface (DCMI) on STM32 MCUs, I think this could be a way.The idea is: When data arrive via the deserializer, these are clocked into the DCMI, DMA transfered and a interrupt is generated.When the DCMI is configured as 8 bit, external syncronized, with 8 Databit, HSYNC and VSYNC and the clock, could this work even with long "blanking peroides" (Where VSYNC indicates no data)? Question 1: Is there a limit on the length of the blanking periods of the DCMI?Question 2: Must a pe
Hi all,I have been trying to get DSI interface on a custom board using STM32MP1.The device tree exactly done as given here : LInk.I do have DK2 kit , which i probe I am able to see the signals at DSI PHY even if display is not connected.In case of my board , I am unable to get it up. See the device tree attached for more details.The reference design is taken from DK2.The probing of driver i believe fails silently since neither I do any failure logs related to DSI in kernel boot logs. modetest -M : Also does not give positive result. I can see encoder field is empty and unpopulated.Any leads are appreciated.
We want to use FFmpeg for video processing (encoding, decoding, scaling, format convertion, etc) on a STM32MP157C based custom board. I understand STM32MP157C has a display controller and a Vivante GPU that supports OpenGL-ES and OpenVG to accelerate graphics-based applications.We are not using any display (LCD/HDMI) with the board and the display controller is disabled in device tree.We want to use the GPU's hardware acceleration feature for video processing through FFmpeg.We will compile the FFmpeg from source and want to include STM32MP157C GPU Hardware accelerator, that can be access by "-hwaccel" option in ffmpeg command.We don't know yet how to implement this. I looked at PM0263 (STM32MP157 GPU application programming manual) but not much helpfull.Is there any OpenGL API that exposes GPU's hardware acceleration that we can integrate with ffmpeg?Has anyone used STM32MP157C GPU with FFmpeg or any video processing application?Any help is much appreciated.
I'm working on a driver present in the Linux 5.4 kernel. In RS485 communication I receive everything I send, without being connected to another device to return what I sent.I use the command echo -e "Test" > /dev/ttyLP0 for the submission.I know that by default in RS485 communication I receive everything I send, but I want to disable the return (echo).BUG:My setup is:PLC - Programmable Logic ControllerProcessor: LS1027 (It's not a ST processor)Linux Kernel 5.4 (tty driver present in this kernel version, who owns the stm32-usart.c)I use a USB logic analyzer to analyze the signal sent through the echo -e "Test" > /dev/ttyLP0. With rs485 serial pins: D+, D- and GND.Hardware:Best regardsEduardo Gerhardt
I am trying to configure the TIM2_CH4 to capture mode on EV1 board so I can sense a fan speed from a PWM fan but I keep getting cat: read error: Connection timed outI have configured the timer as follows: &timers2{ pinctrl-names = "default", "sleep"; pinctrl-0 = <&tim2_pins_mx>; pinctrl-1 = <&tim2_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN timers2 */ dma-names = "ch3"; pwm { /* enable PWM on TIM2 */ status = "okay"; }; /* USER CODE END timers2 */ }; tim2_pins_mx: tim2_mx-0 { pins { pinmux = <STM32_PINMUX('A', 3, AF1)>; /* TIM2_CH4 */ bias-disable; drive-push-pull; slew-rate = <0>; }; }; tim2_sleep_pins_mx: tim2_sleep_mx-0 { pins { pinmux = <STM32_PINMUX('A', 3, ANALOG)>; /* TIM2_CH4 */ }; };I am using TIM12_CH1 to generate a pulse and I have shorted the two pins on the board.What am I doing wrong? Is there a better way to detect the sense on a PWM fan?
External memory, connected to a STM32MP1, is written with the STM32CubeProgrammer via USB. Here the chip to be written is written with "usb1" (STM32_Programmer.sh -c port=usb1 -d some.tsv").Here we could notice the following behavior: If more than one STM32MP1 is connected to the host system via USB, another label (usb2) is assigned. If a higher serial number is connected later, it will be assigned to usb1, and the already connected device will be assigned the new label usb2. The connected devices are displayed in the device manager as DFU Devices. There is no COM port assignment.This raises the question of how several devices can be connected to a host at the same time and assigned uniquely to enable several devices to be flashed in parallel.What is the best practice to guarantee consistent addressing of the boards.
Currently I am trying to set up the emmc boot on a stm32mp157. I have mirrored the partitions of a working SD card to the emmc with:sgdisk -e /dev/mmcblk1 sgdisk -R=/dev/mmcblk2 /dev/mmcblk1 sgdisk -G /dev/mmcblk2 dd if=/dev/mmcblk1p1 of=/dev/mmcblk2p1 bs=512 conv=fdatasync dd if=/dev/mmcblk1p2 of=/dev/mmcblk2p2 bs=512 conv=fdatasync dd if=/dev/mmcblk1p3 of=/dev/mmcblk2p3 bs=512 conv=fdatasync dd if=/dev/mmcblk1p4 of=/dev/mmcblk2p4 bs=512 conv=fdatasync dd if=/dev/mmcblk1p5 of=/dev/mmcblk2p5 bs=512 conv=fdatasync dd if=/dev/mmcblk1p6 of=/dev/mmcblk2p6 bs=512 conv=fdatasync echo 0 > /sys/block/mmcblk2boot0/force_ro dd if=/dev/mmcblk1p1 of=/dev/mmcblk2boot0 bs=512 conv=fdatasync echo 1 > /sys/block/mmcblk2boot0/force_ro echo 0 > /sys/block/mmcblk2boot1/force_ro dd if=/dev/mmcblk1p2 of=/dev/mmcblk2boot1 bs=512 conv=fdatasync echo 1 > /sys/block/mmcblk2boot1/force_ropartition is fsbl1, fsbl2, ssbl, boot, rootfs1, rootfs2.Then i used the OTP boot device conf
Hi everyone,I am using stm32mp157f-dk2 with openSTLinux-5.4-dunfell-eglf distribution.I would like to configure my device tree using cubeMX.The generated dts file seems OK to me. However, how can I tell yocto to use my newly generated device tree?The instruction on https://wiki.st.com/stm32mpu/wiki/How_to_create_your_own_machinedidn't mention anything about this.I have tried to modify the meta-st-stm32mp-addons/classes/cubemx-stm32mp.bbclass but it doesn't work.It seems to me that the default meta-st-stm32mp-addons/conf/machine/stm32mp1-mx.conf is not used.Regards, Leung
I've just watched a few tutorials on ADC, and I've enabled IN1 on ADC1 which seems to map to the connector labeled A3 as per this doc.I then added the following to my main.c within the CM4 project.uint32_t raw = 0; char msg[100]; HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY); raw = HAL_ADC_GetValue(&hadc1); HAL_Delay(100); sprintf(msg, "%d\r\n", raw); VIRT_UART_Transmit(&huart0, msg, strlen(msg));Then I plugged pin A3 directly into GND so I could validate it's working by getting a reading of 0, but I get either 32768, 65518, or 0. I've also tried to supply it 1v and it seems to give 65518 constantly. I've also tried to switch to hdac2 by creating the same configurations in the IOC and I had the same results. It seems like it may be reading multiple different values from the different ports and displaying them all as they come in, but I don't even have anything defined in the other INs.Furthermore, if I did define multiple INs for one ADC (which
I have a 3rd party SOM (seeed studio Odyssey). When I edit the .dts file in the tf-a-stm32mp1/fdts directory and add: &pwr_regulators { system_suspend_supported_soc_modes = < STM32_PM_CSLEEP_RUN STM32_PM_CSTOP_ALLOW_LP_STOP STM32_PM_CSTOP_ALLOW_STANDBY_DDR_SR >; system_off_soc_mode = <STM32_PM_SHUTDOWN>; vdd-supply = <&vdd>; vdd_3v3_usbfs-supply = <&vdd_usb>; }; When I try to do a "shutdown -h 0" i eventually get a WDT timeout. One difference (from the DK2 board) is that they put the PMIC on i2c2 (rather than 4 or 6). Not sure if this is a red-herring or not.Here is their meta layer: https://github.com/Seeed-Studio/meta-st-odysseyThanks,Ben Beckwith
When I try to connect to a STM32MP157F-DK2 board via SWD/JTAG, STM32CubeProgrammer aborts with a segmentation fault on my host system (openSUSE Leap 15.2).I get the following error message, when I start STM32CubeProgrammer within a shell:# # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007fee0c8259fe, pid=14499, tid=0x00007fee00ee6700 # # JRE version: OpenJDK Runtime Environment (8.0_265-b01) (build 1.8.0_265-b01) # Java VM: OpenJDK 64-Bit Server VM (25.265-b01 mixed mode linux-amd64 compressed oops) # Problematic frame: # C [libCubeProgrammer_API.so+0x5b9fe] connectStLink+0x2ee # # Core dump written. Default location: /usr/local/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/core or core.14499 # # An error report file with more information is saved as: # /usr/local/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/hs_err_pid14499.log # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugrepor
Hi all,I am trying to interface SN65DSI83 with STM32MP1.Below is my device tree:&ltdc{ status = "okay"; /* USER CODE BEGIN ltdc */ port { #address-cells = <1>; #size-cells = <0>; ltdc_ep0_out: endpoint@0 { reg = <0>; remote-endpoint = <&dsi_in>; }; }; /* USER CODE END ltdc */ }; &dsi { #address-cells = <1>; #size-cells = <0>; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; dsi_in: endpoint { remote-endpoint = <&ltdc_ep0_out>; }; }; port@1 { reg = <1>; dsi_out: endpoint { remote-endpoint = <&dsi_lvds_bridge_in>; }; }; }; }; &i2c4 { dsi_lvds_bridge: sn65dsi83@2c { compatible = "ti,sn65dsi83"; reg = <0x2c>; ti,dsi-lanes = <2>; ti,lvds-format = <1>; ti,lvds-bpp = <24>; ti,width-mm = <217
Hello,What is the best (fastest and reliable) way to program a blank eMMC for mass production? In my custom board, the device will boot from eMMC, no SD card is available. The default pins are shown in the link below. For other data pins is there any restriction?https://wiki.st.com/stm32mpu/wiki/STM32MP15_ROM_code_overview#Boot_from_e-E2-80-A2MMC-E2-84-A2
I am configuring the CPU to wake up from UART reception and/or GPIO interrupt:echo enabled > /sys/devices/platform/soc/4000f000.serial/tty/ttySTM1/power/wakeupecho enabled /sys/devices/platform/soc/4000f000.serial/power/wakeupAnd it goes to sleep with:echo "mem" > /sys/power/stateAfter 1 hour in sleep mode, the time is 20 minutes slow. This is not happening in Run mode.Additional Information:Linux 5.4.313.0V RTC battery backup
Hi!I ordered now a STM32H747I-DISCO board. Have looked in the source tree from U-Boot (ST fork and mainline). I know there is a support for STM32H743I-EVAL board. Wondering why there isn't a support for the STM32H747I-DISCO.Generic question:Has somebody interests when I add U-Boot support for the STM32H747I-DISCO Board?(Maybe I could also add Linux support. Okay, 32MiB is maybe not enough RAM...)It's maybe only a gimmick...
Hi,I'm using OpenST-linux version 4.9 on a STM32MP157c-ev1 and I wrote a simple script to run my firmware for Core M4. I would like to know how I can make the script run automatically after system boot.Here's my script if could of any help for answers, I wrote it following this guide, I tested it launching manually and it works, but now I would like to it runs automatically after system finishes booting. How can I do?RegardsMarco #! /bin/sh ################### CONFIGURATION VARIABLES ################################################### FIRMAWARE_PATH="/lib/firmware/" M4_FIRMWARE_NAME="xmi_ccu-test_CM4.elf" REMOTE_PROCESSOR="remoteproc0" ########################### SCRIPT BODY ###################################################### # Add firmware path if different then /lib/firmware if [ $FIRMAWARE_PATH != "/lib/firmware/" ]; then echo -n $FIRMAWARE_PATH$FIRMAWARE_PATH > "/sys/module/firmware_class/parameters/path" fi # Load firm
I can monitor the SAI2 signals directly from the audio codec pins. The MCLK, SCLK, and Fs signals appear correctly based on my configuration but when I connect my oscilloscope to the GPIO header pins (CN2), the lines all appear low even though they are changing for the codec. This doesn't happen with the I2C1 pins connected to the audio codec. I can monitor those just fine from their respective GPIO header pins, which leads me to believe it isn't an issue with the pins being configured as alternate function. Is there a reason or solution for this?
I am using stm32mp157c and working initialize mtd nand flash w25n512.i was able to run it on kernel mode. Kernel device tree is;aliases { spinand0 = &qspi; }; ... &qspi { pinctrl-names = "default"; pinctrl-0 = <&quadspi_pins_mx>; num-cs = <0x1>; #address-cells = <1>; #size-cells = <0>; status = "okay"; flash0: w25n512@0 { compatible = "spi-nand"; reg = <0x0>; spi-rx-bus-width = <2>; spi-tx-bus-width = <2>; spi-max-frequency = <166000000>; #address-cells = <1>; #size-cells = <1>; }; }; ... &pinctrl { quadspi_pins_mx: quadspi_mx-0 { pins1 { pinmux = <STM32_PINMUX('B', 6, AF10)>, /* QUADSPI_BK1_NCS */ <STM32_PINMUX('F', 8, AF10)>, /* QUADSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>; /* QUADSPI_BK1_IO1 */ bias-disable; drive-push-pull; slew-rate = <1>; }; pins2 { pinmux = <STM32_PINMUX('F', 10, AF9)>
Learn how to protect OEM assets and ensure integrity using open-source softwareDownload our whitepaper to better understand these strategies:Secure Boot: How it works and why it is importantHow chain-of-trust mechanisms protect OEM and user dataSecuring OEM manufacturing facilities using Secure Secret ProvisioningIn-depth look at the benefits of the open-source approach to security
I flashed the board with dd command and tried either flashing whole SD card with the .raw image and each partition separately as well, it came up at panic mode. The image is en.FLASH-stm32mp1-openstlinux-5-10-dunfell-mp1-21-11-17_tar_v3.1.0. Does anyone have same problem?root@stm32mp1:~# PANIC at PC : 0x2fff1f4bException mode=0x00000016 at: 0x2fff1f4b
Hello , I am running this example in loop. : 5.1 Display a window with Python and weston/wayland↑and occasionally getting this error : Gdk-Message: 11:00:18.837: Error 71 (Protocol error) dispatching to Wayland display.What is this ? and how to fix?I am on 3.1 ecosystemBr,D.
I can able to display splash image from uboot. but once kernel boots it will disappeared, screen will become black . So i want avoid framebuffer clear of dispaly.
SAI2 Block A configured as a MasterTX and works. Fs configured for 48KHz, bit clock configured as 64*Fs and MCLK as 256*MCLK. I've verified these signals are sent to the audio codec which is configured as a slave (receives MCLK, SCLK, LRCLK (Fs)). The audio codec provides a transmit line and receive line for data. I'm successful with my asynchronous block A in sending audio to the audio codec but when I configure block B as synchronous to block A, the FIFO never fills, and I've verified this inside the HAL_SAI_Receive function. It just times out. I've verified that the audio data is on the SDB line as well via an oscilloscope.Might be related, but on the development boards GPIO connector which exposes all SAI2 pins except MCLK, all signals read as 0v even though reading off of the audio codecs lines, I get the correct signals that I'm generating on those lines. Just an extra problem. I don't have this issue with the I2C that I connect to the audio codec with.Heres the configuration of
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.