1) Для управления используется 8-ми битный интерфейс, который выбирается установкой сигналов IM3...IM0. На плате, подключены лишь 2 IM1 и IM0. При том IM1 = 0 а IM0 = 1, но в даташите написано, что подобное включение не корректно (Setting invalid). В чём дело?
2) На просторах нета нашёл аппноут ILI9325AN_V0.22 в коем написано, что перед началом инициализации необходимо, подёргать ножкой nRESET
Код
//************* Reset LCD Driver ****************//
LCD_nRESET = 1;
delayms(1); // Delay 1ms
LCD_nRESET = 0;
delayms(10); // Delay 10ms // This delay time is necessary
LCD_nRESET = 1;
delayms(50); // Delay 50 ms
LCD_nRESET = 1;
delayms(1); // Delay 1ms
LCD_nRESET = 0;
delayms(10); // Delay 10ms // This delay time is necessary
LCD_nRESET = 1;
delayms(50); // Delay 50 ms
однако у меня на плате, нога nRESET соединена с ногой nRESET контроллера... Данная микросхема может управлять своей ножкой nRESET или как тогда дисплей инициализировать?
3) Написал код инициализации в соответствии с аппноутом (без дёргания ресетом):
CODE
WDT -> WDT_MR = WDT_MR_WDDIS; // disable Watchdog Timer
pmc_enable_periph_clk(ID_PIOC); // enable clk PIOC
PIOC -> PIO_PER = PIO_PC0|PIO_PC1|PIO_PC2|PIO_PC3|PIO_PC4|PIO_PC5|PIO_PC6|PIO_PC7|PIO_PC8|PIO_PC11
|
PIO_PC13|PIO_PC15|PIO_PC19;
PIOC -> PIO_OER = PIO_PC0|PIO_PC1|PIO_PC2|PIO_PC3|PIO_PC4|PIO_PC5|PIO_PC6|PIO_PC7|PIO_PC8|PIO_PC11
|
PIO_PC13|PIO_PC15|PIO_PC19;
PIOC -> PIO_SODR = PIO_PC0|PIO_PC1|PIO_PC2|PIO_PC3|PIO_PC4|PIO_PC5|PIO_PC6|PIO_PC7|PIO_PC8|PIO_PC11
|
PIO_PC13|PIO_PC15|PIO_PC19;
syst_int_8_bit_write(0x00E3, 0x3008);
syst_int_8_bit_write(0x00E7, 0x0012);
syst_int_8_bit_write(0x00EF, 0x1231);
syst_int_8_bit_write(0x0001, 0x0100);
syst_int_8_bit_write(0x0002, 0x0700);
syst_int_8_bit_write(0x0003, 0x1030);
syst_int_8_bit_write(0x0004, 0x0000);
syst_int_8_bit_write(0x0008, 0x0207);
syst_int_8_bit_write(0x0009, 0x0000);
syst_int_8_bit_write(0x000A, 0x0000);
syst_int_8_bit_write(0x000C, 0x0000);
syst_int_8_bit_write(0x000D, 0x0000);
syst_int_8_bit_write(0x000F, 0x0000);
//*************Power On sequence ****************/
syst_int_8_bit_write(0x0010, 0x0000);
syst_int_8_bit_write(0x0011, 0x0007);
syst_int_8_bit_write(0x0012, 0x0000);
syst_int_8_bit_write(0x0013, 0x0000);
delay_ms(201);
syst_int_8_bit_write(0x0010, 0x1290);
syst_int_8_bit_write(0x0011, 0x0227);
delay_ms(51);
syst_int_8_bit_write(0x0012, 0x001A);
delay_ms(51);
syst_int_8_bit_write(0x0013, 0x1800);
syst_int_8_bit_write(0x0029, 0x0028);
syst_int_8_bit_write(0x002B, 0x000C);
delay_ms(51);
syst_int_8_bit_write(0x0020, 0x0000);
syst_int_8_bit_write(0x0021, 0x0000);
// ----------- Adjust the Gamma Curve ----------//
syst_int_8_bit_write(0x0030, 0x0000);
syst_int_8_bit_write(0x0031, 0x0305);
syst_int_8_bit_write(0x0032, 0x0003);
syst_int_8_bit_write(0x0035, 0x0304);
syst_int_8_bit_write(0x0036, 0x000F);
syst_int_8_bit_write(0x0037, 0x0407);
syst_int_8_bit_write(0x0038, 0x0204);
syst_int_8_bit_write(0x0039, 0x0707);
syst_int_8_bit_write(0x003C, 0x0403);
syst_int_8_bit_write(0x003D, 0x1604);
//------------------ Set GRAM area ---------------//
syst_int_8_bit_write(0x0050, 0x0000);
syst_int_8_bit_write(0x0051, 0x00EF);
syst_int_8_bit_write(0x0052, 0x0000);
syst_int_8_bit_write(0x0053, 0x013F);
syst_int_8_bit_write(0x0060, 0xA700);
syst_int_8_bit_write(0x0061, 0x0001);
syst_int_8_bit_write(0x006A, 0x0000);
//-------------- Partial Display Control ---------//
syst_int_8_bit_write(0x0080, 0x0000);
syst_int_8_bit_write(0x0081, 0x0000);
syst_int_8_bit_write(0x0082, 0x0000);
syst_int_8_bit_write(0x0083, 0x0000);
syst_int_8_bit_write(0x0084, 0x0000);
syst_int_8_bit_write(0x0085, 0x0000);
//-------------- Panel Control -------------------//
syst_int_8_bit_write(0x0090, 0x0010);
syst_int_8_bit_write(0x0092, 0x0600);
syst_int_8_bit_write(0x0007, 0x0133);
pmc_enable_periph_clk(ID_PIOC); // enable clk PIOC
PIOC -> PIO_PER = PIO_PC0|PIO_PC1|PIO_PC2|PIO_PC3|PIO_PC4|PIO_PC5|PIO_PC6|PIO_PC7|PIO_PC8|PIO_PC11
|
PIO_PC13|PIO_PC15|PIO_PC19;
PIOC -> PIO_OER = PIO_PC0|PIO_PC1|PIO_PC2|PIO_PC3|PIO_PC4|PIO_PC5|PIO_PC6|PIO_PC7|PIO_PC8|PIO_PC11
|
PIO_PC13|PIO_PC15|PIO_PC19;
PIOC -> PIO_SODR = PIO_PC0|PIO_PC1|PIO_PC2|PIO_PC3|PIO_PC4|PIO_PC5|PIO_PC6|PIO_PC7|PIO_PC8|PIO_PC11
|
PIO_PC13|PIO_PC15|PIO_PC19;
syst_int_8_bit_write(0x00E3, 0x3008);
syst_int_8_bit_write(0x00E7, 0x0012);
syst_int_8_bit_write(0x00EF, 0x1231);
syst_int_8_bit_write(0x0001, 0x0100);
syst_int_8_bit_write(0x0002, 0x0700);
syst_int_8_bit_write(0x0003, 0x1030);
syst_int_8_bit_write(0x0004, 0x0000);
syst_int_8_bit_write(0x0008, 0x0207);
syst_int_8_bit_write(0x0009, 0x0000);
syst_int_8_bit_write(0x000A, 0x0000);
syst_int_8_bit_write(0x000C, 0x0000);
syst_int_8_bit_write(0x000D, 0x0000);
syst_int_8_bit_write(0x000F, 0x0000);
//*************Power On sequence ****************/
syst_int_8_bit_write(0x0010, 0x0000);
syst_int_8_bit_write(0x0011, 0x0007);
syst_int_8_bit_write(0x0012, 0x0000);
syst_int_8_bit_write(0x0013, 0x0000);
delay_ms(201);
syst_int_8_bit_write(0x0010, 0x1290);
syst_int_8_bit_write(0x0011, 0x0227);
delay_ms(51);
syst_int_8_bit_write(0x0012, 0x001A);
delay_ms(51);
syst_int_8_bit_write(0x0013, 0x1800);
syst_int_8_bit_write(0x0029, 0x0028);
syst_int_8_bit_write(0x002B, 0x000C);
delay_ms(51);
syst_int_8_bit_write(0x0020, 0x0000);
syst_int_8_bit_write(0x0021, 0x0000);
// ----------- Adjust the Gamma Curve ----------//
syst_int_8_bit_write(0x0030, 0x0000);
syst_int_8_bit_write(0x0031, 0x0305);
syst_int_8_bit_write(0x0032, 0x0003);
syst_int_8_bit_write(0x0035, 0x0304);
syst_int_8_bit_write(0x0036, 0x000F);
syst_int_8_bit_write(0x0037, 0x0407);
syst_int_8_bit_write(0x0038, 0x0204);
syst_int_8_bit_write(0x0039, 0x0707);
syst_int_8_bit_write(0x003C, 0x0403);
syst_int_8_bit_write(0x003D, 0x1604);
//------------------ Set GRAM area ---------------//
syst_int_8_bit_write(0x0050, 0x0000);
syst_int_8_bit_write(0x0051, 0x00EF);
syst_int_8_bit_write(0x0052, 0x0000);
syst_int_8_bit_write(0x0053, 0x013F);
syst_int_8_bit_write(0x0060, 0xA700);
syst_int_8_bit_write(0x0061, 0x0001);
syst_int_8_bit_write(0x006A, 0x0000);
//-------------- Partial Display Control ---------//
syst_int_8_bit_write(0x0080, 0x0000);
syst_int_8_bit_write(0x0081, 0x0000);
syst_int_8_bit_write(0x0082, 0x0000);
syst_int_8_bit_write(0x0083, 0x0000);
syst_int_8_bit_write(0x0084, 0x0000);
syst_int_8_bit_write(0x0085, 0x0000);
//-------------- Panel Control -------------------//
syst_int_8_bit_write(0x0090, 0x0010);
syst_int_8_bit_write(0x0092, 0x0600);
syst_int_8_bit_write(0x0007, 0x0133);
Но что дальше делать? Ну как что нибудь нарисовать? Я так понял надо загнать в память дисплея координаты пикселя, т.е.
Код
syst_int_8_bit_write(0x20, 100);
syst_int_8_bit_write(0x21, 100);
syst_int_8_bit_write(0x22, 100);
syst_int_8_bit_write(0x21, 100);
syst_int_8_bit_write(0x22, 100);
но ничего не отобразилось... Курение даташита на ILI9325 пока ответа не даёт. Заранее спасибо за помощь.