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

 
 
 
Reply to this topicStart new topic
> LPC2478+STN 4bit проблемма!
Rostic
сообщение Jul 30 2010, 07:16
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 2-05-09
Пользователь №: 48 559



Подключил WO320240A по 4битному интерфейсу. Подключен верно, сигналы смотрели осциллографом.

Собственно проблема:
После инициализации рисует на экране вертикальные полосы:
1)с включенным grayscaler и 4bpp - независимо от данных в видео памяти.
2)с выключеным grayscaler и 1bpp - рисует с шагом 1 точка через 3. выходит разрешение 80*240.(Притом рисует так что если первый байт в видеопамяти 0xFF появляеться 16 точек с шагом 1 точка через 3!)

В чём проблема непонятно... пробовал менять количество бит на писксел с 1bpp на 4bpp с настройкой палитры и включением grayscaler - не помогло.

Код инициализаци:
Код
    //CLKC 72000000

    #define STATIC_RAM_BASE    0x80000000



    DelayMs(100);
    PINSEL11 |= 1; //LCD Enable
    PCONP |= (1<<20); // включаем контроллер LCD

    PINSEL11 &= ~(7 << 1); //LCDM_4BIT_MONO_STN_SINGLE_PANEL

    PINSEL4 |=  ((3<<0)/*LCDPWR*/ | (3<<2)/*LCDPLE*/ | (3<<4)/*LCDCLK*/ | (3<<6)/*LCDFP*/ | (3<<8)/*LCDM*/ | (3<<10)/*LCDLP*/
              |(3<<12)/*LCDVD[0]*/ | (3<<14)/*LCDVD[1]*/ | (3<<16)/*LCDVD[2]*/ | (3<<18)/*LCDVD[3]*/);

    LCD_CFG = 19;// HCLK div 19+1 = 3.456 MHz ( with PCD = 1+2 = 3 refresh 60hz)


    LCD_TIMH = ( (0<<24/*HBP*/) | (0<<16/*HFP*/) | (0<<8/*HSW*/)
               | ((320/16-1)<<2/*PPL*/));                         //(320/4)pixles + (0+1)bp + (0+1)fp + (0+1)sw = 83clks per line
    LCD_TIMV = ( (0<<24/*VBP*/) | (0<<16/*VFP*/) | (0<<10/*VSW*/)
               | (239   /*240-1*/  <<0   /*LPP*/   ) );                //240lines + 0vp + 0fp + 0bp = 240ln_clks
    LCD_POL = ( (0<<26)     /* Bypass pixel clock div*/     | (((320/4)-1)<<16    /*clocks per line*/    )
              | (0<<11      IVS*/   ) | (0<<12     /*IHS*/  )  | (1<<13      /*IPC 1-data load on falling edge*/  )
                        | (1<<0    /*PCD 1+2 = 3*/        ));
    LCD_CTRL = ( (0<<6)                //LcdMono8 - set 4bit interface
                         | (0<<5)        //LcdTft   - //0 - set STN use greyScaler
                         | (1<<4)0;    //LcdBW    - set STN LCD is Monochrome
    LCD_CTRL &= ~( (1<<7)//0-single panel
                |(1<<6)//LcdMono8 - 0 - set 4bit interface
                |(7<<1));//000 - BPP    - use 1 bit per pixel

    LCD_UPBASE = STATIC_RAM_BASE;//0x80000000;
    LCD_LPBASE = STATIC_RAM_BASE;//0x80000000;

    LCD_CTRL |= 1;             //set LcdEn bit
    LCD_CTRL |= (1<<11);   //set LcdPwr bit


Сообщение отредактировал Rostic - Jul 30 2010, 07:17
Go to the top of the page
 
+Quote Post
Rostic
сообщение Aug 1 2010, 16:59
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 2-05-09
Пользователь №: 48 559



Сэмитировал работу LCD контроллера портами, дисплей все рисует как положено.. вариант с некорректным подключением или нерабочим дисплеем отпал окончательно. Следовательно все дело в настройках.
Может кто настраивал LCD контроллер для SNT-ок? Поделитесь примером если есть smile.gif
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Aug 5 2010, 09:55
Сообщение #3


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Rostic @ Aug 1 2010, 11:59) *
Сэмитировал работу LCD контроллера портами, дисплей все рисует как положено.. вариант с некорректным подключением или нерабочим дисплеем отпал окончательно. Следовательно все дело в настройках.
Может кто настраивал LCD контроллер для SNT-ок? Поделитесь примером если есть smile.gif

Код
LCD_CTRL = ( (0<<6)                //LcdMono8 - set 4bit interface
                         | (0<<5)        //LcdTft   - //0 - set STN use greyScaler
                         | (1<<4)0;    //LcdBW    - set STN LCD is Monochrome

    LCD_CTRL &= ~( (1<<7)//0-single panel
                |(1<<6)//LcdMono8 - 0 - set 4bit interface
                |(7<<1));//000 - BPP    - use 1 bit per pixel

Последняя строчка неправильная.

|(7<<1));//000 - BPP - use 1 bit per pixel

Цитата
3:1 LcdBpp LCD bits per pixel:
Selects the number of bits per LCD pixel:
000 = 1 bpp.
001 = 2 bpp.
010 = 4 bpp.


Сообщение отредактировал ar__systems - Aug 5 2010, 09:57
Go to the top of the page
 
+Quote Post
Rostic
сообщение Aug 5 2010, 13:07
Сообщение #4





Группа: Новичок
Сообщений: 4
Регистрация: 2-05-09
Пользователь №: 48 559



Цитата(ar__systems @ Aug 5 2010, 12:55) *
Код
LCD_CTRL = ( (0<<6)                //LcdMono8 - set 4bit interface
                         | (0<<5)        //LcdTft   - //0 - set STN use greyScaler
                         | (1<<4)0;    //LcdBW    - set STN LCD is Monochrome

    LCD_CTRL &= ~( (1<<7)//0-single panel
                |(1<<6)//LcdMono8 - 0 - set 4bit interface
                |(7<<1));//000 - BPP    - use 1 bit per pixel

[/code]
Последняя строчка неправильная.

|(7<<1));//000 - BPP - use 1 bit per pixel


Какраз правильная... обратите внимание на то что ето операция обнуления полей (хоть в ней и нет смысла т.к. команда перед ней не выставляет разряды а присваивает сформированное двойное слово).

Код
LCD_CTRL &= ~( (1<<7)|(1<<6)|(7<<1));//000 - BPP    - use 1 bit per pixel

Go to the top of the page
 
+Quote Post

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

 


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


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