User Tag List

Показано с 1 по 10 из 303

Тема: Вывод изображения ретрокомпьютера на TFT-матрицу ("народный контроллер")

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #9

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    262
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от duke_yusupov Посмотреть сообщение
    Можете подсказать - какие параметры в первую очередь важны для определения матрицы? Как я понял - разрешение тут вообще особого значения не имеет. Тогда что?
    Я правильно понимаю вопрос: хочется, чтоб были какие-то "основные" параметры, чтобы "что-то было на экране", а потом уже настраивать "менее важное" ?
    Так не получится, некоторые "неважные" параметры могут также приводить к тому, что матрица будет молчать.
    Режим интерфейса важен, флаги инверсии синхронизации, пиксельклок. При несоответствии между собой DH-параметров (DHTotal включает в себя видимую строку, все зазоры и длину синхры и если они не будут между собой составлять правильный набор под конкретную матрицу, она не будет работать. Может для большинства матриц к каждому разрешению все прочие параметры примерно одинаковы, но я натыкался на такие, с которыми надо колдовать.

    Еще вариант решения: если есть полная сборка китайской прошивки, которая работает с искомой матрицей, а в ней указана модель матрицы (такое они часто в имени файла пишут), то ищем даташит на эту модель или файл ее описания в sdk- вполне может быть. И всю структуру PanelType переносим оттуда в урезанную прошивку через конфигуратор.

    at080en01 работала, правильно ?

    Upd: в sdk нет ни одной матрицы TTL 1024x600, причем все примеры ttl там 4:3. Так что под at080en01 не нашел.

    Upd2: в китайской сборке PCB800099-TTL1024x600-24bit-at080en01-2av1vga1hdmi-5key-IR2.bin не нашел структур, похожих на PanelType (искал по горизональному разрешению 1024 = 0x0400, после него идет в структуре PanelType идет значение DHTotal и повторяется его значение для PAL и NTSC (не знаю, зачем, но трижды) , оно больше и в пределах 1200-1600, то есть было бы либо 04 00 05 xx 05 xx ..., либо 04 00 06 xx 06 xx ..., но похожего нету). Видимо там все из других sdk собрано или просто отличаются структуры описания параметров матрицы (если таковые есть). В общем, результат "поискать в бинарнике" неуспешный.

    Upd3: поглазел во все описания ttl-матриц, и кардинальное отличие для них вижу в частотах пиксельклока - 20, 25, 32, 39, 43mhz (много ниже значений для LVDS). Так что возможно, что это как раз тот параметр, с которым надо будет поиграть.

    Вот навскидку конфиг матрицы TTL 1024x600 24bit (параметры TTL DELAY и TTL DCLK мне не ясны, может с ними тоже стоит поиграть, как и с частотой):



    Ну и для справки
    Структура PanelType

    Скрытый текст

    Код:
    typedef struct
    {
        UINT8 PanelStyle;                 // Panel Style
        UINT8 PanelConfig;                // Panel Configuration
    
        UINT16 DHStartPos;                // Display Horizontal Start Position
        UINT16 DHWidth;                   // Display Horizontal Width
    
        UINT16 DHTotal;                   // Display Horizontal Total Clock Number in One Display Line
        UINT16 PalDHTotal;                // Display Horizontal Total Clock Number in One Display Line for CVBS PAL
        UINT16 NtscDHTotal;               // Display Horizontal Total Clock Number in One Display Line for CVBS NTSC
    
        UINT16 DVStartPos;                // Display Vertical Start Position
        UINT16 DVHeight;                  // Display Vertical Height
    
        UINT16 DVTotal;                   // Display Vertical Total Line Number in One Frame
    
        UINT8 DHSyncWidth;                // Display H Sync Width
        UINT8 DVSyncHeight;               // Display V Sync Height
    
        UINT16 PixelClock;                // Typical Pixel Clock in MHz
    
        UINT16 HSyncMaxFreq;              // H Sync Max Freq Unit in 0.1 kHZ
        UINT16 HSyncMinFreq;              // H Sync Min Freq Unit in 0.1 kHZ
        UINT16 VSyncMaxFreq;              // V Sync Max Freq Unit in 0.1 HZ
        UINT16 VSyncMinFreq;              // V Sync Min Freq Unit in 0.1 HZ
    
        UINT8 TTL20;
    
    } PanelType;
    [свернуть]


    Пример описания какой-то матрицы TTL 800x600 из sdk

    Скрытый текст

    Код:
    // 800x600
    code PanelType Panel1 =
    {
    	// Panel Style
        _PANEL_TTL |		//_PANEL_TTL,_PANEL_HZ,_PANEL_LVDS,_PANEL_RSDS
        //_AUTOCALC_PIXCLK |
        _LVDS_MAP1 |		//_LVDS_MAP1,_LVDS_MAP2
        _DISP_24_BIT | 		//_DISP_24_BIT,_DISP_18_BIT
        //_RSDS_GC_SWAP |
        //_RSDS_HL_SWAP |
        //_RSDS_PN_SWAP |
        0x00,                            
    
    	// Panel Configuration
    	//_DHS_MASK |
    	_DISP_EO_SWAP |
    	//_DISP_RB_SWAP |
    	//_DISP_ML_SWAP |
    	_DISP_SINGLE_PORT |	//_DISP_SINGLE_PORT,_DISP_DOUBLE_PORT
    	//_DVS_INVERT |
    	//_DHS_INVERT |
    	//_DEN_INVERT |
    	0x00,
    
    
    	32,         // Display Horizontal Start Position
    	800,        // Display Horizontal Width
    
    	980,        // 1Display Horizontal Total Clock Number in One Display Line
    
    	980,        // Display Horizontal Total Clock Number in One Display Line for CVBS PAL
    	980,        // Display Horizontal Total Clock Number in One Display Line for CVBS NTSC
    
    	16,         // Display Vertical Start Position
    	600,        // Display Vertical Height
    
    	750,        // Display Vertical Total Line Number in One Frame
    
    	16,         // Display H Sync Width
    	3,          // Display V Sync Height
    
    	43,         // Typical Pixel Clock in MHz
    
    	1100,		// H Sync Max Freq Unit in 0.1 kHZ
    	100,		// H Sync Min Freq Unit in 0.1 kHZ
    	880,		// V Sync Max Freq Unit in 0.1 HZ
    	490,		// V Sync Min Freq Unit in 0.1 HZ
    
        // TTL setting   
        (3 << 4) |  // Delay
        (1 << 1) |    // DCLK output enable
        0x00,         // DCLK Polarity
    
    };
    [свернуть]


    значения использованных дефиниций (не всех , но в целом можно понять, какие где биты играют роль)

    Скрытый текст

    Код:
    //--------------------------------------------------
    // Definitions for Panel Settings
    //--------------------------------------------------
    // PanelType.PanelStyle Define's
    
    // BIT 0 ~ 2
    #define _PANEL_TTL                     	0
    #define _PANEL_HZ                       1
    #define _PANEL_LVDS                   	2
    #define _PANEL_RSDS                   	3
    
    #define _AUTOCALC_PIXCLK 				_BIT2
    
    #define _LVDS_MAP1						_BIT3   			//LVDS Bit-Mapping Table 1
    #define _LVDS_MAP2						0x00   			    //LVDS Bit-Mapping Table 2
    
    #define _DISP_24_BIT                    0x00
    #define _DISP_18_BIT                    _BIT4
    
    #define _RSDS_GC_SWAP                   _BIT7
    #define _RSDS_HL_SWAP                   _BIT6
    #define _RSDS_PN_SWAP                   _BIT5
    
    #define GET_PNL_OUTPUT_BUS()			(Panel[ucPanelSelect]->PanelStyle & 0x03)
    #define GET_AUTOCALC_PIXCLK()			(Panel[ucPanelSelect]->PanelStyle & _BIT2)
    #define GET_LVDS_MAP()					(Panel[ucPanelSelect]->PanelStyle & _BIT3)
    #define GET_18BIT_EN()					(Panel[ucPanelSelect]->PanelStyle & _BIT4)
    
    //--------------------------------------------------
    // Definitions for Display Single/Double Port, Even/Odd Swap,
    // Red/Blue Swap, MSB/LSB Swap, 24/18 Bit, Green/Clock Swap,
    // High/Low Swap and PN Swap
    //--------------------------------------------------
    #define _DHS_MASK							_BIT7
    #define _DISP_EO_SWAP                   	_BIT6
    #define _DISP_RB_SWAP                   	_BIT5
    #define _DISP_ML_SWAP                   	_BIT4
    
    #define _DISP_SINGLE_PORT               	0x00
    #define _DISP_DOUBLE_PORT               	_BIT3
    
    #define _DVS_INVERT                     	_BIT2
    #define _DHS_INVERT                     	_BIT1
    #define _DEN_INVERT                     	_BIT0
    
    #define GET_DOUBLE_PORT_EN()                (Panel[ucPanelSelect]->PanelConfig & _BIT3)
    [свернуть]
    Последний раз редактировалось valerium; 05.08.2023 в 21:35.

    Этот пользователь поблагодарил valerium за это полезное сообщение:

    duke_yusupov(06.08.2023)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 2
    Последнее: 11.09.2020, 09:36
  2. Ответов: 60
    Последнее: 19.06.2020, 13:02
  3. Ответов: 0
    Последнее: 15.08.2010, 14:38
  4. Вывод изображения
    от Shnurkov в разделе Изображение
    Ответов: 5
    Последнее: 10.02.2007, 15:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •