cancel
Showing results for 
Search instead for 
Did you mean: 

PSRAM and LCD conflict ?

warcatz
Associate II
Posted on May 02, 2013 at 16:22

Hi ,

I am getting a little problem with my LCD.

It run well on my old board with fsmc.

It was connected for FSMC_Bank1_NORSRAM1

fsmc_a16 was the RS pin and declaration was :

#define LCD_REG              (*((volatile unsigned short *) 0x60000000)) /* RS = 0 */

#define LCD_RAM              (*((volatile unsigned short *) 0x60020000)) /* RS = 1 */

Now , i have build a 'better' board 😉 , i have PSRAM on FSMC_Bank1_NORSRAM2 ,

the LCD is on FSMC_Bank1_NORSRAM3.

The LCD RS pin is now on fsmc_a0 , then the declaration is :

#define LCD_REG              (*((volatile unsigned short *) 0x68000000))     /* RS = 0 */

#define LCD_RAM              (*((volatile unsigned short *) 0x68000002))     /* RS = 1 */

If i understand correctly how it work it must be ok , but it's not ....

Then my question is , can the PSRAM address or data port have any influence on the

common pins with the LCD ?

On my old board it was no external memory and it worked well.

I have test on 2 of my new board , one with pull-up resistors on the data port and one without , on both board the memory continue to work ok , but i'm not able to use the lcd.

If someone have a idea ...

Cheers.

11 REPLIES 11
warcatz
Associate II
Posted on May 06, 2013 at 19:36

It's the next i will do , but tomorrow i go back to work in Germany at 650Km from my scope 🙂

I have to not forget my analyzer for the trip he he ..

But anyway i will take the old and new board with me ... so i'm sure i can continue to play with my stm32 (i come from pic32 world !)

Cheers.

warcatz
Associate II
Posted on May 17, 2013 at 13:03

I just found why it doesn't work ! , it was the GPIO_Speed_100MHz !!

When i made GPIO_Speed_2MHz it was ok , strange here is that it work for 25,50 and 100Mhz on the other board ....

Other test was to write all pixels in PSRAM then transfer them to LCD , it worked too.

But sometimes i get the LCD crash , and i think it's the fsmc timing.

When i look around on the web , data-sheet etc i don't found any info on how the signal

representation are done in real (little pictures with parameter and signals).

I have try with the logic analyser but i think he is not fast enough and from the results i see

the RS,CS,WR etc have same start time, but in real they don't start at same time.

On oscope it's difficult to see how everything work because the only 2 input i have :(

I have made some advancement , it work , but not stable.

Will be good from ST to made 'real' docs with examples or more info about the stm32.

Or at least , something who not only Master like Clive can understand 😉

Now i am facing my next 'yea one more' problem ....

If i want use the DMA for take the pixels from PSRAM and put then to the LCD , how can

i tell the DMA to put some commands to LCD before it start the new screen drawing ?

On the SSD1963 you have to do :

SetArea(x,y,width,length);

LCD_WriteIndex(WRITE_MEMORY_START);

After this we can send all the pixels.

Actually i made the PSRAM -> LCD transfer with software who take too much time.

DMA will be the good solution but like the FSMC , it's hard to find 'usefull' information

or examples we can follow for this kind of applications.

Apart that , is it possible to write to the memory when the DMA is refreshing the screen ?

Cheers.