Ну да, пришлось устранять "лишний" импульс при включении SPI в режиме CKE=1. На самом деле "перекрытие" наблюдается совсем не в этом месте, а где то в тех 8 "аппаратных" битах. Так что налицо провода 20см и ещё какие то ёмкости.
Судя по вашим наблюдениям "иногда даёт 0xF8, или 0x78", т.е. дело в старшем бите. Как раз при включении SPI может проскакивать "ненужный" фронт. Вот я и предложил оставить перед его включением линию CLK в 1. Если SPI при включении ставит тоже 1, то фронта не будет, а если ставит 0, то спадающий уровень дисплей проигнорирует. А у вас перед включением SPI стоит 0.
Да там и пробовать нечего... 2520 просто не подходит, а 25К20 со своей ерратой просто верх идиотизма... Тема уже не раз поднималась... но ТС тупит на своём... Для такого дисплея ПИК24 как минимум... там можно получить непрерывный SPI 9 бит... всё остальное - пустая трата времени...
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Даже не пытайтесь ещё что-то показывать... 2520 и 25K20 не годятся для SPI 9 бит... результат будет просто унылый... точка... Мега, STM8 ещё как-то (хотя тоже "плач Ярославны")... ПИК24 и выше, все STM32 (упаковка на лету в режиме 16 бит) уже хорошо... STM32F0xx - вообще без проблем... 9 бит в наличии...
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Может, есть у кого нибудь полная инициализация дисплея от Samsung S5230? Дисплей запускается, но разделен на 2 части и мерцает. Спойлерvoid initLCD (void) { _delay_ms(100); lcd_cs_hi; lcd_rs_hi; lcd_wr_hi; _delay_ms(10); lcd_cs_lo; _delay_ms(10);
Заголовок сообщения: Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Добавлено: Ср янв 07, 2015 14:27:06
Делал попытку переписать команды с даташита... потом надоело, может поможет? Правда мне и самому интересно стало узнать полную структуру инициализации. Спойлер
Код:
/****** Команды и параметры S6D04D1 (LCD Samsung S5230) *********/ // LEVEL 1 #define NOP 0x00 // W 5.2.1 Пустой оператор #define SWRESET 0x01 // W 5.2.2 Программный сброс #define RDDIDIF 0x04 // R (ID10-ID17, ID20-ID27, ID30-ID37) 5.2.3 Чтение ID дисплея #define RDDST 0x09 // R (D25-D31, D16-D22, D9-D10, D5) 5.2.4 Чтение статуса дисплея // D26 - RGB<->BGR, 1 - BGR, 0 - RGB // D22-D20, 101=16bit/pixel, 110=18bit/pixel, 111=24bit/pixel #define RDDPM 0x0A // R (D2-D7) 5.2.5 Чтение диспея POWER Mode #define RDDMADCTL 0x0B // R (D2-D7) 5.2.6 Чтение MADCTL #define RDDCOLMOD 0x0C // R (D0-D6) 5.2.7 Чтение pixel format // D2-D0, 101=16bit/pix, 110=18bit/pix, 111=24bit/pix #define RDDSM 0x0E // R (D7-D6) 5.2.8 Чтение режима сигнала дисплея (Tearing Effect) #define RDDSDR 0x0F // R (D6-D7) 5.2.9 Чтение результатов дисплейной самодиагностики #define SLPIN 0x10 // W 5.2.10 Включить спящий режим (~120мс) #define SLPOUT 0x11 // W 5.2.11 Выключить спящий режим (~5 мс) #define PTLON 0x12 // W 5.2.12 Включение частичного отображения дисплея #define NORON 0x13 // W 5.2.13 Включить режим нормального дисплея (частичный выкл) #define DISPOFF 0x28 // W 5.2.14 Выключение дисплея (матрицы) #define DISPON 0x29 // W 5.2.15 Включение дисплея (матрицы) #define CASET 0x2A // W (SC8-SC15, SC0-SC7, EC8-EC15, EC0-EC7) 5.2.16 Установка области столбца #define PASET 0x2B // W (SP8-SP15, SP0-SP7, EP8-EP15, EP0-EP7) 5.2.17 Установка области страницы (строк?) #define RAMWR 0x2C // W (D0-D7) 5.2.18 Запись в память #define RAMRD 0x2E // R (-,D0-D7) 5.2.19 Чтение из памяти #define PTLAR 0x30 // W (SR8-SR15, SR0-SR7, ER8-ER15, ER0-ER7) 5.2.20 Зона частичного режима #define TEOFF 0x34 // W 5.2.21 Выключение разрыва изображения #define TEON 0x35 // W (M) 5.2.22 Включение разрыва изображения #define MADCTL 0x36 // W (D2-D7) 5.2.23 Регистр контроля доступа к памяти // D4-Направление вертикального обновления ML=0 - сверху вниз // ML=1 - снизу вверх // D3 - RGB<->BGR направление 0-RGB, 1-BGR // D2-Направление горизонтального обновления MH=0 - слева направо // MH=1 - справа налево #define IDMOFF 0x38 // W 5.2.24 Режим ожидания выключить 24bit Color, нормальная частота обновления #define IDMON 0x39 // W 5.2.25 Режим ожидания включить 8-bit Color #define COLMOD 0x3A // W (D0-D2, D4-D6) 5.2.26 16/18/24-bit/pixel #define RDID1 0xDA // R (ID10-ID17) 5.2.27 Производитель LCD модуля #define RDID2 0xDB // R (ID20-ID26) 5.2.28 Версия LCD модуля/драйвера #define RDID3 0xDC // R (ID30-ID37) 5.2.29 Идентификатор LCD модуля/драйвера #define WRDISBV 0x51 // W (RIGHT0-RIGHT7) 5.2.30 Яркость вручную [0...255], управление см. BCMODE, а так же MIE #define RDDISBV 0x52 // R (RIGHT0-RIGHT7) 5.2.31 Чтение уровня яркости дисплея #define WRCTRLD 0x53 // W (BL, DD, BCTRL) 5.2.32 Режим подсветки #define RDCTRLD 0x54 // R (BL, DD, BCTRL) 5.2.33 Чтение значений подсветки #define WRCABC 0x55 // W (ODE0-ODE1) 5.2.34 Запись MIE режима (яркость) 00-выкл, 01-User, 10-фотоснимок, 11-фильм #define RDCABC 0x56 // R (ODE0-ODE1) 5.2.35 Чтение режима MIE #define WRCABCMB 0x5E // W (RIGHT0-RIGHT7) 5.2.36 Установка минимального значения яркости #define RDCABCMB 0x5F // R (-, RIGHT0-RIGHT7), 5.2.37 Чтение регистров минимальной яркости #define MIECTL1 0xCA // W (RRC0-RRC7, IERC0-IERC7, SERC0-SERC4-насыщенность ONOFF_DIMM_EN-плавная яркость) 5.2.38 #define BCMODE 0xCB // W (DE0-DE1) 5.2.39 Режим подсветки 00-откл, 01-ручн, 10-MIE, 11-MIE+ручн
// LEVEL 2 #define DSTB 0xB0 // W (DSTB) 5.3.1 Глубокий режим ожидания #define SE 0xC6 // W (GAIN0, GAIN1,... SE_M ODE) 5.3.1 Повышенная четкость #define MIECTL2 0xCC // R/W 5.3.2 Запись в регистры MIE (CAT - определяет резкость перехода, CST - плавность перехода, WIN - область перехода #define MIECTL3 0xCD // R/W 5.3.2 Диммирование подсветки #define MTPCTL 0xD0 // R/W 5.3.3 Управление смещением VCOM +31...-31 #define WRVCMOC 0xD1 // R/W 5.3.4 Управление VCOML #define WRVMLOC 0xD2 // R/W 5.3.5 Установка смещения VCOML +15...-15 #define WRGVDOC 0xD3 // R/W 5.3.6 Установка смещения GVDD +15...-15 #define WRID 0xD4 // R/W 5.3.7 ID definition #define RDOFFSETC 0xD5 // R 5.3.8 Чтение OFSET CONTROL #define MDDICTL 0xE0 // W (VWAKE_EN, MDDI_SLP) 5.3.10 Режим MDDI, пробуждение #define MDDILIK 0xE1 // W MDDI Start position #define WRPWD 0xF0 // R/W (TEST0-TEST7) 5.3.11 #define DISCTL 0xF2 // R/W 5.3.12 Display control register (частичный экран, инверсия, четные/нечетные строки, #define PWRCTL 0xF3 // R/W 5.3.13 Управление питанием драйвера и бустером #define VCMCTL 0xF4 // R/W 5.3.14 Управление напряжением VCOM #define SRCCTL 0xF5 // R/W 5.3.15 #define IFCTL 0xF6 // R/W 5.3.16 Управление интерфейсом (565bit) #define RPGAMCTL 0xF7 // R/W 5.3.17 Положительная гамма для красного #define RNGAMCTL 0xF8 // R/W 5.3.18 Отрицательная гамма для красного #define GGAMCTL 0xF9 // R/W 5.3.19 -//- для зеленого #define GNGAMCTL 0xFA // R/W 5.3.20 -//- для зеленого #define BGAMCTL 0xFB // R/W 5.3.21 -//- синего #define BNGAMCTL 0xFC // R/W 5.3.22 -//- синего #define GATECTL 0xFD // R/W 5.3.23 #define DCON 0xD9 // R/W 5.3.24 #define TESTKEY 0xF1 // W (TESTK0-TESTK7) 5.3.25 #define EDSTEST 0xFF // R/W 5.3.26
Кому не лень исправьте/дополните и пусть валяется на форуме - авось кому пригодится.
Заголовок сообщения: Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Добавлено: Ср янв 14, 2015 15:16:47
Попалась матрица серии C070VW, на сайте http://www.mt-system.ru/catalog/tablica-tft-displeev указан тип интерфейса TTL. Это чего такое? Реально заюзать? На плате стоит что то вроде ARM'а (наименование затёрто), вроде бы без преобразователей типа LVDS.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения