Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello, I'm working on a project in the TouchGFX Designer environment and when I try to execute the "Run Simulator" command, this error occurs. Run Simulator Generate Done Generate Assets make -f simulator/gcc/Makefile assets -j8 Reading ./application.config Reading ./target.config Done Post Generate touchgfx update_project --project-file=simulator/msvs/Application.vcxproj Done Post Generate Target touchgfx update_project .cproject file: ../../STM32CubeIDE/CM7/.cproject Writing STM32CubeIDE project file: ../../STM32CubeIDE/CM7/.project Writing STM32CubeIDE project file: ../../STM32CubeIDE/CM7/.cproject Done Compile make -f simulator/gcc/Makefile -j8 Reading ./application.config Reading ./target.config Linking build/bin/simulator.exe C:/TouchGFX/4.25.0/env/MinGW/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lSDL2 C:/TouchGFX/4.25.0/env/MinGW/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lSDL2_imag
Hi!I have a board with a STM32H730 chip, my RAM is configured as not cacheable and instruction access disabled,as performance decreases a lot otherwise, but now i'm getting a hardfault after drawCachedAreas(); is executed,As i can't see what that function is doing, i thought that mayb someone could help me. If someone is invested enough here is my MPU configvoid MPU_Config(void) { MPU_Region_InitTypeDef MPU_InitStruct; /* 1) Deshabilita el MPU para reconfigurar */ HAL_MPU_Disable(); /* ———————————————————————————————————————————————————— * Región 0: fondo 4 GB NO_ACCESS (cubre todo excepto QSPI, SDRAM y SRAM) *———————————————————————————————————————————————————*/ MPU_InitStruct = (MPU_Region_InitTypeDef){0}; MPU_InitStruct.Enable = MPU_REGION_ENABLE; MPU_InitStruct.Number = MPU_REGION_NUMBER0; MPU_InitStruct.BaseAddress = 0x00000000U; MPU_InitStruct.Size = MPU_REGION_SIZE_4GB; MPU_InitStruct.SubRegionDisable = 0x87; // deja libres subregs 2 y 3
Hi The FrontendHeap is very small and i have "unused" external flash.So my intension was to increase the .bss secction in linkerscript with a memory block in the linker file,which causes a hard fault.I'm new in ARM linker file and have no clue about linking more than one memory block to one secction, especally the bss secction.I'm not sure, which way i have to take in the linker file, so i try the following (short form) which based on aarticle. im not sure about the pattern bss# and the start and end flags.Pleas see the extract from linker file, which caused the error by linking in STM32 IDE.I'm thankful for every hint, how to make the bss secction larger by a additional memory block.
Hi,I had 8-Gigabyte External EMMC Memory to store the images in my custom Board, as my internal flash for the STM32H745XiH6 microcontroller is only 2MB. How to store the images in the external flash (EMMC)? Should I need to change the linker scripts and .map files in the project? If it is, can you please explain it clearly?
I started out by using the stock 4.3" display on the STM32H735G-DK Discovery Kit and with TouchGFX I was able to get a nice example project running. Now I am attempting to interface a 7" 800x480 LCD panel with the kit. This panel uses the EK9713CA driver IC. The datasheet for the panel lists these timing characteristics: Can some one please help me understand how to enter these into the LTDC configuration page on STM32CubeMX? I've attempted to figure this out several different ways and I just keep getting a blank screen and the code just hangs during execution. I suspect the issue is in the how I am entering these timings.
I've been able to successfully use Bitmap::dynamicBitmapCreateExternal() when just loading a bitmap in the frontendappliation and setting up the cache there...FrontendApplication::FrontendApplication(Model& m, FrontendHeap& heap) : FrontendApplicationBase(m, heap) { /* * Initialize dynamic bitmap cache; * bookkeeping memory for external bitmaps not stored in cache */ uint16_t* const cacheStartAddr = (uint16_t*)myBmpCache; const uint32_t cacheSize = sizeof(myBmpCache); Bitmap::setCache(cacheStartAddr, cacheSize, 1); void* srcPtr = logoGetImagePtr(); BitmapId bmpId = Bitmap::dynamicBitmapCreateExternal(LCD_X_Size, LCD_Y_Size, srcPtr, Bitmap::RGB888, 0); oprSetLogoBmpId(bmpId); }I also must be able to load in a different bitmap image is selected by the user and have been able to do this successfully as well by clearing the cache... if (logoImportCustomLogo(&fileLoad.filename[value][0]) == Result_success) { uint8_t* ptr = logoGetImagePtr(); /* * Initializ
Use sthm32h7b0 to push 800*480 TFT screen, using internal ram,using RGB565 color space. Run the test function lv_demo_widgets(), it can work normally under lvgl8.2. fter lvgl was upgraded from version 8.2 to version 9.1, after modifying the corresponding driver file, run the lv_theme_default_init function under the lv_demo_widgets function, and hardfault occurs. ```msh />psr: 0x01000000r00: 0x0000000fr01: 0x08084d7fr02: 0x00000000r03: 0x08084d70r04: 0x240c21a4r05: 0x240c21a0r06: 0x240c219cr07: 0xdeadbeefr08: 0xdeadbeefr09: 0xdeadbeefr10: 0xdeadbeefr11: 0xdeadbeefr12: 0x00000000 lr: 0x08029019 pc: 0x08043636hard fault on thread: LVGLrt_thread_ thread pri status sp stack size max used left tick error---------- -------- --- ------- ---------- ---------- ------ ---------- ---0x240cc338 wav_p 15 suspend 0x000000c4 0x00000800 09% 0x0000000a EINT
Hello everyoneI recently bought an STM32H735G-DK Discovery Kit, which has a 480x272 parallel LCD. I got the TouchGFX Demo projects running on the board, so I know all the hardware is working as it should.Eventually I want to use TouchGFX on a custom board, so I am trying to configure a new project 'from scratch'. I am very new to the STM32 ecosystem, so I thought I would keep things simple and try to display something on the LCD with a framebuffer in the internal RAM.So I started a new project in the STM32CubeIDE, from an existing ioc file (the one from one of the TouchGFX examples). I then disabled OCTOSPI1, OCTOSPI2, FREERTOS, LIBJPEG, TOUCHGFX, CRC, in order to have a project which is as bare bones as possible.Following this guide (https://support.touchgfx.com/docs/development/board-bring-up/how-to/02-cpu-running), i was able to access the internal RAM (with some trial and error, I found I could address bytes 0x08000000to 0x08100000.I then continued to this guide (https://support.to
Hi, I am trying to create an external dynamic bitmap to display an image already loaded into Memory Mapped External Flash. uint16_t FrontendApplication::getLogoBitmapId() { if (bitmapId == touchgfx::BITMAP_INVALID) { bitmapId = Bitmap::dynamicBitmapCreateExternal(185, 43,(void const*)0x90FC0000, Bitmap::RGB565); } return bitmapId; } void LandingView::setupScreen() { LandingViewBase::setupScreen(); auto app = static_cast<FrontendApplication*>(Application::getInstance()); uint16_t bmpId = app->getLogoBitmapId(); logo.setBitmap(Bitmap(bmpId)); add(logo); logo.invalidate(); } I keep getting the bitmapId as BITMAP_INVALID. I've tried the external bitmap function with L8 as well.
Hello,I download an example GUI from Touchgfx designer, generate code and run on my STM32H735G-DK board, it works well.Then I open the .ioc of this project and generated code with EWARM, open it and build, it has no errors.When I download it to board, the progress seems stuck and report error several minutes later. Touchgfx version: 4.25.0IAR version: 9.40.1
For STM32H743IIT6, the external font library used in TouchGFX is stored in a USB flash drive. After power - on, it is loaded into SDRAM. When displaying text, some fonts appear garbled. The font library I added covers Unicode range from 0x4e00 to 0x4e63, with a size of 100. I generated a bin file through TouchGFX. The first 100 bytes printed after the bin file is loaded into SDRAM are shown in Figure 2, and the content of the bin file opened with a hex editor is shown in Figure 3. During code testing, among the four characters "上 (shàng), 下 (xià), 不 (bù), 与 (yǔ)", only "下" can be displayed correctly, while the other three appear garbled (like a red square. I'm sorry that it's really hard to capture a clear picture on the OLED screen). Among the four characters "一 (yī), 丁 (dīng), 丂 (kǎo), 七 (qī)", only "七" is garbled. I really can't figure out where the problem lies. In addition, previously when this board used LVGL, an external font library was also ported, but there was no such phenom
Hi!I'm developing an application in the simulator, I'm stuck on one bug with the scrollWheel. I have done these two scrollWheel that i update on their respective callbacks like this:void Display_Stages::m_scroll_pressureUpdateItem (Item_To_Select &item, int16_t itemIndex) { item.Update_Text (itemIndex); } void Display_Stages::m_scroll_pressureUpdateCenterItem (Selected_Item &item, int16_t itemIndex) { item.Update_Text (itemIndex); } void Display_Stages::m_scroll_timeUpdateItem (Item_To_Select &item, int16_t itemIndex) { item.Update_Text (itemIndex); } void Display_Stages::m_scroll_timeUpdateCenterItem (Selected_Item &item, int16_t itemIndex) { item.Update_Text (itemIndex); } The problem is that when i make the widgets visible i do scroll.animateToItem (value) so that it can go where the value we want to modify is, and this works fine, but when its a new value and the m_scroll_pressure.animateToItem (value) value = 0, as it is the same va
Hello,I am attempting to use an STM32H735G-DK development kit to drive an LCD and eventually use TouchGFX to build a menu for a proof of concept I'm working on. I was able to very quickly get a working screen using TouchGFX example board setup for this development kit but I want to use a larger LCD in the future with a custom PCB and I've never brought up an LCD panel before so I am following the bring up guide at https://support.touchgfx.com/docs/development/board-bring-up/board-introduction to make sure I understand all the settings and the process for bringing up the board. Steps 1 and 2 in the guide go well but step 3 is where it stops working properly where it wants you to set up a frame buffer in internal memory and point the LTDC at this location for what you put there to be displayed. I am able to get the background color of the entire screen to change and I can see a black box in the upper left corner where I create a small window the size of my framebuf
I have spent several weeks trying to add an external loader for a TouchGFX application that is starting to get quite large (>2MB). I have a custom board with STM32H7A3 and am using OCTOSPI interface (in quad mode) to a W25Q128. I found a custom loader project Here that I've slightly modified to work with the MCU. The resulting .stldr loader file works with STM32CubeProgrammer to read write and mass/sector erase the external memory at 0x90000000. Flashing the test project doesn't seem to work (based on UART debug output)A simple demo project in CubeIDE branches to MemManage_Handler fault immediately when trying to memcmp() or memcpy() from 0x90000000 after calling HAL_OSPI_MemoryMapped().Breakpoint in STM32CubeIDE shows that after the HAL_OSPI_MemoryMapped function is called, the data in external flash can be viewed in the Memory Monitor tab. Everything looks good.It seems that the loader is good and the MemoryMapped function is working, so I'm not quite sure what to do at
I am trying put a ScrollWheelWithStyle inside a ScrollContainer.Currently I can't find a method to pass down dragEvents from the Container to the Wheel.I tried disabling the scrolling for the Container.This cause the areas to initiate the draggable to be within the Wheel but the event is still handled by the Container.I also tried to change the code found in "...\touchgfx\framework\include\touchgfx\containers\ScrollableContainer.hpp", that cause the application to crash in both Simulators.Does anyone have recommendation on how to have nested Scrollables?
Hi again, (posting twice today)I am looking at the performance of my STM32H747 system to better understand it. I didn't think there were any problems because I am not visually seeing any artifacts, but I always like to check. As it turns out, my system's rendering times are abysmal.I have many different screens in my application, and for this test the system cycles from one to another every 3 seconds. I used the Performance Measurement pins to measure VSYNC_FREQ, RENDER_TIME, FRAME_RATE, and MCU_ACTIVE. VSYNC looks healthy, measured at 62,352HZ (set to ~62,4Hz).The MCU appears to be barely active - there are 10ns or less blips occurring frequently.Frame rate is a consistent 3 seconds (I don't know if that's normal).But the rendering time is abysmal! The screens are 480x320 and some take hundreds of milliseconds to render when switching screens.This is the system as it's switching screens:This is system when there are no updates to render:The simplest screen takes 25ms to render an
Hi all,I have a screen with an RGB interface (Focus LCD E35KA-FW1000-N) that's being driven by an STM32H747 with the framebuffer in external RAM (over FMC). I'm presently using a double framebuffer strategy, but this same behaviour occurs when I used single.After flashing new FW, the screen flickers quite badly, and then over a few minutes it settles down and I have a beautiful screen with immediate transitions and no flickering. While it's flickering, you'll see the previous image it was displaying in the background. I'm not too worried about this, it disappears once the flicker is gone.What could be causing this? I can't share the project (under NDA), but I'll gladly answer any relevant questions that can help someone help me solve this. Thanks in advance,Julia
Hello All,I am using touchGFX v4.22.1, is it possible to exclude languages when generating a build?I have 6-7 different languages but i am close to my flash limit when building in STM32CubeIDE.I'd like to create multiple builds with different languages by excluding certain languages in touchGFX.The only way i can see to do this currently is to remove the language entirely which would mean losing the translations.I would like to just not include the language but retain the translations if possible.
Hello.I developed a Screen with touchgfx with a ModalWindow with button and BoxWithBorder I add interaction on this button that calls virtual function. When I press the button the processor goes to HardFault. Can some one help me ?
Background - TouchGFX based HMI application where I want to display JPEGs I am streaming.I have setup the bitmap cache for TouchGFX and can confirm it works as expected with raw RGB565/888 bitmaps.I am trying to integrate the JPEG codec to stream JPEG data instead of the raw bitmaps, to reduce latency.DMA2D is *not* configured to be used by TouchGFX, so that I can use it to convert the output of the JPEG codec to RGB565 format to store in my bitmap cache, that touchGFX draws. Additionally, I have configured my IOC not to generate the DMA2D init function call.For JPEG codec and DMA2D code, I have referred to the H7 example project (JPEG_DecodeFromFlashDMA) provided by ST.When I test with few sample JPEGs, it works as expected and displays accurately, but does not for other samples.It seems to work with CSS 4:2:0 images only, and not with CSS 4:4:4 or 4:2:2 images - It seems to be the JPEG decode works as expected, and the DMA2D transformation(?) is what is causing issues.I have attached
Hi,Why isn't handleKeyEvent() called in touchghx simulator when I press the backspace or the enter keys of my keyboard?Also, it's a bit sad that it only works with ascii char, so I just can't send a 'é' or a 'è' char for instance… Could it be improved in the next version of touchgfx plz?Thanks in advance.
I want to make a project using h7r7 and enable touchgfx,In CUBEIDE,I chose both boot project and application project,but I can not check touchgfx for application project,and it is forcely checked for boot project,can't be changed.Any one knows this problem?is it a bug ?So,clearly the touchgfx files is generated under Boot Project.I tried in cubemx,but the same result.
I am using an STM32H7-based 7.0" Riverdi display board. I supplied 12V power to the board and connected the SWD pins to my external debugger.When I first powered the board, the pre-installed demo application on the screen ran correctly.After that, I created a GUI project using TouchGFX and selected the STM32H7-70STM board as the template. I compiled and flashed the code, and TouchGFX reported that the upload was successful.However, after flashing, the screen remains completely black and does not respond.I tested other GUI projects — even very simple ones with just a button — but the screen still does not display anything.I would appreciate help identifying the cause of the issue.
I have a custom board using u599 and touchgfx, my LCD size is 640*480.I noticed there is a "nemagfx_stencil_buffer_mem" in my RAM,It takes 305K memory,It's really a lot memory ,because I only have 30K left.But on the other board,lcd size is 480*480,"nemagfx_stencil_buffer_mem" is not there.I wonder what use is this buffer,and why it came out.
Hello, how is everyone doing ? I am making this post because I just received a Riverdi STM32 Embedded display for my last ever studying project, as I will use it to replace 7-seg, buttons and keybord. I made a simple connection for the power supply (I soldered two wires on the connector, to avoid cutting the given cable, as I want to use it later in the final version of my project. My problem is that when I turn on the power, the screen switches on but only displays a black screen at maximum brightness. I tried reseting the device with the back button, and also created a simple TouchGFX project to display a png image and the memory flash of the microcontroller with ST-Link v2 works fine but once the flash is done, the screen goes back to the very bright black screen state. I have made some research but have not found anything interesting, so I make this post hoping that someone already had this issue or has a solution. In the meantime I have also contacted Riverdi, but I want
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.