Цитата
Наверное, не хватает полосы пропускания шины памяти, на сайте NXP есть экселевский файл для расчетов, если загрузка шины более
40-50 % - могут быть такие проблемы, тогда снижайте частоту кадров или глубину цвета. А вообще надо было сразу привести пара-
метры - пиксельную частоту, глубину цвета, ширину шины SDRAM, частоту самого контроллера ?
Спасибо, воспользовася и проверил, с моими параметрами загрузка шины меньше 40%. у меня дисплей разрешением 800x600, c 24bpp глубиной, сам контроллер работает на скорости 120 Mhz, на такой же скорости контроллер общается с SDRAM. LCD контроллер работает на скорости 40 Mhz. попробовал менять частоту, это не помогло)
Цитата
Посмотрите в мануале приоритеты AHB-мастеров. У LCD он, кажется, изначально задавлен.
Цитата
Как уже намекнули, надо настроить приоритеты мастеров шины: у контроллера дисплея должен быть высший, затем могут идти другие устройства (например, USB и Ethernet), затем -- канал данных процессора и в самом конце -- канал инструкций. Всего у LPC177x/8x, помнится, четыре уровня приоритета было.
Действительно, я этого не сделал. Изменил приоритет LCD DMA на самый высокий в Matrix Arbitration register на самый высокий:
Код
#define MATRIX_ARB 0x400FC188
и в функции инициализации LCD контроллера:
Код
uint32_t* matrix_arb = (uint32_t*)MATRIX_ARB;
*matrix_arb = 0xC09;
/* The highest priority to LCD DMA
1:0 PRI_ICODE I-Code bus priority. Should be lower than PRI_DCODE for proper operation. ->0x1
3:2 PRI_DCODE D-Code bus priority. ->0x2
5:4 PRI_SYS System bus priority. ->0
7:6 PRI_GPDMA General Purpose DMA controller priority.-> 0
9:8 PRI_ETH Ethernet DMA priority. ->0
11:10 PRI_LCD LCD DMA priority. -> 0x3
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
*/
Однако и это не помоголо. Рябь при работе с памятью осталась.
Цитата
Кроме того, обычно нельзя писать в буфер кадра в то время, как идёт его отображение. Т.е., если надо изменить отображение, следует сначала сформировать его в другом месте памяти, а потом просто переключить отображение на новый буфер.
Я собственно так и делал. Однако моя проблема вознакает не только когда я пытаюсь менять данные в буфере отображаемого изображения, но и когда работаю с другой областью памяти.