Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: TFT+LPC2478
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Microsha_59
Попытался подключить TFT(5:6:5; 320x240) модель MTF-TQ57SN721-AV к LPC2478. В итоге дисплей запустился, но корректно заработала только часть экрана начиная с 127 по 240 строку, а до 127 строки выводит не то, что надо.
Кто-нибудь знает из-за чего это может быть.

Вот текст инициализации дисплея:

#define BUFFER_ADDR 0xA0000000
unsigned short * Ptr;

void InitPanel(void)
{
DWORD i;

PCONP |= 1<<20;
PINSEL11 = ( (5<<1) | 1);

PINSEL4 &= ~(3<<4);
PINSEL4 &= ~(3<<6);
PINSEL4 &= ~(3<<8);
PINSEL4 &= ~(3<<10);
PINSEL4 |= ((3<<4) | (3<<6) | (3<<8) | (3<<10));

PINSEL3 &= ~(3<<8);
PINSEL3 &= ~(3<<10);
PINSEL3 &= ~(3<<12);
PINSEL3 &= ~(3<<14);
PINSEL3 &= ~(3<<16);
PINSEL3 &= ~(3<<18);
PINSEL3 &= ~(3<<20);
PINSEL3 &= ~(3<<22);
PINSEL3 &= ~(3<<24);
PINSEL3 &= ~(3<<26);
PINSEL3 |= ( (1<<8) | (1<<10) | (1<<12) | (1<<14) | (1<<16) | (1<<18) | (1<<20) | (1<<22) | (1<<24) | (1<<26) );

PINSEL4 &= ~(3<<12);
PINSEL4 &= ~(3<<14);
PINSEL4 &= ~(3<<16);
PINSEL4 &= ~(3<<18);
PINSEL4 &= ~(3<<24);
PINSEL4 &= ~(3<<26);
PINSEL4 |= ((3<<12) | (3<<14) | (3<<16) | (3<<18) | (1<<24) | (1<<26));

LCD_CFG_REG = 2;
LCD_TIMH_REG = ( (0<<24) | (0<<16) | (50<<8) | (((320/16)-1)<<2));
LCD_TIMV_REG = ( (0<<24) | (0<<16) | (1<<10) | (240-1) );
LCD_POL_REG = ( (1<<26) | (((320/1)-1)<<16) | (1<<12) | (0<<5));

LCD_CTRL_REG = ((1<<5) | (6<<1));
LCD_CTRL_REG |= (1<<8);

LCD_UPBASE_REG = BUFFER_ADDR;
LCD_LPBASE_REG = BUFFER_ADDR;
for(i=0;i<50000;i++);

LCD_CTRL_REG |= 1;
for(i=0;i<50000;i++);
LCD_CTRL_REG |= 1<<11;
}
Desenix
если хоть что то выводит, значит с большой вероятностью контроллер правильно настроил, а если не то что надо, значит неверно указал адрес FrameBuffer или он не верно заполнен информацией.
PS: с этим контроллером не работал.
Microsha_59
Цитата(Desenix @ Jul 7 2008, 16:45) *
если хоть что то выводит, значит с большой вероятностью контроллер правильно настроил, а если не то что надо, значит неверно указал адрес FrameBuffer или он не верно заполнен информацией.
PS: с этим контроллером не работал.


Проверил память, которую выделяю под буфер, проблем нет (читает, пишет и сохраняет значения).
В контроллере начальный адрес буфера задается с помощью регистров LCD_UPBASE, LCD_LPBASE, что я и сделал:

LCD_UPBASE_REG = BUFFER_ADDR;
LCD_LPBASE_REG = BUFFER_ADDR;

Может быть есть ещё какие-нибудь настройки, которые я не заметил?
Microsha_59
Ура, всё заработало!!!

Все дело в битах VBP регистра LCD_TIMV.

Всем спасибо.
Michal755
I have little big different probleme. We are sure, that data is right write to VRAM (SRAM) area, but DMA LCD Controller does not read correct and finally pixels picture erroneously. Do you know, what can be wrong, if DMA does not correct read data from SRAM to show on display ? Thank you
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.