2013-05-02 07:22 AM
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.2013-05-06 10:36 AM
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.2013-05-17 04:03 AM
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.