Content originally posted in LPCWare by slavka012 on Fri Mar 07 14:37:41 MST 2014
Subject: LPC1788, MATRIXARB register
Description: Hello, I have a project with LCD, SDRAM, FLASH. Untill now all graphics was stored in the on-chip FLASH and everything was working fine. LCD Frame buffer is located in off-chip SDRAM. Now I moved the data to external FLASH chip. Immediately I started getting screen flickering (there is always something drawn on the screen). If I stop refreshing the screen, flickering stops.
So I've read a bit and found this register, MATRIXARB. The datasheet suggests to write there
0x00000C09 in order to give priority to the LCD. So I tried that, and pretty soon the system hangs.
I tried to write there the default value (0x0000000D), same result.
Then I tried reading the register: 0x00010004. I've read it both with printfs to serial port, and in a debugger stopped at ResetISR, that is before any code executed.
So not only this value is different from the specd in datasheet, it contains 1 in bit 16, that according to DS should always be zero:
Table 27. Matrix Arbitration register (MATRIXARB- 0x400F C188) bit description
11:10 PRI_LCD LCD DMA priority. 0
13:12 PRI_USB USB DMA priority. 0
15:14 - Reserved. Read value is undefined, only zero should be written. NA
16 ROM_LAT ROM latency select. Should always be 0. 0
31:17 - Reserved. Read value is undefined, only zero should be written. NA
I would appreciate if someone clarifies this to me.
I tried writing there also 0x0001C09, that does not seem to have any effect.
Thanks!