реклама на сайте
подробности

 
 
> подключение монитора к AT91SAM9261
ZAA
сообщение Dec 15 2009, 16:20
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906



Всем добрый день)
Необходимо подключить обычный CRT монитор с разрешением 800х600 к отладочной плате AT91SAM9261. Какие параметры в исходниках u-boot'а нужно поменять, чтобы добиться появления изображения на мониторе (пробовали менять vl_clk и разрешение в файле board/atmel/at91sam9261/at91sam9261.c - не помогло).
Подскажите, пожалуйста, если кто-то сталкивался с подобным?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Dec 16 2009, 22:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ZAA @ Dec 15 2009, 19:20) *
пробовали менять vl_clk и разрешение в файле board/atmel/at91sam9261/at91sam9261.c - не помогло

Хоть бы написали, к чему это привело в результате.

Цитата(ZAA @ Dec 15 2009, 19:20) *
Подскажите, пожалуйста, если кто-то сталкивался с подобным?

Глянул исходники - фреймбуфер для LCD под платформу 9261EK расположен в SRAM, поэтому просто поменять разрешение нельзя, нужно сначала перенести его в SDRAM, как это сделано для 9G10.

Цитата(Jury093 @ Dec 16 2009, 21:48) *
А разве 9261 умеет VGA?

Умеет.
Go to the top of the page
 
+Quote Post
ZAA
сообщение Dec 17 2009, 15:55
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906



Цитата(aaarrr @ Dec 17 2009, 01:37) *
Хоть бы написали, к чему это привело в результате.

Опишу проблему подробнее. smile3046.gif
Задача - подключить к отладочной плате AT91SAM9261-EK VGA монитор с разрешением 800x600 и на 60 ГЦ. Глубина цвета - 8 бит на пиксель. Цифровые сигналы RGB, DCLK и LCDEN перехватываются и посылаются на конвертер TFT-VGA, реализованный на микросхеме ADV7125(самодельный переходник).
Проблемы:
1) Не можем получить частоту выше 18 Мгц на линии DCLK. Для разрешения 800x600@60Hz необходимо F=800*600*60*0.8 = 36Mhz (данная формула взята из описания на микросхему ADV7125).
В файле board/atmel/at91sam9261/at91sam9261.c меняем настройки:
Изначально:
Код
vidinfo_t panel_info = {
    vl_col:        240,
            vl_row:        320,
    vl_clk:        4965000,
    vl_sync:    ATMEL_LCDC_INVLINE_INVERTED |
            ATMEL_LCDC_INVFRAME_INVERTED,
    vl_bpix:    3,
    vl_tft:        1,
    vl_hsync_len:    5,
    vl_left_margin:    1,
    vl_right_margin:33,
    vl_vsync_len:    1,
    vl_upper_margin:1,
    vl_lower_margin:0,
    mmio:        AT91SAM9261_LCDC_BASE,
};

Мы сделали:
Код
vidinfo_t panel_info = {

    vl_col:        800,        
    vl_row:        600,        
    //vl_clk:        25175000,
    vl_clk:        39720000,
    vl_bpix:        4,
    vl_tft:        1,

    vl_hsync_len:    96,    //HPW    
    vl_left_margin:    48,    //HBP
    vl_right_margin:    16,    //HFP

    vl_vsync_len:    2,    //VPW
    vl_upper_margin:    31,    //VBP
    vl_lower_margin:    12,     //VFP

    mmio:        AT91SAM9261_LCDC_BASE,
};

В файле 'atmel_lcdfb.c' делитель (CLKVAL) подбирается автоматически:
Код
            /* Set pixel clock */
    value = get_lcdc_clk_rate(0) / panel_info.vl_clk;
    if (get_lcdc_clk_rate(0) % panel_info.vl_clk)
        value++;
    value = (value / 2) - 1;

    if (!value) {
        lcdc_writel(panel_info.mmio, ATMEL_LCDC_LCDCON1, ATMEL_LCDC_BYPASS);
    } else
        lcdc_writel(panel_info.mmio, ATMEL_LCDC_LCDCON1,
                value << ATMEL_LCDC_CLKVAL_OFFSET);

где:
Код
static inline unsigned long get_lcdc_clk_rate(unsigned int dev_id)
    {
        return AT91_MASTER_CLOCK;    
    }

