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

Подключение дисплея к плате с AT91SAM9260

Здравствуйте. Долго думал куда разместить тему в итоге решил сюда, если был не прав прошу прощения.

 

Вкратце. Есть плата с микроконтроллером AT91SAM9260 (http://electronix.ru/forum/index.php?showforum=196). К нему подключен видеоконтроллер S1D13506 (http://www.gaw.ru/pdf/lcd/Chips/Epson/S1D13506_X25B-Q-001-06.pdf). Пытаюсь подключить дисплей T-55343GD035JU-LW-ADN (http://media.digikey.com/PDF/Data%20Sheets/Optrex%20PDFs/T-55343GD035JU-LW-ADN.pdf). Возник вопрос как правильно настроить регистры контроллера видео для работы с этим дисплеем.

 

Искал пример и нашел http://www.datasheetarchive.com/pdf/getfil....pdf&scan=n. Наиболее похожий по регистрам контроллер оказался S1D13517 (http://vdc.epson.com/index.php?option=com_docman&task=doc_download&gid=1706&Itemid=99). Ввел значения геристров как нужно но возникли пара вопросов:

 

1) Регистр 36h в контроллере S1D13506 и соответствующий ему регистр 20h в контроллере S1D13517. В примере подключения дисплея значение которое получается должно быть равно 2 а судя по документации на регистр 36h он никак не может быть меньше 8. Какое значение стоит выставить?

2) Не могу понять как выставить значение клокового сигнала для дисплея FPSHIFT. Судя по документации на контроллер S1D13506 это регистр 0014h. Частота CLKI=40MHz, MCLK=BUSCLK=50MHz. Делитель есть только на 4, т.е частоты 8MHz как указано в примере не получается выставить.

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


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

Вот тут

http://electronix.ru/forum/index.php?showforum=196

не нашли решения проблемы?

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

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


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

К сожалению нет. Там разработчики показывали вроде как что подключили дисплей от PSP но это было на ранних этапах создания платы и исходников инициализации у них нет

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


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

В ядре Linux есть пример настройки для этого контроллера

arch/arm/mach-at91/board-yl-9200.c

