Есть у меня плата SK-9g45-oem и дисплей Nec NL10260BC19
Пишу программу на С (компилятор IAR).
Дошел до стадии инициализации дисплея.
Вроде бы запустил, однако есть маленькая проблема - картинка сдвинута вправо на 8 пикселей. Не могу понять, куда копать.
Код
void configure_lcd(void)
{
// Enable peripheral clock
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_LCDC;
AT91C_BASE_LCDC->LCDC_LCDCON1 = 1 << 12; //LCDOTCLK is 50 MHz
AT91C_BASE_LCDC->LCDC_LCDCON2 = AT91C_LCDC_DISTYPE_TFT | AT91C_LCDC_SCANMOD_SINGLESCAN |
AT91C_LCDC_IFWIDTH_SIXTEENBITSWIDTH | AT91C_LCDC_PIXELSIZE_SIXTEENBITSPERPIXEL |
AT91C_LCDC_INVVD_NORMALPOL | AT91C_LCDC_INVFRAME_INVERTEDPOL |
AT91C_LCDC_INVLINE_INVERTEDPOL | AT91C_LCDC_INVCLK_NORMALPOL |
AT91C_LCDC_INVDVAL_NORMALPOL | AT91C_LCDC_CLKMOD_ALWAYSACTIVE |
AT91C_LCDC_MEMOR_LITTLEIND;
AT91C_BASE_LCDC->LCDC_TIM1 = (0 << 0) | (25 << 8) | (1 << 16) | (0 << 24) | (0<<31); // vfp,vbp,vpw,vhdly
AT91C_BASE_LCDC->LCDC_TIM2 = (0 << 0) | (0 << 8) | (215 << 21); // hbp,hpw,hfp
AT91C_BASE_LCDC->LCDC_LCDFRCFG = (599 << 0) | (1023 << 21); // 1024x600
AT91C_BASE_LCDC->LCDC_FIFO = 501;
AT91C_BASE_LCDC->LCDC_BA1 = (unsigned int)lcdbuffer; // Display buffer adress
AT91C_BASE_LCDC->LCDC_FRMCFG = (307200 << 0) | (3 << 24); // Size 307200 burst 4 words
AT91C_BASE_LCDC->LCDC_DMACON = AT91C_LCDC_DMAEN;
AT91C_BASE_LCDC->LCDC_PWRCON = AT91C_LCDC_PWR;
}
{
// Enable peripheral clock
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_LCDC;
AT91C_BASE_LCDC->LCDC_LCDCON1 = 1 << 12; //LCDOTCLK is 50 MHz
AT91C_BASE_LCDC->LCDC_LCDCON2 = AT91C_LCDC_DISTYPE_TFT | AT91C_LCDC_SCANMOD_SINGLESCAN |
AT91C_LCDC_IFWIDTH_SIXTEENBITSWIDTH | AT91C_LCDC_PIXELSIZE_SIXTEENBITSPERPIXEL |
AT91C_LCDC_INVVD_NORMALPOL | AT91C_LCDC_INVFRAME_INVERTEDPOL |
AT91C_LCDC_INVLINE_INVERTEDPOL | AT91C_LCDC_INVCLK_NORMALPOL |
AT91C_LCDC_INVDVAL_NORMALPOL | AT91C_LCDC_CLKMOD_ALWAYSACTIVE |
AT91C_LCDC_MEMOR_LITTLEIND;
AT91C_BASE_LCDC->LCDC_TIM1 = (0 << 0) | (25 << 8) | (1 << 16) | (0 << 24) | (0<<31); // vfp,vbp,vpw,vhdly
AT91C_BASE_LCDC->LCDC_TIM2 = (0 << 0) | (0 << 8) | (215 << 21); // hbp,hpw,hfp
AT91C_BASE_LCDC->LCDC_LCDFRCFG = (599 << 0) | (1023 << 21); // 1024x600
AT91C_BASE_LCDC->LCDC_FIFO = 501;
AT91C_BASE_LCDC->LCDC_BA1 = (unsigned int)lcdbuffer; // Display buffer adress
AT91C_BASE_LCDC->LCDC_FRMCFG = (307200 << 0) | (3 << 24); // Size 307200 burst 4 words
AT91C_BASE_LCDC->LCDC_DMACON = AT91C_LCDC_DMAEN;
AT91C_BASE_LCDC->LCDC_PWRCON = AT91C_LCDC_PWR;
}
Хочу сразу сказать, что дисплей не реагирует на сигналы Hsync и Vsync, их там нет в принципе, он работает только лишь с DE сигналом.
Подскажите, в каком направлении мне дальше двигаться?
P.S. Вроде в документации где то проскакивала errata по сдвинутому дисплею, однако на sam9g45 никаких упоминаний на этот счет нет