Подключил 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