cancel
Showing results for 
Search instead for 
Did you mean: 

Weird button & slider glitching issues

MHolm.3
Associate II

Hi!

This might be a long shot but I'm having some rendering issues with the flex button and slider on my device.

Everything works perfectly in the touchgfx simulator however I'm getting a weird image glitch once a button has been released on the actual hardware. Additionally the buttons glitch in the exact same way every time which makes me think something internally is accessing the framebuffer when it shouldn't be.

I've attached two videos demonstrating the issue. One of them I have slowed the system clock right down so that the issue is clearly visible.

My setup:

Custom SPI display

No OS

Dual Frame buffer

DMA2D enabled

Internal flash & Ram

NUCLEO-F767ZI

I've been wracking my brain for the last two weeks trying to figure this out so any pointers in the right direction would be much appreciated! Cheers

1 ACCEPTED SOLUTION

Accepted Solutions
MHolm.3
Associate II

Ok I figured it out finally. It was a silly mistake on my part. I was sending the pointer to the first pixel in the frame buffer to the screen even though flushFrameBuffer was actually only sending a partial update to the screen. I should have been sending the first pixel of the updated area instead of the entire screen.

For anyone else who runs into the same issue I rewrote my SPI code to send single lines and used the following implementation instead.

0693W00000FATP5QAP.png

View solution in original post

3 REPLIES 3
MM..1
Chief II

Seems as your code doing some SPI or memory colisions. Maybe show code for example click button event show mistake better.

MHolm.3
Associate II

Thanks for the reply!

Here is how I've implemented it. From my understanding this should lock the frame buffer while SPI is transmitting but perhaps I've done it incorrectly. LCD_Send_Segment() is the function that actually transfers the frame buffer.

Where can I find the click button event?

0693W00000FAT6wQAH.png0693W00000FAT5jQAH.png0693W00000FAT6IQAX.png

MHolm.3
Associate II

Ok I figured it out finally. It was a silly mistake on my part. I was sending the pointer to the first pixel in the frame buffer to the screen even though flushFrameBuffer was actually only sending a partial update to the screen. I should have been sending the first pixel of the updated area instead of the entire screen.

For anyone else who runs into the same issue I rewrote my SPI code to send single lines and used the following implementation instead.

0693W00000FATP5QAP.png