Перейти к содержанию
    

Настройка LCD контроллера в AT91SAM9263

Дисплей LQ043T3DX02 (Sony PSP) подключен к SAM9263. Нашел инициализацию (Линукс) для AVR32, в котором контроллер LCD вроде тот же самый -

static struct fb_videomode __initdata lcd_modes[] = {
  {
        .name        = "LCD",
        .refresh    = 25,
        .xres        = 480,        .yres        = 272,
        .pixclock    = KHZ2PICOS(9072),
        .left_margin    = 2,        .right_margin    = 2,
        .upper_margin    = 2,        .lower_margin    = 2,
        .hsync_len    = 41,        .vsync_len    = 10, 
        .sync        = 0,
        .vmode        = FB_VMODE_NONINTERLACED,
    }
};

static struct fb_monspecs __initdata xmedia_default_monspecs = {
    .manufacturer        = "BWA",
    .monitor        = "SHARP LQ043",
    .modedb            = lcd_modes,
    .modedb_len        = ARRAY_SIZE(lcd_modes),
    .hfmin            = 19948,
    .hfmax            = 31478,
    .vfmin            = 25,
    .vfmax            = 67,
    .dclkmax        = 28330000,
};

static struct atmel_lcdfb_info __initdata xmedia_lcdc_data = {
    .default_bpp        = 24,
    .default_dmacon        = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
    .default_lcdcon2    = (ATMEL_LCDC_DISTYPE_TFT
                   | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
                   | ATMEL_LCDC_MEMOR_BIG),
    .default_monspecs    = &xmedia_default_monspecs,
    .guard_time        = 2,
};

 

Разумеется он не работает (бегут горизонтальные полосы). В связи с этим хочется понять назначение pixclock и как оно расчитывается? Зачем нужны margin (left, right, upper, lower), что такое FB_VMODE_NONINTERLACED ? Ну и насчет dclkmax, hfmax, hfmin, vfmax, vfmin.

 

Буду весьма благодарен тому, кто просветит по данным вопросам.

 

PS. Сама панель рабочая, с другим видеоконтроллером работает нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Atmel есть дока по подключению http://www.atmel.com/dyn/resources/prod_do...nts/doc6300.pdf

Изменено пользователем Alexandro

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Margin - это, как я понимаю, все-таки front- и back porch.

Вот это - ".refresh = 25" - какое-то фуфло, ибо по логике вещей должно быть 60.

С интерлейсом вроде бы все должно быть понятно.

 

Осциллографом посмотреть не пробовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Margin - это, как я понимаю, все-таки front- и back porch.

Вот это - ".refresh = 25" - какое-то фуфло, ибо по логике вещей должно быть 60.

С интерлейсом вроде бы все должно быть понятно.

 

Осциллографом посмотреть не пробовали?

 

Пробовал и 60 Герц, особо не меняется.

Именно сейчас осциллографа нет под рукой. Завтра буду им рассматривать.

Пока пытаюсь понять в чем может быть проблема.

 

Немного OFF. А никто не знает название матрицы от SONY PSP Slim?

 

 

LS0DZC0031

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот случайно нашел на одном из форумов буржуйских... может чем то поможет

 

I solved the problem. It works with this settings in the icnova_base.c

 

 

Code:
static struct fb_videomode grasshopper_tft_modes[] = {
      {

             .name        = "LQ043 @ 60",
             .refresh       = 60,                  /* refresh rate */
                                            /* horizontal resolution */
             .xres          = 480,
             .yres          = 272,          /* vertical resolution */
             .pixclock = KHZ2PICOS(9000), /* pixel clock in kHz */
             .left_margin  = 2,            /* h. front porch */
             .right_margin = 2,            /* h. back porch */
             .upper_margin = 12,             /* v. front porch */
             .lower_margin = 2,            /* v. back porch */

             .hsync_len     = 41,            /* hsync length */
             .vsync_len     = 10,            /* vsync lengt */
             .sync          = 0,
             .vmode         = FB_VMODE_NONINTERLACED,
      },
};
static struct fb_monspecs __initdata grasshopper_default_monspecs = {
       .manufacturer           = "ATM",    /* ATM = Atmel */
       .monitor                = "GENERIC", /* Generic type */
       .modedb                 = grasshopper_tft_modes,
       .modedb_len             = ARRAY_SIZE(grasshopper_tft_modes),
       .hfmin                  = 15000,    /* doesn‘t affect the lcdc! */
       .hfmax                  = 30000,    /* doesn‘t affect the lcdc! */
       .vfmin                  = 60,              /* doesn‘t affect the lcdc! */
       .vfmax                  = 700,             /* doesn‘t affect the lcdc! */
       .dclkmax                = 90000000,        /* doesn‘t affect the lcdc! */
};
struct atmel_lcdfb_info __initdata grasshopper_lcdc_data = {
       .default_bpp            = 24,             /* Colur depth */
       .default_dmacon         = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
       .default_lcdcon2        = (ATMEL_LCDC_DISTYPE_TFT
                                   | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
                                   | ATMEL_LCDC_MEMOR_BIG),
  .default_monspecs = &grasshopper_default_monspecs,
  .guard_time       = 2,
};

 