AT91_MASTER_CLOCK определен в файле include/configs/at91sam9261ek.h
Код
#define AT91_MAIN_CLOCK        198656000    /* from 18.432 MHz crystal */
#define AT91_MASTER_CLOCK    99328000    /* peripheral = main / 2 */

Функция get_lcdc_clk_rate() возвращает #define-частоту. Но какая частота при этом реальная?
После прошивки U-Boot'а и запуска контроллера сигнала DCLK нет вообще. Есть подозрение, что МК не может обеспечить такую частоту,так как работает от SLCK (Low-power 32768 Hz Slow Clock Oscillator ). Возможно, плохо искали, но ни в одном файле мы не нашли места, в котором бы устанавливался Master Clock (MCK). А MCK может быть и 200Мгц.
В чем может заключаться проблема и как получить рабочую частоту в 36 МГц и более???

2)Также есть путаница с параметрами INVVD, INVFRAME, INVLINE, INVCLK, INVVDVAL. В разных примерах их настаривают по-разному. Плюс еще нужно учесть параметры VGA-режима.
И еще - DMABDDR1 - это адрес, по которому находится выводимая на экран картинка??

Спасибо, сорри за обилие вопросов)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 17 2009, 16:33
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ZAA @ Dec 17 2009, 18:55) *
1) Не можем получить частоту выше 18 Мгц на линии DCLK.
...
После прошивки U-Boot'а и запуска контроллера сигнала DCLK нет вообще. Есть подозрение, что МК не может обеспечить такую частоту,так как работает от SLCK (Low-power 32768 Hz Slow Clock Oscillator ). Возможно, плохо искали, но ни в одном файле мы не нашли места, в котором бы устанавливался Master Clock (MCK). А MCK может быть и 200Мгц.
В чем может заключаться проблема и как получить рабочую частоту в 36 МГц и более???

Так и не понял, DCLK есть, но не выше 18МГц, или же ее нет вообще?
Судя по наличию дефайна CONFIG_SKIP_LOWLEVEL_INIT U-boot в этой конфигурации тактирование не настраивает, а пользуется тем, что получено от bootstrap'а - к нему и вопросы.
Кроме того, в вашем случае DCLK будет равна MCK/2, т.к. нечетные делители не предусмотрены.

Цитата(ZAA @ Dec 17 2009, 18:55) *
2)Также есть путаница с параметрами INVVD, INVFRAME, INVLINE, INVCLK, INVVDVAL. В разных примерах их настаривают по-разному. Плюс еще нужно учесть параметры VGA-режима.

Все в 0. Монитор поймет.

Цитата(ZAA @ Dec 17 2009, 18:55) *
И еще - DMABDDR1 - это адрес, по которому находится выводимая на экран картинка??

Да.
Go to the top of the page
 
+Quote Post
Viatcheslav_CPU
сообщение Dec 21 2009, 09:11
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 20-12-09
Пользователь №: 54 366



Цитата(aaarrr @ Dec 17 2009, 21:33) *
Так и не понял, DCLK есть, но не выше 18МГц, или же ее нет вообще?
Судя по наличию дефайна CONFIG_SKIP_LOWLEVEL_INIT U-boot в этой конфигурации тактирование не настраивает, а пользуется тем, что получено от bootstrap'а - к нему и вопросы.
Кроме того, в вашем случае DCLK будет равна MCK/2, т.к. нечетные делители не предусмотрены.


Здравствуйте. Мы работаем вместе над этой задачей.
Все верно, DCLK есть, но не выше 18 МГц.
Решили проверить частоту процессора. Вывели на ножку В8 (PCK1) частоту PLLA с делителем 16. В итоге получили 200/16 Мгц. Т.е. процессор работает на 200 Мгц, а master clock (MCK) они настраивают на 100 Мгц. В bootstrap'e.
Но в случае вывода частоты на DCLK и PCK1 больше 20 Мгц, на осцилографе получается какой-то модулированный сигнал. По напряжению находится в пределах 1.65В и 1.9В - нижняя и верхняя граница.
Почему так происходит??? У ADV7125 (tft-vga) порог единицы = 2В. Использовали логический анализатор, настроенный на порог срабатывания 2В, не захватывает сигнал... В любом случае меандр должен быть в пределах 0 - 3,3В. Так ведь??
Почему не можем посмотреть сигнал в 30-40 Мгц????.....

