LPC1788, MATRIXARB Register not working properly

Discussion created by lpcware Employee on Jun 15, 2016
Latest reply on Jun 15, 2016 by lpcware
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.