|
|
  |
Настройка LCD контроллера в AT91SAM9263, Непонятно. |
|
|
|
Oct 19 2009, 11:00
|

Знающий
   
Группа: Свой
Сообщений: 630
Регистрация: 2-08-05
Пользователь №: 7 294

|
Дисплей 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. Сама панель рабочая, с другим видеоконтроллером работает нормально.
Причина редактирования: Оформление исходников
--------------------
летаю на пепелаце...
|
|
|
|
|
Oct 19 2009, 12:32
|

Знающий
   
Группа: Свой
Сообщений: 630
Регистрация: 2-08-05
Пользователь №: 7 294

|
Цитата(aaarrr @ Oct 19 2009, 15:49)  Margin - это, как я понимаю, все-таки front- и back porch. Вот это - ".refresh = 25" - какое-то фуфло, ибо по логике вещей должно быть 60. С интерлейсом вроде бы все должно быть понятно.
Осциллографом посмотреть не пробовали? Пробовал и 60 Герц, особо не меняется. Именно сейчас осциллографа нет под рукой. Завтра буду им рассматривать. Пока пытаюсь понять в чем может быть проблема. Цитата(at90 @ Oct 19 2009, 16:13)  Немного OFF. А никто не знает название матрицы от SONY PSP Slim? LS0DZC0031
--------------------
летаю на пепелаце...
|
|
|
|
|
Oct 20 2009, 06:33
|

Знающий
   
Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814

|
вот случайно нашел на одном из форумов буржуйских... может чем то поможет I solved the problem. It works with this settings in the icnova_base.c CODE 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
--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
|
|
|
|
|
Oct 20 2009, 07:05
|

Знающий
   
Группа: Свой
Сообщений: 630
Регистрация: 2-08-05
Пользователь №: 7 294

|
Цитата(at90 @ Oct 20 2009, 10:33)  ... Спасибо, это я тоже видел. Сегодня посижу с осциллографом. Насчет даташита на слимовый ЖКИ - у меня его нет, честно говоря не искал. Думаю, что должен быть в инете.
Сообщение отредактировал IgorKossak - Oct 20 2009, 09:05
Причина редактирования: Бездумное цитирование
--------------------
летаю на пепелаце...
|
|
|
|
|
Oct 20 2009, 08:14
|

Знающий
   
Группа: Свой
Сообщений: 630
Регистрация: 2-08-05
Пользователь №: 7 294

|
Цитата(at90 @ Oct 20 2009, 11:09)  LS0DZC0031 вроде с виду такая как и LQ043. А меня инетересует матрица которая очень тонкая и без металической рамки..... http://www.focalprice.com/GS136X/LCD_Repla..._2000_Slim.htmlЭто экран от psp2, может вы ищете от psp3 ?
Эскизы прикрепленных изображений
--------------------
летаю на пепелаце...
|
|
|
|
|
Oct 20 2009, 19:43
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Судя по всему, речь идет о драйвере фреймбуфера. Я бы посоветовал пристально посмотреть на функции типа 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 Цитата(АДИКМ @ Oct 19 2009, 15:00)  Дисплей 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. Сама панель рабочая, с другим видеоконтроллером работает нормально.
|
|
|
|
|
Oct 28 2009, 20:19
|
Участник

Группа: Свой
Сообщений: 34
Регистрация: 7-07-04
Из: Москва
Пользователь №: 283

|
Вот мой реально работающий код инициализации 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)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|