Вот, к примеру, сигнал DCLK ghb 25 Мгц. Как я понимаю такого не должно быть... Должен быть в диапазоне от 0 до 3,3В.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 21 2009, 15:10
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Viatcheslav_CPU @ Dec 21 2009, 12:11) *
Почему не можем посмотреть сигнал в 30-40 Мгц????.....

Полоса пропускания у вашего прибора какая?
Go to the top of the page
 
+Quote Post
Viatcheslav_CPU
сообщение Dec 21 2009, 16:40
Сообщение #7





Группа: Участник
Сообщений: 11
Регистрация: 20-12-09
Пользователь №: 54 366



Цитата(aaarrr @ Dec 21 2009, 20:10) *
Полоса пропускания у вашего прибора какая?


Простите, не понял вашего вопроса....
Микросхема ADV7125 расчитана от 0.5Мгц до 140 Мгц.
По идее, для того чтобы получить vga сигналы, необходимо: RGB сигналы, CLK, и data enable. В pdf сказано, что этого хватит, чтобы ЦАП сделал свое дело.
Что в таком случае требуется от меня? RGB сигналы есть, там, что-то бегает, enable тоже дергается. Только проблемы с частотой. Которую я просто пытаюсь поменять, в настроенной уже системе. А может быть такое, что щуп у осцилографа вносит емкость и при этом происходит искажение сигнала??? Даже если щупом не лазить, то на выходе ADV пустота.
Сигналы hsync и vsync формируются тоже автоматически в зависимости от задаваемого разрешения. Тут по идее все делается автоматически за исключением частоты DCLK.

Да, кстати, у нас все напаянно проводками... Это может влиять на работоспособность?? Попытаюсь завтра сфоткать, как это выглядит.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 21 2009, 17:02
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Viatcheslav_CPU @ Dec 21 2009, 19:40) *
Простите, не понял вашего вопроса....

Какова полоса пропускания у вашего осциллографа? Есть подозрение, что он имеет параметры 50MHz и 100MSPS, что для наблюдения сигналов выше 18MHz явно недостаточно.

Цитата(Viatcheslav_CPU @ Dec 21 2009, 19:40) *
Да, кстати, у нас все напаянно проводками... Это может влиять на работоспособность?? Попытаюсь завтра сфоткать, как это выглядит.

Может, конечно, но вряд ли фатально.

Измерьте частоту сигналов VSYNC и HSYNC - они относительно низкочастотные. И приведите схему включения ADV7125.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 21 2009, 21:29
Сообщение #9


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(aaarrr @ Dec 21 2009, 20:02) *
И приведите схему включения ADV7125.

собственно правильная схема включения есть для кита на авр32
я так понимаю что на SAM9261 отличий быть не должно...
вот схема кита на AP7000(авр32):
http://www.atmel.com/dyn/resources/prod_do..._schematics.pdf

и я сам подключал через ADV7125 на NGW100(AP7000) используя схему от STK1000
Go to the top of the page
 
+Quote Post
Viatcheslav_CPU
сообщение Dec 22 2009, 09:37
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 20-12-09
Пользователь №: 54 366



Вот сам правленный код:

файл : at91sam9261ek.c
CODE

vidinfo_t panel_info = {

vl_col: 640,
vl_row: 480,
vl_clk: 25175000,
vl_bpix: 3,
vl_tft: 1,

vl_hsync_len: 64, //HPW
vl_left_margin: 48, //HBP
vl_right_margin: 16, //HFP

vl_vsync_len: 2, //VPW
vl_upper_margin: 33, //VBP
vl_lower_margin: 2, //VFP

mmio: AT91SAM9261_LCDC_BASE,
};



файл :atmel_lcdfb.c
Тут я правлю регистр LCDCON2 и выставляю тайминги.
CODE

