Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and find answers on STM32 microprocessors, including hardware, power, DRAM, flashing, interfacing, device tree, and peripherals.
Most recent activity
Hi,Is it possible to utilize the PCM1754 DAC as a Sound card with the ALSA Framework on OpenSTLinux?According to the documentation, the PCM1754 functions as a Hardware-controlled DAC, eliminating the need for additional drivers. Therefore, is it necessary to develop custom drivers for this particular DAC if we are using linux as OS?If it is possible, are there any references for configuring device tree files and sound card configuration to facilitate this setup?
Hello everyone! I am working on a small prototype based on the STM32MP157F-DK2 development board. For convenience, I want to use a GPIO Connector compatible with the Raspberry Pi to power the board (CN2) instead of the USB Type-C (CN6). I have an expansion module that successfully powers the Raspberry Pi through the GPIO connector (pin 2, 4), but it cannot provide power to the STM32MP157F-DK2 board. The kernel doesn't start up, and an error message appears, indicating the lack of proper power and suggesting the use of power supplies with a 3A current. My module can provide up to 3 amps, which is equivalent to the output of my power adapter that I use to supply power to the board via USB Type-C. I even conducted an experiment and routed the power from the expansion module to the USB Type-C connector (CN6), successfully powering the board, which indicates that the power source is working correctly. Is it possible to power the STM32MP157F-DK2 board through the GPIO connector? If yes, what
We are experiencing an issue where, in approximately 1 in 1000 cases, we don't get a TxRxCpltCallback callback after starting a SPI DMA transfer from an ISR on the ARM-M4 (coprocessor). The transfer appears to have taken place as all the bytes are received in the Rx data buffer, and scope traces show the SPI transaction occurred successfully. However afterwards, whilst `hspi->hdmatx->State` is the expected `HAL_DMA_STATE_READY`, `hspi->hdmarx->State` is still `HAL_DMA_STATE_BUSY`.To be clear, the vast majority of the time, it is working as expected, but it appears to be some kind of race condition where occasionally, the completion interrupt doesn't occur.The use case is for reading a set of samples (18 bytes) from a multichannel ADC. An interrupt "data ready" is given, and we are using the `HAL_SPI_TransmitReceive_DMA()` function inside this minimal ISR. I've done quite a bit of profiling for this case, so I am confident we exit the ISR well before the SPI transaction has
Dear ST team, Hope you're doing well.We have developed a custom board based on STM32MP151 with emmc. Currently, we are using STM32MP151 for flashing. The problem is each flash is taking around 15 minutes time and it will be a critical issue in our production cycle because we will produce the boards in large quantities.Please give your valuable advice on the below queries.1. Can we reduce the flashing time?2. Can we flash multiple boards in parallel?
error is logged as > Label or path sram not foundThe DTS file at the failing line reads &sram{ dma_pool:dma_pool@0{ reg = <0x50000 0x10000>; pool; }; }; I'm assuming this is to specify where the SRAM pool is. But this automatically generated file fails at build.The CubeMX project has worked before, just upgraded to mickledore and the latest CubeMX but I don't think that is the problem.I have done clean bitbakes etcBuilding the sample machines and configs appears to work perfectly its only my own new machine that is failing> looking at the 'equivalent' DTS file in one of the standard builds I dont see SRAM specified anywhere. I think my nachine specification is off although it was build using the tutorial in the docs....... more digging.
Hi,I have a problem with hanging up my board occasionally when an issue from the console reboot.I read about and the internet says this is a problem with the EMMC memory's power cycle.So I followed by a linkhttps://github.com/orangepi-xunlong/openwrt/commit/14d3a99e17f2ec6097eeef97530cba2d62c58d3c#diff-1335d7b270cc58c5342d5e2843730580bfe5d8048d765abb753050095929d85dbut still, after a few reboots my board stacked.My final message from the console is as follows [ OK ] Stopped Create Static Device Nodes in /dev. [ OK ] Reached target System Shutdown. [ OK ] Reached target Late Shutdown Services. [ OK ] Finished System Reboot. [ OK ] Reached target System Reboot. [ 32.494373] watchdog: watchdog0: watchdog did not stop! [ 32.522678] systemd-shutdown[1]: Using hardware watchdog 'STM32 Independent 0 [ 32.533457] systemd-shutdown[1]: Watchdog running with a timeout of 2min. [ 32.559399] systemd-shutdown[1]: Syncing filesystems and block devices. [ 32.687090] systemd-shutdown[1]: S
Hello. We already have a custom board based on STM32MP151CAD3 with an eMMC. The following pins are different with default eMMC pins.SDMMC2_CMD: PA0SDMMC2_D1: PB7 As not default pins are used, we need to update OTP value. Here are my result. OTP3 = 0x00000004emmc_if_id=2: SDMMC2(uses non default AFmux defined in OTP).OTP5 = 0x27A41094SDMMC2_CMD = PA0 (bits[15:0]: port0=1=GPIOA, pin0=0, afmux0=9, mode0=4=AF;pull-up;medium-speed)SDMMC2_D1 = PB7 (bits[31:16]: port1=2=GPIOB, pin1=7, afmux1=10, mode1=4=AF;pull-up;medium-speed)However, it does not work. I also trace its ROM log. Attached is log.
Hi, let us know, for this development kit,1. Linux customization possible.2. support for development
Hello, I built an image with the following configuration by using the ST wiki pages:STM32MP157D-DK1 Evaluation BoardYocto KirkstoneSTM32MP1-Ecosystem-v4.1.0meta-java layer (branch kirkstone)I have used the following command to create an image:./create_sdcard_from_flashlayout.sh ../flashlayout_st-image-weston/extensible/FlashLayout_sdcard_stm32mp157d-dk1-extensible.tsvI burnt the image to SD card (came with the board itself) with dd, using the following command:sudo dd if=../flashlayout_st-image-weston/extensible/../../FlashLayout_sdcard_stm32mp157d-dk1-extensible.raw of=/dev/sdb bs=8M conv=fdatasync status=progressWhen I boot the board kernel panics. Please see the following kernel output:bootfs: Updating bad block inode.Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structure Pass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary informationbootfs: ***** FILE SYSTEM WAS MODIFIED *****bootfs: 54/16384 files (3.7
Hello, In order to use the non-default QSPI boot locations, my understanding is port0-port3, 4 signals need to be defined in OTP words 3, 5, and 6 based on a similar question about SDMMC1 discussed here:https://community.st.com/t5/stm32-mpu-products/how-to-change-emmc-interface/td-p/344994For QSPI the default signals according to the getting started guide, AN5474, are:PB2 QUADSPI_BK1_NCSQUADSPI_BK1_NCSPF10 QUADSPI_CLKPF8 QUADSPI_BK1_IO0PF9 QUADSPI_BK1_IO1What is the mapping for the OTP ports 0-3 to the functional signal names NCS, CLK, IO0, IO1?i.e. port 0=NCS, CLK, IO0, or IO1? Same for the other three ports.I was not able to find this described or an example for QSPI and OTP.Thanks.
Hello,We are using the STM32MP151 custom board microprocessor with an external flash memory (emmc). At start-up the board and linux boot correctly, but when reboot it, the board keeps in uart/usb boot loader mode and doesn't boot. It happen also when we reboot with a push button in rst pin and with software reboot.When we reboot in software reboot, the last traces we get are:Could you help us? Thanks.Regards.
Hello,I've been trying to boot my STM32MP157F-EV1 evaluation board from the SD card but I get the result that is shown in the image when using minicom. I used to work on the board for a long time with no problem, but recently I tried booting it again and this happened. I'm not sure if it's a hardware or a software problem. I made sure that the SD card is inserted correctly and that the boot switch configuration is set for SD card. I tried ping and ssh commands with the IP address but no connection is visible.Is there a way to fix this problem? Any help would be appreciated.
Hello,I try to connect a popular Arduino board PCM5102a with my board which is base on STM32MP135.I read some documentation from the linkhttps://wiki.st.com/stm32mpu/wiki/ALSA_overviewhttps://wiki.st.com/stm32mpu/wiki/Soundcard_configurationhttps://wiki.st.com/stm32mpu/wiki/SAI_device_tree_configurationhttps://wiki.st.com/stm32mpu/wiki/SAI_Linux_driverbut pcm, i2s and sound topics are something I have only a base knowledge of, so please give some advice and hints.My dts looks like / { sound { compatible = "audio-graph-card"; label = "STM32MP1-audio-test-card"; routing = "Playback" , "MCLK", "Capture" , "MCLK", "MICL" , "Mic Bias"; dais = <&i2s1_port>; status = "okay"; }; codec: pcm5102a-codec { compatible = "ti,pcm5102a"; #sound-dai-cells = <0>; clocks = <&i2s1>; /* The codec is a consumer of I2S2 master clock */ clock-names = "MCLK"; /* Feed MCLK codec clock with I2S2 master clock provider */ codec_port: port { codec_endpoint:
Hi,what's the state of the S24_LE format support on the STM32MP1 line of boards? It seems that S16_LE and S32_LE formats are supported on the I2S dai, however S24_LE is rather unavailable. Is there a way to somehow enable it (maybe through Cube MX) or is it completely unsupported?When running alsa speaker-test utility with hardware devices (not default) the S24_LE format is being rejected.Thanks!
Try to conduct the DDR test to my STM32MP135 customized board, following the instruction in the DDR test util:https://github.com/STMicroelectronics/STM32DDRFW-UTILwhile after successfully download the test binary file, the test code didn't start, I am using serial only for this test (not usb + uart), seems the parameter –-start 0x01 not accepted, anyone has an idea of what is going on with it?following is the full log:xx@ubuntu:~/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin$ ./STM32_Programmer_CLI -c port=ttyUSB0 -w STM32MP135C-DK_DDR_UTILITIES_A7_signed.stm32 0x01 –-start 0x01-------------------------------------------------------------------STM32CubeProgrammer v2.14.0-------------------------------------------------------------------Serial Port ttyUSB0 is successfully opened.Port configuration: parity = even, baudrate = 115200, data-bit = 8,stop-bit = 1.0, flow-control = offActivating device: OKBoard : --Chip ID: 0x501BootLoader protocol version:
Hey,I am designing a board based on the STM32MP157F using the OSD32MP157F SOM as a base. I want to have a usb-c connector acting as a host and/or as hs_otg. Reviewing the DK boards schematics I see that the STUSB1600 is being used. I also see on the dts that STUSB1600 is used in conjuction with I2C4. I was wondering whether I can use an alternative like the TPS25820 or other USB-C source controller and if there are any recommendations on this manner, preferably with a compatible or easily portable kernel module.Any ideas or suggestions are highly appreciated.
Could someone point me to some documentation about how to control the oversampling for ADC1 and ADC2 for the STM32MP157C? Using OpenSTLinux 4.1.0, buildroot. I looked around but couldn't find anything. Thanks!
Hello, I have a board based on the stm32mp153a and I'm trying to get it to boot, unfortunately I can only access USART 6 while it seems that uboot only tries to interact using uart4.In my dbs file I have overridden usart6/status to be "okay" instead of disabled and have set stdout-path in /chosen (though I believe that would only impact the kernel)However this is not working and I think I am missing something, does anyone know how to change the port used for output by uboot?Thank you for your help
Hi,I'm working on creating a simple soundcard with a simple codec called pcm5102a which is a part of the kernel source. My board is the STM32MP135F-DK. I2S seems to be enough for this purpose however if you think that SAI will work better, then I'll take advice on that happily as well.The current configuration is as in the attached audio_test.zip with I2S1 enabled and SPI1 Clock Mux set to PLL3Q instead of the default PLL4P (all set in the STM32CubeMX). The configuration is inserted into the build with a new machine and it does build without any problems. It's only after the boot that aplay -l doesn't list any soundcards, moreover below message is visible in the dmesg output: [ 3.600504] st,stm32-i2s 44004000.audio-controller: Could not get x8k parent clock: -2 [ 3.607136] st,stm32-i2s: probe of 44004000.audio-controller failed with error -2 I read that the x8k is one of the clocks necessary for audio handling, however can't figure out how to fix that.Below are th
Hi there,in order to have an externally generated clock for our LTDC peripheral we decided to use the I2S_CKIN as the reference clock for PLL4 on our customized STM32MP157CAC board. Reference manual and STM32CubeMX are showing that this opportunity exist. But currently the TF-A is crashing with a panic when we change the PLL4 clock source to I2S_CKIN in the device tree.We are using the following softwares:Yocto dunfell v3.1.7CubeMX: 6.1.1TF-A: 2.2Linux: 5.4.56U-Boot: 2020.01What we have done so far is the adaption of the TF-A device tree. We entered a definition of the desired input pin:&pinctrl {rcc_pins_mx: rcc_mx-0 {pins {pinmux = <STM32_PINMUX('I', 11, AF5)>; /* I2S_CKIN */bias-disable;drive-push-pull;slew-rate = <0>;};};};Then we changed the RCC node to have the I2SCKIN clksrc configured for PLL4:&rcc {st,clksrc=<CLK_MPU_PLL1PCLK_AXI_PLL2PCLK_MCU_PLL3PCLK_PLL12_HSECLK_PLL3_HSECLK_PLL4_I2SCKINCLK_RTC_LSECLK_MCO1_DISABLEDCLK_MCO2_DISABLED>;st,clkdiv = <1
Hi,I have a problem with the configuration of PA10 of stm32mp135 to work as pwm of TIM1_CH3. I also make an experiment to disable completely timer and PWM and I also can't control this pin using gpioset. In the documentation I saw that this pin is dedicated to USB "...OTG_HS_ID is on PA10 (EXTI10)". My question is simple how to disconnect PA10 from USB completely? CubeMx doesn't do that.
Hello everyone! I'm using the STM32MP157F-DK2 and the OpenSTlinux Distribution package with a set of Yocto recipes that do not affect the Linux kernel. I have written a program for the Cortex-M4 core and created a device tree in CubeMX. Then, I built my OpenSTlinux distribution based on my device tree from CubeMX (based on guide "How to compile the device tree with the Distribution Package"). Initially, everything works fine, and I have a fully functional Linux distribution and a working program for the Cortex-M4. However, if I want to stop the execution of the Cortex-M4 firmware and try to run it again, nothing happens. It's as if I'm running a firmware that does nothing. Only reboot helps. In my program, I use UART3, SPI5, several timers, GPIO ports, and OpenTTY Virtual UART for communication between A7 and M4 cores. I suspect the issue might be related to clock configuration, but I haven't found a way to diagnose this problem in more detail yet. I hope someone here can help me.
I'm building libqmi for the STM32MP157 and getting an error at this point in the build GISCAN Qmi-1.0.girTraceback (most recent call last):File "/home/ed/STM32MPU_workspace/STM32MP1-Ecosystem-v4.1.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/usr/bin/g-ir-scanner", line 98, in <module>from giscanner.scannermain import scanner_mainFile "/home/ed/STM32MPU_workspace/STM32MP1-Ecosystem-v4.1.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/usr/lib/gobject-introspection/giscanner/scannermain.py", line 35, in <module>from giscanner.ast import Include, NamespaceFile "/home/ed/STM32MPU_workspace/STM32MP1-Ecosystem-v4.1.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/usr/lib/gobject-introspection/giscanner/ast.py", line 29, in <module>from .sourcescanner import CTYPE_TYPEDEF, CSYMBOL_TYPE_TYPEDEFFile "/home/ed/STM32MPU_workspace/STM32MP1-Ecosystem-v4.1.0/Developer-Package/SDK/sysroots/cor
Hi,I have a slight problem with st-image-weston.bbappend.In my meta-layer in folder /recipes-st/images/ I add an st-image-weston.bbappend to install a few packages I intend to have.And now something is strange, after adding a new package to install into rootfs the packages start to compile but not install on rootfs.Content of my st-image-weston.bbappend FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" inherit populate_sdk_qt5 IMAGE_INSTALL += " \ qtbase-dev \ qtbase-mkspecs \ qtbase-tools \ qtdeclarative-qmlplugins \ qtquickcontrols2-qmlplugins \ qtwayland \ gstreamer1.0 \ gstreamer1.0-plugins-good \ " CORE_IMAGE_EXTRA_INSTALL += " \ net-tools \ openvpn \ systemd-networkd-configuration \ netplan \ networkmanager \ iproute2 \ ppp \ usb-modeswitch \ usbip \ ppp-dialin \ libiio \ packagegroup-st-demo \ sox \ libnfc \ sdcard-raw-tools \ " IMAGE_ROOTFS_MAXSIZE = "950000" Finally, many packages are not installed for instance USB gadget DHCP server, ppp etc.F
Hello,I am working on a project that is using wifi to communicate with the connected device and the latency is critical. We are using the wifi JODY-W263-00B from U-Blox connected by SDIO bus, and for measuring the latency we simply use ping command. The average latency of our setup is around 10 ms. As this project is the third generation of our product we have a comparison with the previous generation that was based on the imx6 chip from NXP, and with it, we were able to reach average latency of around 1.8 ms, but we were using a different wifi module (ELLA-W161). To make this comparable we have made a few measurements using different CPUs, wifi modules, and connection types. Our results are in this spreadsheet. In the name/board column is the name of the device to which was wifi module connected, the WIFI connection column shows how we connected module/evk kit, and columns under Ping [ms] are our measurements. Other columns are self-explanatory as I hope.From measurements, you can see
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.