реклама на сайте
подробности

 
 
> Проблема с отображением на TFT LCD
Magazeev
сообщение Aug 13 2012, 15:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 8-10-11
Пользователь №: 67 607



Доброго времени суток, хочется задать такой вопрос: пытаюсь на LPC1788 с самодельной платой показывать картинки (что-то типо цифровой фоторамки), для чего использую SDRAM. Картинка отображается четко и без искажений, даже не одна, однако, в случае когда я пытаюсь делать что-то с памятью SDRAM, например записать какие-то данные в другую часть памяти, то на время работы с ней на дисплее вместо изображения появляется рябь, а после того как запись в память закончена, изображение возвращается. Не могу разобраться от чего это происходит и как с этим бороться(( Спасибо)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Magazeev
сообщение Aug 14 2012, 09:28
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 8-10-11
Пользователь №: 67 607



Цитата
Наверное, не хватает полосы пропускания шины памяти, на сайте 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
*/

Однако и это не помоголо. Рябь при работе с памятью осталась.
Цитата
Кроме того, обычно нельзя писать в буфер кадра в то время, как идёт его отображение. Т.е., если надо изменить отображение, следует сначала сформировать его в другом месте памяти, а потом просто переключить отображение на новый буфер.

Я собственно так и делал. Однако моя проблема вознакает не только когда я пытаюсь менять данные в буфере отображаемого изображения, но и когда работаю с другой областью памяти.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 05:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016