TFT uDisp320240.Часть 1.

В своё время на http://www.evodbg.com  я приобрёл плату дисплея uDisp320240.
Вот её характеристики:

  • Размер экрана — 3,5″;
  • Разрешение 320*240 точек;
  • 262 000 цветов;
  • Белая светодиодная подсветка;
  • Touch Screen — экран чуствительный к нажатию;
  • 5 светодиодов пользователя;
  • 2 кнопки пользователя;
  • Интерфейс — SPI, 8/16 бит 8080, 8/16 бит6800, 9/16/18 бит
  • Размер платы — 105*74 мм;

Наконец-то дошли руки  до исследования её работы. Сегогдня я ковыряю непосредственно дисплей, попробую вывести какое-нибудь изображение. С того же сайта можно скачать следующую документацию:

Сразу оговорюсь, что в сегодняшней статье я не буду углубляться в тонкости настройки работы этого дисплея — просто ставлю задачу вывести хоть какое-то изображение на экран. Как указано в документации, интерфейсов подключения достаточно много, в том числе параллельные по 18-ти, 16-ти, 8-ми разрядным шинам, 4-х и 3-х проводный SPI, RGB-интерфейс. Я воспользовался 4-х проводным SPI. От обычного SPI его отличает наличие дополнительной линии D/C — данные/команда. Готовый пример (см. выше)  я подчистил — выбросил из него коды работы с MMC/SD-картой. В качестве управляющего контроллера выбрал ATmega128 по одной только причине максимального размера её флеша, ведь нужно же куда-то впихнуть сам файл картинки. Если рассказать в двух словах, то особых трудностей при работе с uDisp320240 не возникло. В общем-то стандартные процедуры включения, инициализации. Запись в ОЗУ видеопамяти шестнадцатиричного числа (код цвета) выведет на экран пиксель (точку) заданного цвета в место, куда указывает счётчик адреса AC. Другое дело, что настроек очень много: можно задавать начальные/конечные точки по вертикали и горизонтали, устанавливать инкремент или декремент счётчика адреса по обеим координатам (т.е. картинку можно выводить с любого угла и в любом направлении), регулировать цветовую палитру, настраивать уровень серого и многое многое другое, о чём не напишешь в одной статье. Ещё раз повторюсь — мы просто выводим картинку, чтобы визуально оценить, какая она есть. Беру свою ATmega128 kit и собираю макет. Питание дисплея ОБЯЗАТЕЛЬНО 3,3 В, управляющие сигналы толерантны 5 В.

Следующим шагом будет добавление в проект непосредственно картинки. Качаете из сети понравившуюся Вам картинку 320х240, в любом редакторе преобразовываете её в bmp, заходите сюда и внимательно читаете — там всё понятно. Добрый человек потратил время и написал небольшое приложение для преобразования bmp-картинок в Си-шный файл ( в виде массива), который потом легко прикручивается к Вашему проекту. Следующей проблемой у меня стала работа с большими массивами в Си — я ещё не сталкивался с подобным, т.к. работал с массивами не более2400 элементов. Оказалось, что компилятор не адресует массивы более 32 кБ. Эту проблему я решил разбиением массива на несколько ( в исходнике это хорошо видно). Следующие грабли вылезли на пустом месте. Не знаю, может я уже начал тупить, но никак не смог организовать правильную адресацию выводимых на экран элементов массивов — ни через указатели, ни через имя массива (кому интересно — в исходнике закомментированные строчки). Пришлось пойти тупым путём. Я открыл ассемблерный листинг исходника, посмотрел адреса и вручную их прописал в Си-шный исходник))) И всё равно после этого ещё пришлось опытным путём вычислять сдвиг адреса (в исходнике shift). Короче говоря таким ламерско- быдлокодерским способом я всё-таки вывел бомбовый chevrolet camaro  на экран.
Пусть Вас не смущают белые полоски вверху и внизу экрана — на полный размер массива картинки не хватает памяти даже у ATmega128.
Если Вы не хотите морочиться с массивами, а посмотреть на дисплей в работе хочется, то отключите заговолочный файл с картинкой, уберите циклы for вывода массива на экран и перед бесконечным циклом раскомментируйте строку
//LCD_test();
в результате на экране отобразятся восемь равных полос основных цветов — тестовая таблица. В таком случае можно обойтись ATtiny2313, переписав функции для SPI.
В общем-то ежу понятно, что использовать для хранения картинки драгоценный флеш просто глупо, но в показанном эксперименте это делалось чисто для проверки. А так SD-карты, конечно, сами напрашиваются.
Результатом описанных выше экспериментов явилось осознание некоторых пробелов в знании Си, но я с ними разберусь. На этот экран у меня большие виды и перспективы. Буду разбираться дальше.

В архиве проект с исходниками. TFT_320240.c — это главный файл, MMC_SD.c/h — файлы настройки SPI, qwert.h — заголовочный файл с картинкой Шевроле, leo.h — заголовочный файл с картинкой леопарда размером 132х176 — его я тоже ради эксперимента выводил на экран.

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

9 комментариев: TFT uDisp320240.Часть 1.

  1. Юрий говорит:

    Можно ли так же подключить STM-TFTLCD2.8 дисплей к этой плате? И как быть с уровнями логических сигналов при разных питаниях подключив дисплей к шине данных? http://www.kosmodrom.com.ua/el.php?name=STM-TFTLCD2.8

  2. s_black говорит:

    Ну, в Вашем случае дисплей управляется по 8/16-ти битному параллельному интерфейсу, а не по SPI, т.е подключение будет другим. А по толерантности к 5-ти вольтам нужно смотреть даташит на управляющий контроллер. В моём случае ответ положительный — я это указывал в статье.

  3. vrr говорит:

    Может пригодиться. При подключениии дисплея по 8 бит 8080 есть несоответствие перемычек на плате индикации. Указано PS0 = 0, PS1 = 0, PS2=1, PS3=1 — при таком включении дисплей молчит. Если сделать все в зеркально: PS0 = 1, PS1=1, PS2=0, PS3=0, работает по 8 бит 8080. Дальше я не проверял, но возможно допустить, что ВСЕ перемычки расположены зеркально.

  4. vrr говорит:

    Да, дисплей у меня 3 версии.

  5. Юрий говорит:

    Дисплей STM-TFTLCD2.8 отлично заработал по 8 битной шине подключённый через SN74LVC4245ADW -2ШТ на разьйм х13 atmega128.

  6. s_black говорит:

    Картинки выводили на экран? Насколько визуально быстрее, чем через SPI?

  7. Юрий говорит:

    Картинки пока не пробовал.Рисовал только простые фигуры. Я учю асемблер и плату увидев на твоём сайте,решил купить.Ты хорошо описуешь свои проекты, а я пытаюсь повторить их на асемблере.Спасибо за замечателбный сайт!!! Для вывода картинок я пока не собрал плату под флешку…

  8. Юрий говорит:

    Как ты записал картинку в at45?

  9. s_black говорит:

    Я картинку во флеш контроллера писал — прочитайте ещё раз статью.

Добавить комментарий

Ваш e-mail не будет опубликован.