http://forum.embedded-projects.net/viewtopic.php?id=543

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

 

 

Спасибо, это я тоже видел. Сегодня посижу с осциллографом.

 

Насчет даташита на слимовый ЖКИ - у меня его нет, честно говоря не искал. Думаю, что должен быть в инете.

Изменено пользователем IgorKossak
Бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LS0DZC0031 вроде с виду такая как и LQ043. А меня инетересует матрица которая очень тонкая и без металической рамки.....

http://www.focalprice.com/GS136X/LCD_Repla..._2000_Slim.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LS0DZC0031 вроде с виду такая как и LQ043. А меня инетересует матрица которая очень тонкая и без металической рамки.....

http://www.focalprice.com/GS136X/LCD_Repla..._2000_Slim.html

 

Это экран от psp2, может вы ищете от psp3 ?

post-7294-1256026446_thumb.jpg

post-7294-1256026452_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя по всему, речь идет о драйвере фреймбуфера. Я бы посоветовал пристально посмотреть на функции типа xxx_probe xxx_init где проводится начальная загрузка регистров контроллера LCD перед его запуском.

0x800 LCD Control Register 1 LCDCON1

0x804 LCD Control Register 2 LCDCON2

0x808 LCD Timing Register 1 LCDTIM1

0x80C LCD Timing Register 2 LCDTIM2

эти регистры отвечают за PixelClock, синхру, длительности и полярности сигналов. Проверить их значения на соответствие времянки LCD. Если все будет соответствовать, то появится стабильное изображение, возможно оно будет смещено - подстройка в тех же регистрах.

цифры из struct fb_videomode __initdata lcd_modes - (как я понял) используются при запросе программами типа fbset xvidtune у драйвера fb - "а ты кто такой и что умеешь?".

 

ЗЫ Все вышеизложенное написано на основе опыта подстройки драйвера FB на w90p950 и TFT LQ064 Sharp. Ну и бегло глянул pdf на sam9263

 

Дисплей LQ043T3DX02 (Sony PSP) подключен к SAM9263. Нашел инициализацию (Линукс) для AVR32, в котором контроллер LCD вроде тот же самый -

static struct fb_videomode __initdata lcd_modes[] = {
  {
        .name        = "LCD",
        .refresh    = 25,
        .xres        = 480,        .yres        = 272,

 

Разумеется он не работает (бегут горизонтальные полосы). В связи с этим хочется понять назначение pixclock и как оно расчитывается? Зачем нужны margin (left, right, upper, lower), что такое FB_VMODE_NONINTERLACED ? Ну и насчет dclkmax, hfmax, hfmin, vfmax, vfmin.

 

Буду весьма благодарен тому, кто просветит по данным вопросам.

 

PS. Сама панель рабочая, с другим видеоконтроллером работает нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мой реально работающий код инициализации LCD:

 

diff -ruN linux-2.6.30.5M-clean/arch/arm/mach-at91/board-sam9263ek.c linux-2.6.30.5M/arch/arm/mach-at91/board-sam9263ek.c
--- linux-2.6.30.5M-clean/arch/arm/mach-at91/board-sam9263ek.c
+++ linux-2.6.30.5M/arch/arm/mach-at91/board-sam9263ek.c    
@@ -258,44 +259,46 @@


#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static struct fb_videomode at91_tft_vga_modes[] = {
    {
-        .name        = "TX09D50VM1CCA @ 60",
+        .name        = "LQ043T1DG01 @ 60",
        .refresh    = 60,
-        .xres        = 240,        .yres        = 320,
-        .pixclock    = KHZ2PICOS(4965),
+        .xres        = 480,        .yres        = 272,
+        .pixclock    = KHZ2PICOS(9009), //(480+41+2+2)*(272+10+2+2)*60 = 9009000

-        .left_margin    = 1,        .right_margin    = 33,
-        .upper_margin    = 1,        .lower_margin    = 0,
-        .hsync_len    = 5,        .vsync_len    = 1,
+        .left_margin    = 2,        .right_margin    = 2,
+        .upper_margin    = 12,        .lower_margin    = 2,
+        .hsync_len    = 41,        .vsync_len    = 10,

-        .sync        = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+        /*.sync        = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,*/
        .vmode        = FB_VMODE_NONINTERLACED,
    },
};

static struct fb_monspecs at91fb_default_monspecs = {
-    .manufacturer    = "HIT",
-    .monitor    = "TX09D70VM1CCA",
+    .manufacturer    = "SHA",
+    .monitor    = "LQ043T1DG01",

    .modedb        = at91_tft_vga_modes,
    .modedb_len    = ARRAY_SIZE(at91_tft_vga_modes),
-    .hfmin        = 15000,
-    .hfmax        = 64000,
+    .hfmin        = 64000,
+    .hfmax        = 80000,
    .vfmin        = 50,
-    .vfmax        = 150,
+    .vfmax        = 200,
};
-
+ 
#define AT91SAM9263_DEFAULT_LCDCON2     (ATMEL_LCDC_MEMOR_LITTLE \
                    | ATMEL_LCDC_DISTYPE_TFT \
                    | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...