void lcd_ctrl_init(void *lcdbase)
{
unsigned long value;

....
/* Initialize control register 2 */
#ifdef CONFIG_AVR32
value = ATMEL_LCDC_MEMOR_BIG | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE;
#else
value = ATMEL_LCDC_MEMOR_LITTLE | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE;
#endif
/*
if (panel_info.vl_tft)
value |= ATMEL_LCDC_DISTYPE_TFT;

if (!(panel_info.vl_sync & ATMEL_LCDC_INVLINE_INVERTED))
value |= ATMEL_LCDC_INVLINE_INVERTED;
if (!(panel_info.vl_sync & ATMEL_LCDC_INVFRAME_INVERTED))
value |= ATMEL_LCDC_INVFRAME_INVERTED;
value |= (panel_info.vl_bpix << 5);
lcdc_writel(panel_info.mmio, ATMEL_LCDC_LCDCON2, value);
*/
//------------ MY -------------------------------------------------
if (panel_info.vl_tft)
value |= ATMEL_LCDC_DISTYPE_TFT;

value |= ATMEL_LCDC_INVVD_NORMAL; // write 0. not inverted
value |= ATMEL_LCDC_INVFRAME_NORMAL; // write 0. not inverted
value |= ATMEL_LCDC_INVLINE_NORMAL; // write 0. not inverted
value |= ATMEL_LCDC_INVCLK_INVERTED; // write 1. inverted.
value |= ATMEL_LCDC_INVDVAL_NORMAL; // write 0. not inverted

value |= (panel_info.vl_bpix << 5);

value |= ATMEL_LCDC_SCANMOD_SINGLE; // write 0. single scan.

value |= ATMEL_LCDC_IFWIDTH_4; // For TFT mode doesn't make any sense. Just in case write 0.

lcdc_writel(panel_info.mmio, ATMEL_LCDC_LCDCON2, value);
//--------------------------------------------------------------------


/* Vertical timing */

value = panel_info.vl_lower_margin;
value |= (panel_info.vl_upper_margin) << ATMEL_LCDC_VBP_OFFSET;
value |= (panel_info.vl_vsync_len - 1) << ATMEL_LCDC_VPW_OFFSET;
value |= 0 << ATMEL_LCDC_VHDLY_OFFSET; // MY
lcdc_writel(panel_info.mmio, ATMEL_LCDC_TIM1, value);

/* Horizontal timing */
value = (panel_info.vl_right_margin) << ATMEL_LCDC_HFP_OFFSET;
value |= (panel_info.vl_hsync_len - 1) << ATMEL_LCDC_HPW_OFFSET;
value |= (panel_info.vl_left_margin);
lcdc_writel(panel_info.mmio, ATMEL_LCDC_TIM2, value);


....
}


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ZAA   подключение монитора к AT91SAM9261   Dec 15 2009, 16:20
- - Jury093   Цитата(ZAA @ Dec 15 2009, 19:20) Необходи...   Dec 16 2009, 18:48
|- - ZAA   Цитата(aaarrr @ Dec 17 2009, 01:37) Хоть ...   Dec 17 2009, 03:50
|- - Viatcheslav_CPU   Цитата(aaarrr @ Dec 21 2009, 22:02) Каков...   Dec 22 2009, 06:14
|- - aaarrr   Цитата(Viatcheslav_CPU @ Dec 22 2009, 09...   Dec 22 2009, 15:54
|- - Viatcheslav_CPU   Цитата(aaarrr @ Dec 22 2009, 21:54) Схема...   Dec 23 2009, 08:41
|- - aaarrr   Цитата(Viatcheslav_CPU @ Dec 23 2009, 11...   Dec 23 2009, 08:49
|- - Viatcheslav_CPU   Цитата(aaarrr @ Dec 23 2009, 13:49) Очеви...   Dec 23 2009, 10:36
|- - aaarrr   Цитата(Viatcheslav_CPU @ Dec 23 2009, 13...   Dec 23 2009, 11:02
|- - Viatcheslav_CPU   Цитата(aaarrr @ Dec 23 2009, 17:02) Да не...   Dec 23 2009, 11:05
|- - AlexN   Цитата(Viatcheslav_CPU @ Dec 23 2009, 18...   Dec 23 2009, 14:46
- - aaarrr   Как почему? Если не задействуете два старших бита,...   Dec 23 2009, 11:20
|- - Viatcheslav_CPU   Все исправил. Теперь цвета насыщенные и похоже на ...   Dec 24 2009, 05:50
- - Snegovik86   Доброго времени суток! С образованием у нас де...   Jun 8 2010, 10:51


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01524 секунд с 7
ELECTRONIX ©2004-2016