Ініціалізація TFT дисплея на прикладі ILI9341 для AVR
Як виявилося, дисплей, який йому надіслали з алі управляється драйверомILI9341, про це допоміг здогадатися на ньому. Верхній дисплей з драйвером SSD1289, нижній зILI9341.

Тому щойно до мене прийшов цей дисплей, одразу почав вивчати даташит наILI9341.
На відміну від SSD1289, уILI9341немає регістрів, для спілкування з ним використовуються команди. Спочатку посилаєш команду, а потім набір параметрів, тобто після того, як ми надіслали команду, дисплей вже чекає, що йому передадуть параметри. Також треба сказати, що спілкування з дисплеєм здійснюється по одному з двох протоколів: інтелівський i8080 і моторолівський M6800, чим вони відрізняються описував тут, не став змінювати традиції і вибрав i8080. Цей протокол має дві реалізації, для отримання більш детальної інформації можна почитати даташит.
Насамперед необхідно реалізувати низькорівневі функції і тут важливо зрозуміти, що ми правильно розуміємо даташіт. Найпростіший спосіб перевірити, чи правильність розуміння даташита, це вважати якусь інформацію з дисплея, наприклад, його ID.



Тоді функція для відправки команди буде виглядати так.
А функція, яка читає дані так.


Зі скріншотів зрозуміло, що описані вище функції запрацювали, залишилося реалізувати відправлення даних по 8 і 16 біт. Справа в тому, що в основному при відправленні даних використовуються тільки 8 біт молодші шини, але, наприклад, при записі даних в пам'ять дисплея використовуються всі 16 біт.
Все ми реалізували всі необхідні низькорівневі функції, тепер можна переходити безпосередньо до ініціалізації. Перед тим як перейти доініціалізації, треба сказати, що напруга живлення РК-комірки постійно змінює свою полярність, зроблено це для того, щоб уникнути явищ гідролізу та дисоціації складних органічних сполук, з яких складається рідкокристалічний матеріал.
У функції ініціалізації є функція TFT_SetOrientation(2), яка визначає порядок малювання, MAX_X та MAX_Y оголошені глобально та ініціалізовані нулями.
А ось як виглядає дисплей після ініціалізації.



Таким чином, можна зробити одну налагоджувальну плату для обох дисплеїв і ще важливо, щоб напруга живлення МК і дисплея була 3.3 вольта, при живленні від 5 вольт дисплей не запустився. Підсвічування дисплея теж запитало від 3.3 вольта через резистор 47Ом.
А на цьому все, в наступній статті ми розглянемо як виводити символи на дисплей і там буде проект для Atmega16 в AtmelStudio6.2.
Для бажаючих швидко перевірити чи працює їхній дисплей, залишаю тут прошивку дляAtmega16, яка заливає дисплей різними кольорами ili9341_i8080.hex [3,54 Kb] (скачування: 336).