static struct s1d13xxxfb_regval yl9200_s1dfb_initregs[] =
{
        {S1DREG_MISC,                   0x00},  /* Miscellaneous Register*/
        {S1DREG_COM_DISP_MODE,          0x01},  /* Display Mode Register, LCD only*/
        {S1DREG_GPIO_CNF0,              0x00},  /* General IO Pins Configuration Register*/
        {S1DREG_GPIO_CTL0,              0x00},  /* General IO Pins Control Register*/
...

 

правда разрешение LCD судя по всему 640х480.

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


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

К сожалению, то что в этом примере действительно не подходит. Ради интереса просто вставил конфигурацию оттуда и на дисплее гдето верхняя треть стала черной и дергалась.

 

Порыл документацию на видео контроллер. Нашел утилиту для генерации конфигов с официального сайта (http://vdc.epson.com/index.php?option=com_docman&task=cat_view&gid=169&Itemid=99 файл: S1D13506 Win32 Utilities (CFG, PLAY, SHOW, BMP, FILT, and SWIVEL)).

В утилите выставил необходимые параметры (параметры TFT FPLINE Start Position, Pulse Width и TFT FPFRAME Start Position, Pulse Width не трогал, если честно я так и не понял как их выставлять):

f79de45ba13d5d97f1108cc735874a5e.jpg

 

Был сгенерирован файл заголовочный со значениями регистров:

//----------------------------------------------------------------------------
//
//  File generated by S1D13506CFG.EXE
//
//  Copyright (c) 2000,2001 Epson Research and Development, Inc.
//  All rights reserved.
//
//  PLEASE NOTE: If you FTP this file to a non-Windows platform, make
//               sure you transfer this file using ASCII, not BINARY mode.
//
//----------------------------------------------------------------------------

// Panel:  (active)   320x240 78Hz TFT Single 12-bit (PCLK=CLKI/3=8.391MHz) 
// Memory: 50ns EDO-DRAM 2-CAS#: 8ms refresh (MCLK=BUSCLK=33.333MHz) 


#define S1D_DISPLAY_WIDTH           320
#define S1D_DISPLAY_HEIGHT          240
#define S1D_DISPLAY_BPP             4
#define S1D_DISPLAY_SCANLINE_BYTES  160
#define S1D_PHYSICAL_VMEM_ADDR      0x00000000L
#define S1D_PHYSICAL_VMEM_SIZE      0x200000L
#define S1D_PHYSICAL_REG_ADDR       0x00000000L
#define S1D_PHYSICAL_REG_SIZE       0x200
#define S1D_DISPLAY_PCLK            8391
#define S1D_PALETTE_SIZE            16
#define S1D_FRAME_RATE              78
#define S1D_POWER_DELAY_ON          50
#define S1D_POWER_DELAY_OFF         1200
#define S1D_LCD
#define S1D_HWBLT
#define S1D_REGDELAYOFF             0xFFFE
#define S1D_REGDELAYON              0xFFFF

#define S1D_WRITE_PALETTE(p,i,r,g,b)  \
{  \
    ((volatile S1D_VALUE*)(p))[0x1E2/sizeof(S1D_VALUE)] = (S1D_VALUE)(i);  \
    ((volatile S1D_VALUE*)(p))[0x1E4/sizeof(S1D_VALUE)] = (S1D_VALUE)(r);  \
    ((volatile S1D_VALUE*)(p))[0x1E4/sizeof(S1D_VALUE)] = (S1D_VALUE)(g);  \
    ((volatile S1D_VALUE*)(p))[0x1E4/sizeof(S1D_VALUE)] = (S1D_VALUE)(b);  \
}

#define S1D_READ_PALETTE(p,i,r,g,b)  \
{  \
    ((volatile S1D_VALUE*)(p))[0x1E2/sizeof(S1D_VALUE)] = (S1D_VALUE)(i);  \
    r = ((volatile S1D_VALUE*)(p))[0x1E4/sizeof(S1D_VALUE)];  \
    g = ((volatile S1D_VALUE*)(p))[0x1E4/sizeof(S1D_VALUE)];  \
    b = ((volatile S1D_VALUE*)(p))[0x1E4/sizeof(S1D_VALUE)];  \
}

typedef unsigned short S1D_INDEX;
typedef unsigned char  S1D_VALUE;

typedef struct
{
    S1D_INDEX Index;
    S1D_VALUE Value;
} S1D_REGS;

static S1D_REGS aS1DRegs[] = 
{
    {0x0001,0x00},   // Miscellaneous Register
    {0x01FC,0x00},   // Display Mode Register
    {0x0004,0x00},   // General IO Pins Configuration Register
    {0x0008,0x00},   // General IO Pins Control Register
    {0x0010,0x01},   // Memory Clock Configuration Register
    {0x0014,0x20},   // LCD Pixel Clock Configuration Register
    {0x0018,0x00},   // CRT/TV Pixel Clock Configuration Register
    {0x001C,0x02},   // MediaPlug Clock Configuration Register
    {0x001E,0x01},   // CPU To Memory Wait State Select Register
    {0x0020,0x00},   // Memory Configuration Register
    {0x0021,0x04},   // DRAM Refresh Rate Register
    {0x002A,0x12},   // DRAM Timings Control Register 0
    {0x002B,0x02},   // DRAM Timings Control Register 1
    {0x0030,0x25},   // Panel Type Register
    {0x0031,0x00},   // MOD Rate Register
    {0x0032,0x27},   // LCD Horizontal Display Width Register
    {0x0034,0x0A},   // LCD Horizontal Non-Display Period Register
    {0x0035,0x01},   // TFT FPLINE Start Position Register
    {0x0036,0x0B},   // TFT FPLINE Pulse Width Register
    {0x0038,0xEF},   // LCD Vertical Display Height Register 0
    {0x0039,0x00},   // LCD Vertical Display Height Register 1
    {0x003A,0x15},   // LCD Vertical Non-Display Period Register
    {0x003B,0x0A},   // TFT FPFRAME Start Position Register
    {0x003C,0x01},   // TFT FPFRAME Pulse Width Register
    {0x0040,0x02},   // LCD Display Mode Register
    {0x0041,0x00},   // LCD Miscellaneous Register
    {0x0042,0x00},   // LCD Display Start Address Register 0
    {0x0043,0x00},   // LCD Display Start Address Register 1
    {0x0044,0x00},   // LCD Display Start Address Register 2
    {0x0046,0x50},   // LCD Memory Address Offset Register 0
    {0x0047,0x00},   // LCD Memory Address Offset Register 1
    {0x0048,0x00},   // LCD Pixel Panning Register
    {0x004A,0x00},   // LCD Display FIFO High Threshold Control Register
    {0x004B,0x00},   // LCD Display FIFO Low Threshold Control Register
    {0x0050,0x4F},   // CRT/TV Horizontal Display Width Register
    {0x0052,0x13},   // CRT/TV Horizontal Non-Display Period Register
    {0x0053,0x01},   // CRT/TV HRTC Start Position Register
    {0x0054,0x0B},   // CRT/TV HRTC Pulse Width Register
    {0x0056,0xDF},   // CRT/TV Vertical Display Height Register 0
    {0x0057,0x01},   // CRT/TV Vertical Display Height Register 1
    {0x0058,0x2B},   // CRT/TV Vertical Non-Display Period Register
    {0x0059,0x09},   // CRT/TV VRTC Start Position Register
    {0x005A,0x01},   // CRT/TV VRTC Pulse Width Register
    {0x005B,0x10},   // TV Output Control Register
    {0x0060,0x03},   // CRT/TV Display Mode Register
    {0x0062,0x00},   // CRT/TV Display Start Address Register 0
    {0x0063,0x00},   // CRT/TV Display Start Address Register 1
    {0x0064,0x00},   // CRT/TV Display Start Address Register 2
    {0x0066,0x40},   // CRT/TV Memory Address Offset Register 0
    {0x0067,0x01},   // CRT/TV Memory Address Offset Register 1
    {0x0068,0x00},   // CRT/TV Pixel Panning Register
    {0x006A,0x00},   // CRT/TV Display FIFO High Threshold Control Register
    {0x006B,0x00},   // CRT/TV Display FIFO Low Threshold Control Register
    {0x0070,0x00},   // LCD Ink/Cursor Control Register
    {0x0071,0x01},   // LCD Ink/Cursor Start Address Register
    {0x0072,0x00},   // LCD Cursor X Position Register 0
    {0x0073,0x00},   // LCD Cursor X Position Register 1
    {0x0074,0x00},   // LCD Cursor Y Position Register 0
    {0x0075,0x00},   // LCD Cursor Y Position Register 1
    {0x0076,0x00},   // LCD Ink/Cursor Blue Color 0 Register
    {0x0077,0x00},   // LCD Ink/Cursor Green Color 0 Register
    {0x0078,0x00},   // LCD Ink/Cursor Red Color 0 Register
    {0x007A,0x1F},   // LCD Ink/Cursor Blue Color 1 Register
    {0x007B,0x3F},   // LCD Ink/Cursor Green Color 1 Register
    {0x007C,0x1F},   // LCD Ink/Cursor Red Color 1 Register
    {0x007E,0x00},   // LCD Ink/Cursor FIFO Threshold Register
    {0x0080,0x00},   // CRT/TV Ink/Cursor Control Register
    {0x0081,0x01},   // CRT/TV Ink/Cursor Start Address Register
    {0x0082,0x00},   // CRT/TV Cursor X Position Register 0
    {0x0083,0x00},   // CRT/TV Cursor X Position Register 1
    {0x0084,0x00},   // CRT/TV Cursor Y Position Register 0
    {0x0085,0x00},   // CRT/TV Cursor Y Position Register 1
    {0x0086,0x00},   // CRT/TV Ink/Cursor Blue Color 0 Register
    {0x0087,0x00},   // CRT/TV Ink/Cursor Green Color 0 Register
    {0x0088,0x00},   // CRT/TV Ink/Cursor Red Color 0 Register
    {0x008A,0x1F},   // CRT/TV Ink/Cursor Blue Color 1 Register
    {0x008B,0x3F},   // CRT/TV Ink/Cursor Green Color 1 Register
    {0x008C,0x1F},   // CRT/TV Ink/Cursor Red Color 1 Register
    {0x008E,0x00},   // CRT/TV Ink/Cursor FIFO Threshold Register
    {0x0100,0x00},   // BitBlt Control Register 0
    {0x0101,0x00},   // BitBlt Control Register 1
    {0x0102,0x00},   // BitBlt ROP Code/Color Expansion Register
    {0x0103,0x00},   // BitBlt Operation Register
    {0x0104,0x00},   // BitBlt Source Start Address Register 0
    {0x0105,0x00},   // BitBlt Source Start Address Register 1
    {0x0106,0x00},   // BitBlt Source Start Address Register 2
    {0x0108,0x00},   // BitBlt Destination Start Address Register 0
    {0x0109,0x00},   // BitBlt Destination Start Address Register 1
    {0x010A,0x00},   // BitBlt Destination Start Address Register 2
    {0x010C,0x00},   // BitBlt Memory Address Offset Register 0
    {0x010D,0x00},   // BitBlt Memory Address Offset Register 1
    {0x0110,0x00},   // BitBlt Width Register 0
    {0x0111,0x00},   // BitBlt Width Register 1
    {0x0112,0x00},   // BitBlt Height Register 0
    {0x0113,0x00},   // BitBlt Height Register 1
    {0x0114,0x00},   // BitBlt Background Color Register 0
    {0x0115,0x00},   // BitBlt Background Color Register 1
    {0x0118,0x00},   // BitBlt Foreground Color Register 0
    {0x0119,0x00},   // BitBlt Foreground Color Register 1
    {0x01E0,0x00},   // Look-Up Table Mode Register
    {0x01E2,0x00},   // Look-Up Table Address Register
    {0x01F0,0x00},   // Power Save Configuration Register
    {0x01F1,0x00},   // Power Save Status Register
    {0x01F4,0x00},   // CPU-to-Memory Access Watchdog Timer Register
    {0x01FC,0x01},   // Display Mode Register
};

 

Стартую линукс. Выводится следующий лог:

Epson S1D13XXX FB Driver
        =======> nb_trial:1,ack:0,status:0xffffff5f
s1d13xxxfb: chip revision 4
s1d13xxxfb: regs mapped at 0xc4802000, fb 2304 KiB mapped at 0xc4c00000
s1d13xxxfb: bpp=8, lcd_bpp=12, crt_enabled=0, lcd_enabled=1
s1d13xxxfb: xres=320, yres=240, vxres=160, vyres=14745 is_color=1, is_dual=0, is
_tft=1
s1d13xxxfb_set_par: bpp=8
pseudo colour 8
writing 03 to display mode register
setting line_length to 320
done setup
Console: switching to colour frame buffer device 40x30
fb0: S1D13806 frame buffer device

 

При загрузке драйвера дисплей становится черным. Больше на дисплее ничего не происходит хотя должна быть картинка пингвина и консоль. Не могу понять почему он отказывается работать. Может нужно еще гдето прописать какието настройки кроме как в файле s1d13506.h?

Изменено пользователем X-Shadow

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


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

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

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

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

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

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

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

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

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

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