Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello,I need an SPI Driver for ILI9341. I want to use it with STemWin. Could someone please share the source code if there is any?Best Regards
Posted on July 21, 2017 at 16:28Hi, I'd like to know what are the possible reasons to the processor get stucked inside the GUI_Exec function?The LCD start to show some some drawings but than suddenly, the SPI activity stops and even the SysTick_Handler stops to be called. The processor keep on running into an infinity loop, passing througth some STemWin functions that can only be seen by the disassembly window, once the library is in binary code.Once it h?s started to draw the buttons, I guess that this is not a hardware problem, but I'll acept any suggestion.#stemwin-ili9341 #gui_exec #stemwin-ili9341-spi #stemwin
When I powered this board, I immediately noticed the display was burnt or had some sort of after image on it. Or maybe it is something else. My reseller has not been responsive.Is there any way I can fix this display myself?
Hello,my STM32F103C8T6 is being used for driving LCD display (ST7789, SPI2). Images are stored in the external FLASH memory (GD25Q16C, SPI1).I am looking for an efficient way to transfer images from external FLASH to the LCD. In order to read data from the FLASH, I have to send start address, and then keep sending dummy bytes (so the chip increments address before sending new byte). So far, I have managed to do the following procedure:-tell LCD, that incoming bytes will be pixel colors,-send start address to the External Flash chip-send dummy byte, receive corresponding pixel color, send it to the LCD. Repeat 115200 times (1PAGE = 240x240x2bytes)**LCD displays image**I would like to improve this process, for example by using DMA in following way:-tell LCD, that incoming bytes will be pixel colors,-send start address to the External Flash chip-enable SPI1 (flash) DMA transmit channel: send dummy byte 115200 times,-enable SPI1 (flash) receive channel: receive data and put it into SPI2 (l
Posted on May 02, 2018 at 18:28We've been using STemWin with an LCD controller ILI9328, connected via SPI. We relied, then, on the resources from the STM32373-c eval board (ili9328.c, LCDConf_stm32373c_eval.c, etc.) and everything is working fine.Now, we should move to a newer controller (ILI9488), which is listed among the supported devices for the GUIDRV_FlexColor STemWin driver in the documentation.I do not find how to configure the support for the new controller: should we write a new driver, porting the support for ILI9328, according to the controller datasheet? Or can we find the sources for supporting the ILI9488 device?Thanks#stemwin #ili9488
Posted on March 30, 2018 at 17:29Hello everyone,I�m develop an application on a STM32F469 Discovery Board with StemWin Graphics on Keil MDK uVision 5.24.The first tests worked well, but i get problems when i change to the CubeMX front end.It's impossible to change widget content if GUI_Delays in the process are.I will describe the develop steps at a very simple test program:Step 1 on CubeMX 4.25 New ProjectChoose Board: STM32F469 DiscoveryAll Default Settings: YesNo Pin ClearPINOUT Disable FreeRTOS (otherwise i get errors. STemWin should work as single task. ) Graphics /Stemwin: enableCONFIGURATION Graphics: Enable GUI Builder Execute GUI Builder, and make a Frame with 2 EditText WidgetsGenerate Code: Keil MDK 5Step 2 on Keil MDK uVision 5.24 BuildRun is OK � GUI is on the DisplayStep 3 on Keil MDK uVision 5.24 Modify GUI Source �FramewinDLG�; Source Code is below. RunGUI is on the Display but no changes in
Hello, I test stm32 with the board STM32F746G-DISCO.I test the library STemWIn for touch screen. I have create a first dialog (with GUI_CreateDialogBox() ) with a button to launch a second dialog with : GUI_CreateDialogBox() method. But when the second dialog is displayed i can't click on any button. It's seem that the touch screen don't react.In the main code i have the code :CreateADCWindow(&trigger, &frequency, &gate); while (1) { BSP_TouchUpdate(); GUI_Delay(10); }CreateADCWindow launch the first screen. Perhaps what is missing in my BSP_TouchUpdate() function ?void BSP_TouchUpdate(){ GUI_PID_STATE TS_State; static TS_StateTypeDef prev_state; TS_StateTypeDef ts; uint16_t xDiff, yDiff; BSP_TS_GetState(&ts); if(ts.touchDetected > 0) ts.touchDetected = 1; TS_State.Pressed = ts.touchDetected; xDiff = (prev_state.touchX[0] > ts.touchX[0]) ? (prev_state.touchX[0] - ts.touchX[0]) : (ts.touchX[0] - prev_state.touchX[0]); yDiff = (prev_state
In short, can't get CubeMX to generate a working template project for this board that uses STEmWin. The created project builds fine in SW4STM32, but when run, crashes somewhere inside the STEmWin GUI_Init() function. All I'm trying to achieve is a minimal project to which I can start adding my own code, without having to build on one of the STM32Cube_FW_F4_V1.21.0 examples (which are a pain to work with because it's impossible to extract just one example project and all the necessary files, as most of the files in the project are linked files)I created the project like so: CubeMX > File > New Project > Board selector > 32F469IDISCOVERY > Yes to initialize all peripherals in default mode. Then, enabled STEmWin graphics middleware, with DSI display interface. Checked CRC enabled, checked configuration of LTDC, DSIHOST and DMA2D was consistant with that of the STM32Cube_FW_F4_V1.21.0 firmware examples.Since the STM32Cube_FW_F4_V1.21.0 examples work fine and the templat
Posted on March 09, 2016 at 16:37 Hello, Recently I got the STM32L476 Nucleo-64 board. Now I am trying to interface it with LCD display. To generate code (initialization and so on) I used the STM32CubeMX. LCD Initialization function is written by me (based on what's here: http://web.alfredstate.edu/weimandn/lcd/lcd_initialization/lcd_initialization_index.html) #define Bit_SET GPIO_PIN_SET #define Bit_RESET GPIO_PIN_RESET void LCD_WriteNibble(unsigned char nibbleToWrite) { int delayCnt; HAL_GPIO_WritePin(LCD_Ctrl_Port, LCD_EN_Pin, Bit_RESET); for(delayCnt=0; delayCnt<5000; delayCnt++); HAL_GPIO_WritePin(LCD_Data_Port, LCD_D4_Pin, (nibbleToWrite & (unsigned char)0x01)); HAL_GPIO_WritePin(LCD_Data_Port, LCD_D5_Pin, (nibbleToWrite & (unsigned char)0x02)); HAL_GPIO_WritePin(LCD_Data_Port, LCD_D6_Pin, (nibbleToWrite & (unsigned char)0x04)); HAL_GPIO_WritePin(LCD_Data_Port, LCD_D7_Pin, (nibbleToWrite & (unsigned char)0x08)); HAL_GPIO_WritePin(LC
Posted on July 12, 2018 at 07:02Dear every body,I'm doing project about lcd tft 7inch 800x480 and stm32f746.Currently, i want use external keypad (or external button), not use touch screen pannel.Example: http://hshop.vn/products/ban-phim-ma-tran-mem-4x4 I have 1 button on LCD:// { BUTTON_CreateIndirect, 'Browse', ID_BUTTON_0, 13, 8, 100, 20, 0, 0x0, 0 },(x,y) = (13,8).width = 100.height = 20.=> (x,y) center = (13+100/2 = 63,8+20/2=18).When 1 keypad or button pressed, i checked that ok.How to mapping 1 key pressed to WM_NOTIFICATION_CLICKED event of ID_BUTTON_0 (ID_BUTTON_0 is displayed on LCD)? After that, emwin will do something: show dialog...Can you tell me solutions, please?Thank you so much!#tft-lcd-touch-screen-mapping-by-external-keypad
Posted on July 16, 2018 at 15:56Hello everyone, im new on stm32 programming and have some questions. Is there anyway to use graphic LCD with stm32f103c8t6 series? And how can i learn to programme it? When i have to programme a device with STM32 , then should i read all datasheet of stm32f1 ? It is 1200 pages#graphic-lcd #datasheet #cubemx-stm32f103c8t6
Posted on June 14, 2018 at 09:52Hi, When I write to the FCR register (via HAL_LCD_Init) , the FCRSF is not being set afterwards and so the LCD_WaitForSynchro is failing./* Loop until FCRSF flag is set */while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_FCRSF) == RESET){if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE){hlcd->ErrorCode = HAL_LCD_ERROR_FCRSF;return HAL_TIMEOUT;}}This is code generated for the STM32L152c discovery board by STMCube32. I assume this is to do with domain clock sync, but not sure what the fault is. Many Thanks#fcrst #lcd #fcr
Posted on May 23, 2018 at 03:12 I made a project for CubeMX 4.25 + STemWin with 746Discovery (default config setting from CubeMX). Everythingis well. (Keil 5.25 compiler) I add FREERTOS to project (1 task with default setting) After compiling I have error linking... 746\7axf: Error: L6218E: Undefined symbol OS_TimeMS (referred from stemwin_wrapper.o). Searching for 'OS_TimeMS'... H:\!STM32\!_F0_F1_F2_F3_F4_F7\F7\746_NG\STemWin_Cube_4_25\746_new_win_2layer_free\STemWin\Target\STemwin_wrapper.c(85) : extern volatile GUI_TIMER_TIME OS_TimeMS; H:\!STM32\!_F0_F1_F2_F3_F4_F7\F7\746_NG\STemWin_Cube_4_25\746_new_win_2layer_free\STemWin\Target\STemwin_wrapper.c(876) : OS_TimeMS++; Lines matched: 2 Files matched: 1 Total files searched: 148 A similar situation for F4.. #freertos #cubemx #stemwin Note: this post was migrated and contained many threaded conversations, some content may be missing.
Posted on July 09, 2018 at 02:16Hi there, we are using MDK-ARM to develop an application on our STM32F7 which drives a display, and we would like to present a relatively sophisticated UI, which will included some compile-time static images. We are learning as we go here, and I tried to be clever and created a desktop tool into which we can drop a picture, and it would generate a C function to set a range of RAM to hard-coded pixel data to represent the picture, which I'd call on initialization. When I wanted to show this image I would just direct the LTDC layer to the address this picture was written. This was going well until I got to the first of several 400x400 images, which generated a 160,000 line function and crashed the compiler. So, I'm done being clever and thought I'd ask the pros: what's the Right way to do this? What's the best way to weave a large chunk of binary data to be pre-loaded into a known memory location when your application initializes?(
Posted on July 06, 2018 at 17:43Hello, we are writing a camera driver on our STM32F769, roughly following the sample code. The DCMI peripheral is configured and streams data into its data register (DCMI_DR). A DMA stream (DMA2, Stream 1) is used to transfer the memory from the data register to a reserved area in SDRAM. To take a snapshot, the DMA stream is started with continuous mode off, and to take a stream the DMA stream is started with continuous mode on.This all works fine, the expected data ends up in the destination programmed into my DMA memory address. Two points of confusion though:1) the DMA transfer complete interrupt seems to happen *before* the DCMI frame event interrupt. This is counterintuitive... I would think the DCMI would do it's thing and then notify the DMA to do its thing. Or is the DCMI smart enough to know the DMA is linked to it, and delays its interrupt until the DMA transfer is complete?2) My DMA transfer seems to
Posted on October 10, 2012 at 15:23Hi, I recently started programming microcontrollers STM32F4, I tried an example to control an LCD screen, there are on the net? can you give me directions? #lcd-stm32f4discovery #stm32f4-hd44780 #interface-anything-to-anything
Posted on June 24, 2018 at 12:45HiI am trying to run a LCD/TFT(8bit) display with my NUCLEO-F767ZII use the STM32CubeMX for ConfigurationDisplay Runs an ILI9486 ChipAt the moment i try to read the RegisterID of the DisplayI have try it with arduino and it is working and i get the correct ID.But with my F767 board i get only wrong valuesMY Pin Configuration is:PD14 FSMC_D0 -> LCD_D0PD15 FSMC_D1 -> LCD_D1PD0 FSMC_D2 -> LCD_D2PD1 FSMC_D3 -> LCD_D3PE7 FSMC_D4 -> LCD_D4PE8 FSMC_D5 -> LCD_D5PE9 FSMC_D6 -> LCD_D6PE10 FSMC_D7 -> LCD_D7PC7 FSMC_NE1 -> LCD_CSPD5 FSMC_NWE -> LCD_WRPD4 FSMC_NOE -> LCD_RDPD13 FSMC_A18 -> LCD_RSPD12 -> LCD RST (GPIO output) Manual ResetFMC is Configured as LCD InterfaceChip Select: N1LCD Register: A18Ram Adresse is 0x60000000Data Adress is 0x60040000Has sombody an idee whats wrong?My complete Code in the zip fileas Eclipse project#stm32f7 #fmc #stm32f7-lcd #lcd-interfacing
Posted on June 14, 2018 at 16:32I am debugging my camera application which doesn't render correctly (STM32 F746 discovery board + STM32 F4 DIS-CAM).To find the error, I want to count the number of DCMI Line and Frame interrupts and check if numbers match/make sense.My attemt to do this was adding the _HAL_DCMI_GET_IT_SOURCE() to the DCMI_IRQHanlder() and increasing a counter every time a line or a frame interrupt occurs. I don't understand how this macro works, what does it return?The documentation (I've read it all: DCMI AN5020, HAL UM1905) says that the macro returns ''the state of interrupt'', what does this mean? What is the best and/or the simplest way to count mentined interrupts?#macro #stm32f7-hal-dcmi #dcmi
Posted on June 17, 2018 at 00:55 Hi all, I'm fairly new to STM32 MCU's, but I've become fairly familiar with ARM while developing for the nRF528 I'm using mbed as my RTOS platform and my application requires an LCD screen. I'm currently trying to talk to it with the FSMC peripheral as outlined in AN27 I understand how it works, but I'm having trouble getting everything set up properly... I'm not sure if mbed is possibly messing up the configuration but I don't think that should be an issue. I am developing on the STM32F407G-DISC1 board and using an 8-bit I8080 parallel interface to talk to my display. My main function looks like this: #include 'i8080_8bit_api.h' #include 'stm32f4xx_hal_sram.h' #include 'mbed_debug.h' #include 'mbed_wait_api.h' #include 'drivers/DigitalOut.h' i8080_8bit_t bus; mbed::DigitalOut led(LED1); int main(void) { i8080_8bit_init(&bus); uint32_t* lcd_ptr; lcd_ptr = (uint32_t*)((uint32_t)0x64000000); uint8_t i = 0xF3; *lcd_ptr = i;
Posted on June 11, 2018 at 10:48Hi guys, I'm using STM32CubeMx V4.26 to configure STM32F429 that is connected to TFT LCD. I m trying to get my TFTLCD to work with StemWin using FreeRTOS. My program compile and link smoothly without problem. Running the program in the hardware leads to an MCU stuck in the function : GUI_init()I ve checked some similar issues and it looks to be related to the graphic library and RCC clock.Could any one have guidance for this issue ? are there some sample code ?
Posted on June 12, 2018 at 23:17Hi All,I am having an issue getting the LCD to work on the STM32L152. I'm using STM32CubeMX to initialise the code. I have written the code to update the LCD on the Discovery Dev board. It does work, but only if I run one of the examples (temperature or current) first. Then if I load my code the LCD works just fine. When I re-power the board it fails again until I run one of the examples again. It fails before it gets to my code - while initialising the LCD so I'm assuming there is something else that needs to be set.The code fails/Times-outs in the HAL driver here at the bottom of the HAL_LCD_Init function. I assume the converter cct is not being switched on? If so, what am I missing? Many Thanks /*!< Wait Until the LCD Booster is ready */while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_RDY) == RESET){if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE){ hlcd->ErrorCode = HAL_LCD_ERROR_RDY; return HAL_TIMEOUT;}The initiali
Posted on June 11, 2018 at 11:02Hello!I ordered the https://www.digikey.com/products/en?WT.z_cid=sp_497_0928_buynow&Enterprise=44&lang=en&Vendor=497&mpart=STM32F4DIS-CAM camera module and I am trying to interface it with my STM32 F7 discovery board.While there are plenty of resources about the DCMI interface, I couldn't find anything about the camera module.Where can I find a datasheet or some useful information, rather than general description on the http://www.st.com/en/evaluation-tools/stm32f4dis-ext.html?What is the camera driver model? How to initialize it and what are the possible configurations? Are there any examples provided for the STM32F7 discovery board?#stm32f7-discovery #documentation #camera #dcmi
Posted on June 08, 2018 at 02:24I'm trying to do double buffering using the hardware, STMF32492I.. so first I'm initalizing two layers in two different addresses.Then I write to the back buffer, switch the back buffer..But The problem I get multiple copies of the sprite that is animated, so its either I'm drawing to the front buffer multiple times, or the back buffer needs to be cleared.Here is how I'm doing itvoid main{ while (1) { LTDC_switch_framebuffer(); // draw spries }}void LTDC_switch_framebuffer(void){ LTDC->SRCR = LTDC_SRCR_VBR; // reload shadow registers on vertical blank while ((LTDC->CDSR & LTDC_CDSR_VSYNCS) == 0); // wait for reload ; flip ^= 1; BSP_LCD_SetLayerVisible(flip, ENABLE); BSP_LCD_SelectLayer(1-flip); }#ltdc #double-buffer #stm32f4-ltdc
Posted on June 01, 2018 at 14:34Helloi try to rotate the LCD of the STM32F429I-Discovery : print hello world rotated of 90� can can't do it.i change the setting in LCDConf_stm32f429i_disco_MB1075.c without success ://&sharpdefine LCD_SWAP_XY 1//&sharpdefine LCD_MIRROR_Y 1&sharpdefine XSIZE_PHYS 240&sharpdefine YSIZE_PHYS 320Has anyone a solution ?thanks#helloworld #rotate-90� #stm32f429i-discovery #stemwim
Posted on June 04, 2018 at 10:39Hi,Right now I am facing with the next issue:I am using FSMC to drive an SDRAM (IS66WV51216) and an LCD (https://shop.boxtec.ch/tft-lcd-shield-for-arduino-unomega-ili9481-p-42762.html?language=en). As I use only the SDRAM without TFT, the write and read works fine, but as I connect the display the write/read operations have interesting issues.As I write 1k data in to the SDRAM from 0-1023 and as I read back the numbers are strange (0 0 1 1 7 7 7 7 23 23 ...).But as I use only the TFT with FSMC it also works fine.I use the next settings: NE1, NE2 -> PULL UPDATA [0 - 16] -> PULL DOWNADDRES[0 - 18] -> NO RESISTORNWE -> PULL UPNOE -> PULL UPA25 -> this is connected to RS pin of TFT (data or command selector) NO RESISTORThe data pins from 0-8 bits are common as the NWE and the NOE pins.The data widths of the devices: TFT => 8 bitsSDRAM => 16 bitsSo separately both device work, but as I would like to use them in one SW
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.