cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F407 with SSD1963 7'' (800x480) Display

himanshusharma
Associate II

Posted on June 20, 2014 at 07:18

Hi, i am working with SSD1963 7''TFT(800x480) with stm32f407 168 MHz discovery board, SSD1963 driver work fine initializing data bus and control pin as GPIO, but with slow response on TFT, right now refresh rate that I am able to achieve is 1 FPS.

As done a lot of search max. 30 FPS can be achieved using FSMC. I took example of darth and update according to my requirement, but some how its not working. Code is attached plz take a look and let me know what I am doing wrong. 

10 REPLIES 10
rigomate2
Associate II
Posted on June 20, 2014 at 10:30

Hi!

I would do one further test.

Make sure neither SystemInit_ExtMemCtl() and FSMC_PSRAM_Config() are called.

Init only FSMC_LCD_Config().

And do check how fast the LCD_Clear(Black); gets executed.

If you experience, that the display still refreshes very slow, than your MCU runs slower than you expect. Although I see your clock init seems ok.

But still I would suggest it would be best to avoid anything else on the FSMC bus to make sure, they are not somehow colliding, although they should not.

Come back if you did that test.

himanshusharma
Associate II
Posted on June 20, 2014 at 12:26

Hi rigo,

I done test told by you Initonly FSMC_LCD_Config(); and do check for LCD_Clear(Black); Result: noting get displayed on LCD.

I think problem is with FSMC_LCD_Config(); I am not able to configure FSMC_LCD_Config(); routine  in a correct way plz take a look to that part.

For MCU speed test:

I already done speed test of MCU with timer it is very clear that MCU is working at 168MHz, I won't doubt that.

Thanks for you comment.

himanshusharma
Associate II
Posted on June 23, 2014 at 08:18

Hi Rigo,

I got one FSMC code for TFT. Changed it to my requirement and it works now I am able to fill TFT with color at ~8FPS. Now how to get more FPS. plz take a look code is attached.

________________

Attachments :

Keil_STM32F4_-_FSMC_REV1.zip : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I07w&d=%2Fa%2F0X0000000bdC%2FbRRGVncm6Uob.wCrbWcMmdfy4Jfh97BPo9rC4qTV5Mg&asPdf=false
rigomate2
Associate II
Posted on June 23, 2014 at 16:23

Hi!

In your first code, I think the culprit were, that you used FSMC_ExtendedMode_Disable ,although you gave FSMC_AccessMode_D.

 

I think you need to enable extended mode, if you plan to use anything besides AccessModeA.

Have a look at the datasheet regarding this part.

In your newer code, it seems to be corrected, and you do mention an 8x improvement, so thats good.

But I think you forgot to set the

timing.FSMC_BusTurnAroundDuration

 

See that you give it some reasonable value.

As a matter of fact, the stm32cubemx comes in handy to check, what exactly youl should care about while initializing a peripheral.0690X000006054EQAQ.png

Cheers

himanshusharma
Associate II
Posted on June 25, 2014 at 12:22

Hi Rigo,

1. Now I am able to get 12.5 FPS on 800x480, this 

http://www.google.co.in/imgres?imgurl=http://www.emcu.it/STM32/STM32-TFT/TFT-FMC-2.png&imgrefurl=http://www.emcu.it/STM32/STM32-TFT/STM32-TFT.html&h=511&w=619&tbnid=Bc7-T6MxHAFFsM:&zoom=1&docid=O0RaxZxNrbdReM&ei=dKCqU9OyG5CfugTLj4HwCQ&tbm=isch&ved=0CBoQMygAMAA&iact=rc&uact=3&dur=297&page=1&start=0&n...

 describe one is able to achieve 62 FPS on 320x240 resolution. So for this TFT resolution I will get ~25FPS just half what they achieving. What may be the reason? thing that I figure out is distance of wire between TFT and discovery board? my wire bus is about 25cm.

2. I am doing communication in 16bit 565 color mode. When I put image on TFT, colors are different than actual I am using BmpCvt from segger. How come I over come this issue?

Posted on June 25, 2014 at 12:35

12.5 seems in line for a display with x5 the number of pixels.

Tips, buy me a coffee, or three.. PayPal Venmo Up vote any posts that you find helpful, it shows what's working..
rigomate2
Associate II
Posted on June 25, 2014 at 22:23

I checked that link, and that's for a STM32F1 series running on 72MHz, whereas the FSMC clocked at 36MHz.

0690X000006058OQAQ.png

I think you should tighten the timing delays. Just play around if you will, or look up the SSD1963 datasheet and try to read the allowed tightest timings.

himanshusharma
Associate II
Posted on July 04, 2014 at 06:08

Hi Rigo,

I am able to suppress time by below FSMC address.

void vMain_TFT_FSMC_Init(void)

{

  FSMC_NORSRAMTimingInitTypeDef timing={0};

  FSMC_NORSRAMInitTypeDef init={0};

  RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE);

  timing.FSMC_AddressSetupTime = 0x0f; // decrease refresh rate inc.

  timing.FSMC_DataSetupTime  = 0x0f; // decrease refresh rate inc.

.....

}

And by blinking led after filling screen with different color I am able to get ~26 TFT refresh rate, but TFT not showing any color on screen at this time. I am not sure but may be bus wire cause this issue. Will confirm when check on developed PCB is few days.

Right now I working with image, TFT init is with 16 bit. I transfer image with BmpCvt to 16 bit RGB 565 code but when I update TFT color are different than actual. Plz suggest some thing on this.
NEERAJ GUPTA
Associate II
Posted on September 15, 2014 at 14:31

The original post was too long to process during our migration. Please click on the provided URL to read the original post. https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I6gD&d=%2Fa%2F0X0000000bt4%2FBjdI2Hj5ECyUuzgsnl6DL4TEUwQTAhdkQ0OyzvNCCxU&asPdf=false