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

 
 
> NXP LPC2478 и MTF-TQ57SN721-AV, Дефекты изображения на экране TFT-матрицы
Neckrasoff
сообщение May 11 2011, 12:48
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 27-01-10
Пользователь №: 55 091



Доброго времени суток, господа!
Вывожу изображение на экран TFT-матрицы MTF-TQ57SN721-AV (RGB 5:6:5 = 16 битов на пиксель) с помощью встроенного в LPC2478 контроллера LCD. Если картинка имеет цветность 16 цветов, то она на экране отображается корректно. Если же выводить какую-нибудь фотографию с полной
16-тибитной цветностью, то на вертикальной границе некоторых оттенков появляются ярко-окрашенные непрописанные пиксели (ярко- красного, голубого, желтого, зеленого и других цветов). Если кто-то сталкивался с подобной проблемой, помогите пожалуйста.
Привожу здесь функцию инициализации встроенного LCD-контроллера:
CODE
void InitPanel(void)
{
int i;

PCONP |= 1<<20;
PINSEL11 = ( (5<<1) | 1); // RGB 5:6:5 , LCD port enable

PINSEL4 &= ~(3<<4); // P2[2] LCDDCLK
PINSEL4 &= ~(3<<6); // P2[3] LCDFP
PINSEL4 &= ~(3<<8); // P2[4] LCDENAB/LCDM
PINSEL4 &= ~(3<<10); // P2[5] LCDLP
PINSEL4 |= ((3<<4) | (3<<6) | (3<<8) | (3<<10)); // 1111 1111 0000

PINSEL3 &= ~(3<<8); // P1[20] LCDVD[6]/LCDVD[10] G0 LCDVD[10]
PINSEL3 &= ~(3<<10); // P1[21] LCDVD[7]/LCDVD[11] G1 ..11
PINSEL3 &= ~(3<<12); // P1[22] LCDVD[8]/LCDVD[12] G2 ..12
PINSEL3 &= ~(3<<14); // P1[23] LCDVD[9]/LCDVD[13] G3 ..13
PINSEL3 &= ~(3<<16); // P1[24] LCDVD[10]/LCDVD[14] G4 ..14
PINSEL3 &= ~(3<<18); // P1[25] LCDVD[11]/LCDVD[15] G5 LCDVD[15]
PINSEL3 &= ~(3<<20); // P1[26] LCDVD[12]/LCDVD[20] B1 LCDVD[20]
PINSEL3 &= ~(3<<22); // P1[27] LCDVD[13]/LCDVD[21] B2 ..21
PINSEL3 &= ~(3<<24); // P1[28] LCDVD[14]/LCDVD[22] B3 ..22
PINSEL3 &= ~(3<<26); // P1[29] LCDVD[15]/LCDVD[23] B4 LCDVD[23]
PINSEL3 |= ( (1<<8) | (1<<10) | (1<<12) | (1<<14) | (1<<16) | (1<<18) | (1<<20) | (1<<22) | (1<<24) | (1<<26) );
// 0101 0101 0101 0101 0101 0000 0000

PINSEL4 &= ~(3<<12); // P2[6] LCDVD[0]/LCDVD[4] R1 LCDVD[4]
PINSEL4 &= ~(3<<14); // P2[7] LCDVD[1]/LCDVD[5] R2 ..5
PINSEL4 &= ~(3<<16); // P2[8] LCDVD[2]/LCDVD[6] R3 ..6
PINSEL4 &= ~(3<<18); // P2[9] LCDVD[3]/LCDVD[7] R4 LCDVD[7]
PINSEL4 &= ~(3<<24); // P2[12] LCDVD[4]/LCDVD[3]/LCDVD[8]/LCDVD[18] R0 LCDVD[3]
PINSEL4 &= ~(3<<26); // P2[13] LCDVD[5]/LCDVD[9]/LCDVD[19] B0 LCDVD[19]
PINSEL4 |= ((3<<12) | (3<<14) | (3<<16) | (3<<18) | (1<<24) | (1<<26)); // 0101 0101 0000 1111 1111 1111 1111 0000

LCD_CFG_REG = 2; // LCD panel clock prescaler selection.
LCD_TIMH_REG = ( (1<<24) | (1<<16) | (50<<8) | (((320/16)-1)<<2));
LCD_TIMV_REG = ( (1<<24) | (1<<16) | (1<<10) | (240) );
LCD_POL_REG = ( (0<<26) | (((320/1)-1)<<16) | (1<<12) | (0<<5));
LCD_CTRL_REG = ((1<<5) | (6<<1) | (1<<8));
// LCD is a TFT display.
// 16 bpp, 5:6:5 mode.
// BGR: red and blue swapped.

LCD_UPBASE_REG = BUFFER_ADDR; // из SD-RAM !
LCD_LPBASE_REG = BUFFER_ADDR; // из SD-RAM !
for(i=0;i<50000;i++);

LCD_CTRL_REG |= 1; // LCD enabled. Signals LCDLP, LCDDCLK, LCDFP,LCDENAB, and LCDLE are high.
for(i=0;i<50000;i++);
LCD_CTRL_REG |= 1<<11; // power gated through to LCD panel and LCDV[23:0] signals enabled, (active).
}


Сообщение отредактировал IgorKossak - May 25 2011, 20:19
Go to the top of the page
 
+Quote Post



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

 


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


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