ILI9341 то ли я .... то ли лыжи не едут !!!!

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="goldenandy",url="/forum/viewtopic.php?p=3568180#p3568180"]А по сложностям библиотек.... тут или делать универсальность, либо затачивать под каждый дисплей отдельную библиотечку.[/uquote]
Что нужно чтобы нарисовать интерфейс для часов? Заливка прямоугольных областей произвольным цветом, рисование линий, которые сами по себе прямоугольники, вывод текста и изображений, что фактически одно и то же Для всего этого достаточно задать окно и заполнить его данными, главное чтобы для разных дисплеев и ориентаций отрисовка внутри окна шла в одном направлении. И это можно сделать установив соответствующие биты в одном-двух регистрах дисплея... Ситуацию усложняет тот факт, что даже после этого не все дисплеи ведут себя одинаково, у каких-то вместе со сменой направлений могут поменяться оси или координаты придется вычитать из размера по соответствующей оси, но это все делается только при задании окна. И все, далее пользуясь только парой функций setWindow() и writeColor(), которые работают везде одинаково, можно нарисовать, допустим, линию. При выводе символа тоже будет одна setWindow() и множество writeColor(), при этом то и другое будет правильно рисоваться на любом экране где внутри окна данные выводятся слева направо и сверху вниз. Если нужен зеркальный шрифт, то даже не меняя направление можно передавать данные в другом порядке и все равно будет заметно быстрее, чем рисование точками. Хотя можно и точками рисовать, это ведь тоже прямоугольник единичного размера, только насколько большой объект там имеет смысл рисовать? Если картинка на весь экран, то наверняка придется ее выводить именно так, как я предлагаю рисовать все...
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Reflector писал(а):И все, далее пользуясь только парой функций setWindow() и writeColor()
Эти функции есть, они идут с драйвером дисплея. Никто не мешает их использовать. А либа - только надстройка.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="goldenandy",url="/forum/viewtopic.php?p=3568269#p3568269"]Эти функции есть, они идут с драйвером дисплея. Никто не мешает их использовать. А либа - только надстройка.[/uquote]
Так об этом и речь, затачивать под каждый дисплей отдельную библиотечку не нужно, достаточно буквально несколько функций которые на всех дисплеях работают одинаково :)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Reflector , да кто б возражал.

Я под себя написал такую библиотечку.

Вам она не понравилась... Ваше право. Но, критикуя - предлагайте! Напишите простую универсальную и быструю либу с несколькими функциями, которые на всех дисплеях работают одинаково, да выложите на форум... Или статью напишите. Люди только спасибо скажут. (только сразу предусмотрите вариант, когда вашу либу будут пытаться натягивать на монохромные дисплеи, у которых совершенно другие контроллеры и команды загрузки данных)
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

goldenandy, подскажите пожалуйста,комманды инициализации и управления ILI9341 с SPI интерфейсом и 8-битной шиной одинакова?
хочу перевести один проект на ILI9341 с 8-битной шиной,вроде как скорость отрисовки экрана должна вырасти...
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Novice user, А вот не знаю. У меня живьем только 2 дисплея с 16-битной шиной.
Со SPI-интерфейсом у меня дисплей на контроллере ST7735 - он почти совместим по принципу и командам с ILI9341.
Так что по работе по 8битке - читайте ДШ (раздел 7.1 MCU interfaces) и гуглите, у меня таких дисплеев не было и я не работал с ними.
ЗЫ. Вроде как для андурины есть шилд с ILI9341 и 8битной шиной. Если есть такой шилд, то и андурино-библиотека есть. Из нее можно выковырять принципы обмена по 8битке. Скорее всего, там одно отличие от 16битного режима - настройка конфиг.регистра на работу по 8 битам и передача слова за 2 такта.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Реклама
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

Даташит смотрел,вроде как должно быть одинаково но не инициализируется,пример брал отсюда https://datagor.ru/microcontrollers/mic ... i9341.html
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Я не увидел на датагоре последовательности инициализации дисплея. Там вагон и тележка команд отправляются в дисплей. Посмотрите у ЕАКС.МИ (его исходники живут на гитхабе)
И да, проверьте, что бы у вас уровни были 3.3 вольта. 9341 толерантен к 5 вольтам на входе, но не понимает их.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

Про уровни не сразу сообразил,переделываю плату с делителями,чтение дисплея мне не надо,переводить атмегу на питание 3,3 вольта не получится-он управляет фифобуфером IDT7201

И еще-на плате дисплея есть IM0 и IM3,выв 11 и 21 соответственно, http://forum.cxem.net/uploads/monthly_0 ... 952770.jpg ,как их подключить?
Дисплей от DSO138
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

попробуйте запустить мегу от 3.3 вольт, что б убедиться, что вы можете управлять дисплеем. потом вернетесь на 5 вольт с делителями.
IM0 и IM3 - не знаю. На самом дисплее они так же подписаны ?

Добавлено after 1 minute 20 seconds:
Вдогонку. Смотрите даташит на контроллер дисплея, главу 7. IM0, IM1, IM2 и IM3 определяют режим шины дисплея.

Добавлено after 5 minutes 46 seconds:
https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf - стр.26
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

goldenandy, Спасибо большое!Я согласование уровней не поставил,и выв RD посадил на минус,то есть только чтение,перепаял на +3,3 в и все пошло как надо!
Ответить

Вернуться в «AVR»