Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I'm working on an application that requires user interaction to edit text and number fields using a alphanumeric keyboard, and also to make "menu" selections using the TGFX ScrollWheel.I've designed data display and entry screens with objects that comprise labels and text fields which, when touched, make visible a popup window containing the editor (keyboard, or scrollwheel). In this manner, a single scrollwheel can be used to set values in different fields.As part of the design, I wanted the background of the popup window to be partially transparent (alpha of 150) so that the background screen is visible underneath the popup, such as in this image of a popup window for scrollwheel selections:Normally, one would use a TGFX ModalWindow for this purpose as it is designed to do basically the same thing. However, the ModalWindow has a requirement that is impossible to fulfill in our project: the foreground content of a ModalWindow must be placed on top of an image, and any spillover become
1. There is a description of Color Keying in 16p of the document Link, and I want to know how to use it. I couldn't find anything in CubeMX's LTDC Tab that could set up for that register.2. Also, is there a way to know the LTDC sync method in 7p of the same document in detail? I'm testing with STM32H747-DISCO with a resolution of 800×480.Things I'm using:STM32CubeIDE 1.8.0STM32CubeMX in CubeIDETouchGFX Designer 4.18.1STM32H747-DISCO
Hi all,I need to know if TouchGFX in binary from could be use in commercial product. The official site (https://www.touchgfx.com/get-touchgfx/) says:"It is a free tool for production and redistribution on STM32 microcontrollers"so, i think i can use it in commercial product without charge.Thanks in advance for support.
I am currently trying to display color properly on an RGB panel with parallel interface. However, colors are not displaying properly and I currently do not know what else to troubleshoot. I am using STM32F769I eval board connected to the RGB panel.I have initialized the 8MB SDRAM where I am allocating one single frame buffer 800x480*3 forTouchGFX. I have verified that I am able to read and write correctly to the SDRAM.However, when I set:LTCD/Display Type to RGB888Frame buffers to RGB888White vertical lines appear on the panel and the SDRAM memory seems to have incorreclty placed 0xFF values.If I change the configuration to:LTCD/Display Type to RGB565Frame buffers to RGB565The result is that the LTCD panel has no noise but colors are incorrect. The SDRAM memory correctly stores the frame buffer colors but the color displayed is not correct. In touchGFX I define a grey color with values 0xAAAAAA which is correctly translated into RGB565 0x55AD but is displayed as purple (green component
Hi!I am using is resistive touch panel which is handled by XPT2046 (TSC2046), Touch controller controlled by SPI. I added xpt2046 library to my file. I configured SPI_HandleTypeDef to mine. And I added code as you see below. What else do I need to detect touches on my boardbool STM32TouchController::sampleTouch(int32_t& x, int32_t& y) { if (XPT2046_TouchPressed()) { XPT2046_TouchGetCoordinates((uint16_t*) &x, (uint16_t*) &y); return true; } return false; }
i do not want to "presenter -> changeWPM(itemIndex);" when spinning but after spinning have ended ...Please help or point me to the solutionclass Screen1View : public Screen1ViewBase{public: Screen1View(); virtual ~Screen1View() {} virtual void setupScreen(); virtual void tearDownScreen(); virtual void handleTickEvent(); virtual void updateAsciiInView(char* CwChar); virtual void updateRealWpmInView(int RealWpmValue); virtual void SetLineProgress(int* value); virtual void scrollWheel1UpdateItem(wpmWheel& item, int16_t itemIndex) { item.setNumber(itemIndex); } virtual void scrollWheel1UpdateCenterItem(wpmWheel_Selected& item, int16_t itemIndex) { item.setNumber(itemIndex); #ifndef SIMULATOR presenter -> changeWPM(itemIndex); #endif }Best regardsHjalmar
I am using below development toolsMCU: STM32H7B3IIT6IDE: STM32CubeIDE Version: 1.8.0GUI: TouchGFX Version: 4.18.1SDRAM: IS45S16800F-7CTLA1-TRWhen activeted SDRAM, touch part dont work and screen is frezee, FMC settings are as follows./* FMC initialization function */ static void MX_FMC_Init(void) { /* USER CODE BEGIN FMC_Init 0 */ /* USER CODE END FMC_Init 0 */ FMC_SDRAM_TimingTypeDef SdramTiming = {0}; /* USER CODE BEGIN FMC_Init 1 */ /* USER CODE END FMC_Init 1 */ /** Perform the SDRAM2 memory initialization sequence */ hsdram2.Instance = FMC_SDRAM_DEVICE; /* hsdram2.Init */ hsdram2.Init.SDBank = FMC_SDRAM_BANK2; hsdram2.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_9; hsdram2.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; hsdram2.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; hsdram2.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; hsdram2.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_2; hsdram2.Init.WriteProtection
I have a MainView that has a member Swipe containter. class MainViewBase : public touchgfx::View<MainPresenter> { public: MainViewBase(); virtual ~MainViewBase() {} virtual void setupScreen(); protected: FrontendApplication& application() { return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance()); } /* * Member Declarations */ touchgfx::SwipeContainer swipeContainer;Every swipeContainer has a virtual method handleDragEventclass SwipeContainer : public Container { public: SwipeContainer(); virtual ~SwipeContainer(); virtual void handleTickEvent(); virtual void handleClickEvent(const ClickEvent& event); virtual void handleDragEvent(const DragEvent& event); virtual void handleGestureEvent(const GestureEvent& event);I would like to implement a slideMenu expansion when swipe cointainer detects drag in Y direction. Where can I overide handleDragEvent of this swipeContainer and redefine what I want?
Hello,I have a project with custom stm32f769 oard and TouchGFX as GUI. I've done a lot of testing on simpler GUI (showing background and one button).I've also prepared additional task that will do communication with other boards.Everything seems to be working normal. I've chosen same Normal prioritiy also for this additional task.Now I have imported more complex GUI i(approx. 26MB in external flash) nto the project by using TouchGFX Designer (opened existing, imported new one and generated code & recbuilt whole project) and now I get Hard Fault error.Although not experienced debugger, I've single stepped problematic part and it seems that the first non-GUI task is started and then when it switches to another task, hardfault happens. By using HardFault analyzer in my CubeIDE, PC points to this line in code :const uint8_t* GeneratedFont::getPixelData(const GlyphNode* glyph) const { const uint8_t* const* table = (const uint8_t* const*)glyphData; return &(table[glyph->unicode
Hi,Why isn't there a function setDraggable() in the Drawable class, the same way there is a setTouchable() function ? (as of now, the setTouchable() serves too to prevent the dragEvents to be received by a given widget)I'm asking because many times, I'd like my widgets to receive clickEvents but not dragEvents (that must be received by their parent containers). Is there any reason for the lack of such a function?Thanks.
I am using the STM32H745I-DISCO board, Unable to load the video widget with Touchgfx designer 4.18.1, But I am using STM32H750B-DK instead of 745IDISCO its working fine.Regards,naren
I want to set it to LTDC and use the color keying function in STM32H7, but I had no choice but to use it custom mode.When I made the project with TGFX, it was custom setting.The strange thing is that the pixel width and height of LTDC and TGFX are different, but they work normally.However, if the pixel width of the LTDC is changed to 800 in the attached custom mode image, the LCD display is broken and output.I use LCD and STM32H747-DISCO with 800*480 resolution.Please tell me how to set up LTDC Sync.referred document :LTDC chapter in datasheetInformationApp noteps. If anyone knows, I would appreciate it if you could let me know the code, CubeMX, or TGFX settings for color keying.
..
I've adopted the Dynamic Graph widget on my application but when I change the screen from Graph screen to another screen, the data point of the Dynamic Graph widget will free all the data points due to the MVP of TouchGFX will release all resource on the presenter and view objects when changing the screen to another screen.Now, I store the Graph data points in the Model, and when the screen has transited to the Graph screen, I will copy all data points in the Model to Dynamic Graph widget by using addDataPoint() function but the execution time when copying data from Model to the Dynamic Graph widget has consumed too high (I want to avoid this). In practically, how can I make the data points statically or making a pointer to point to static data points when changing the screen?
Here is a screenshot of the error I am getting at launch, when I click ok the screen gets frozen and nothing happens.
Assume I have a scrollable container widget containing several radio buttons. There are many radio buttons that user has to scroll down to see the last radio button. But assume in application where user need to go to the last chosen radio button that is on bottom, how to automatically scroll down so that it is directly visible to user instead of asking user to scrolldown by himself?
I am currently working on a project that will ultimately involve switching out the native display on the STM32H747I-DISCO with a new one (MDT0500AISC-MIPI). This new display utilizes a MIPI-DSI interface, but unlike the native display, does not have any onboard GRAM. Before switching to the new display, I want to get the native display to run in DSI-video mode in order to prove the STM32H747I-DISCO can drive displays without leveraging on-display GRAM. I have tried to follow every bit of information between datasheets, ST guides, and forum posts that I can, but every attempt has resulted in the display remaining blank.I am hopeful that someone here has worked through something similar and can help.Steps I have taken so far:Generate project in TouchGFX with a single screen displaying an image (this defaults to using DSI adapted command mode with TE pin)Build and load project onto STM32H747I-DISCO (using CubeIDE) to verify that it works and displays the generated screenOpen the project i
I added analogClock widget but I didnt write code with analogClock widget I didnt actived it. touch part wasnt work. Why didnt touch part work?
Hi,I have problem with animations using touchgfx on STM32f429Do you know what could be the issue? https://youtu.be/1T9_9cQWMvoThanks for help :)
Hi, I have a custom board with STM32H7A3 using FMC, LLTC and other modules. I started to develop the firmware to change some images in a display. I made one project on TouchGFX with multiple images and fonts. I verify the BitmapDatabase.cpp and the all images files generated. For each image file generated for example:LOCATION_PRAGMA("ExtFlashSection") KEEP extern const unsigned char image_attention_all[] LOCATION_ATTRIBUTE("ExtFlashSection") = { // 223x265 RGB888 pixels. 0x0b, 0xba, 0xf7, 0x0b, 0xba, 0xf7, 0x0b, 0xba, 0xf7, 0x0b, 0xba, 0xf7, ... ...}In my application.ld file I put that configurations that I view on https://support.touchgfx.com/4.18/docs/development/scenarios/using-non-memory-mapped-flash /* Specify the memory areas */ MEMORY { DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K RAM (xrw) : ORIGIN = 0x24000000, LENGTH = 1024K ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K FLASH1 (rx) : ORIGIN = 0x8000000, LENGTH = 512K FLASH2 (rx) : ORIGIN = 0x8100000, LENGTH = 512K
EDIT: (normal text: fixed/sorted out(see the new program code in the end) | in bold - still needing help)Hi, guys! So, I just got this board yesterday and I am having some trouble.First, the LCD doesn't go on! I plug the power supply, LD9 goes on, plugging the micro A to the computer using the STLINK USB Port, I get red at the LD12 and that's all;I was following a tutorial on Udemy on how to blink a LED, but although the LED goes on, it doesn't blink; I even downloaded CubeProg and did those resets to see if 'd help, but it didn't;Another thing is: How can I completely 'turn off' CM4, so that it doesn't appear on CubeIDE, doesn't generate errors and so on?I tried to disable it using OB, but still. Every time I create an STM32 Project on the IDE it is there on the project tree, and I'd have to setting everything up for it as well.The code I am trying is: #include "stm32h757xx.h" #define GPIOKEN (1U<<10) //page 492 #define PIN6 (1U << 5) #define LED_PIN (P
Because I am working on a project without external Flash, it is critical that use of images be highly restricted because of the impact on internal Flash usage. We'd like to use TGFX sliders, but it seems that the minimum footprint is about 30kB, an unacceptable amount.I'm therefore attempting to create various widgets using basic geometric shapes, in this case a box with border and a line widget, both contained within a simple container.I've created a class LineD as a subclass of Line in order to be able to override Line's "handleDragEvent" virtual function. In my override, I want to constrain the movement of the line to the horizontal, and limit its range to the container in which it resides. This is pretty kludgey, but I've managed to do so (have to adjust both the line widget's coordinates to keep it in place, plus the coordinates of the actual line inside the widget). The problem is that, when handleDragEvent() is invoked, the line widget has already been dragged to a new position,
Hello,I just received a STM32F412G-DISCO board, which is supplied with a functionnal firmware (STemWin demo).And as I wanna to start a project based on this firmware I tried to compile/run the project located in STM32Cube_FW_F4_V1.26.2\Projects\STM32F412G-Discovery\Demonstrations\STemWin\.However, the firmware crashes (NULL pointer) due to the fact that the touchscreen initialisation has failed. The root cause beeing an I2C ADDR timeout in the TS_IO_Read() function (called by ft6x06_ReadID()).After reading documentation I found out in the User Manual (UM2032 - Board known limitations) the following statement for the new rev board (D-04): "No demonstration software is provided from this revision.".It seems that the major change for this revision is a new display, with impact on the firmware, and that the STemWin project has not been updated in the SDK.However, as I said, this board had a fully functionnal firmware.So, could you please tell me where we can find the source code of this ne
Helloare there any plans for supporting a specific TouchGFX version for many years like a LTS version?Best regard.
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.