Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
Всем котам с праздником. Особенно кошечек. Хоть их и мало у нас на сайте. Проблемы с этим дисплеем на чипе ILI9488. Все работает, правда по SPI при 64К цветов, медленно. Но не в этом проблема.
Выяснился интересны факт. При выводе в режиме 8 цветов на экране появляются артефакты. При чем за 3 дня изысканий выяснилось, что появляется он если после вывода линии (произвольной длины и направления) следует команда записи адреса для вывода следующей линии. Артефакт виден на фото. Даташит 10 мегабайт прочитан несколько раз. Может я что не понял из него? Кто сталкивался?
Поле 320*480. Время заливки около 1 сек при 8 цветах и примерно 3 сек при 65К цветов(5+6+5 бит). Пробовал тайминги ставить. Не помогает. Липовые команды подавал типа инвертировать экран, потом обратно. Срабатывают. Но если после них приходит команда адреса, причем именно команда, без параметров, заполучите черный уголок. Судя по пикселям, он, козел , пишет 4 байта в какую то область. Напрягает, что если увеличить количество цветов, и передавать не 1, а 3 байта на пиксель все нормально. Пробовал при 8 цветах передавть по 2 или 3 байта. Длина линии не меняется, а артефакт смещается 1/3 длины линии, 2/3 длины или в конце. В зависимости от количества байт. Но линия всегда одинакова и правильная по длине. Уже хочется паяльником в экран потыкать.
Последовательность команд у меня выглядит так: 2С(запись в память) 2A(адрес начало и конец по X) 4 байта адреса по Х 2B(адрес начало и конец по Y) 4 байта адреса по Y 2C(запись в память) поток байт данных цвета.
Первую 2с ramwrite не нужно. Без неё попробуйте. 2а, 2b, 2c
Добавлено after 3 minutes 24 seconds: Длина линии не будет меняться, хоть сколько угодно данных отсылайте. Просто с начала поля писать начнёт и по кругу. За пределы поля не выходит. Это на тексте хорошо видно.
Добавлено after 1 minute 42 seconds: Видимо артефакт и смещается, так как линия повторно переписывается. А он в конце записи.
Попробовал вывести не сплошным потоком всю линию, а по пикселям. Результат тот же. Даже хуже - цвета нет. Только черный кроме последнего пикселя при любой длине. Курение букваря привело к идее. У режима 8 цветов расположение бит цвета не совсем обычное - XX_RGB_RGB. То есть в байте сведения о цвете двух пикселей. Но реализация SPI в баскоме не умеет отправлять побитно. Минимум - байт. Для заливки всего экрана количество байт потребно как раз в 2 раза меньше. Если в старших 4-7 оставить нули - получается через строчная заливка. Короче, никаких вариантов для вывода линии или пикселя в режиме 8 цветов не просматривается.
Без кода или фрагмент кода трудно даже давать идеи. Может ли проблема аппаратная часть вашего дисплея? Пробовали другой дисплей? Эмулируйте SPI программно. Будет медленно, но ради эксперимента. Попробуйте на другом MK, на другом языке (C, C++), напр. для Arduino уже есть много библиотек управления ILI9488, с тестами, с прямыми линиями, также под углом. Как только получите правильное изображение, метод исключения должен облегчить поиск фрагменту кода, кто вызывает проблему. В противном случае поиск проблемы происходит в большой области и граничит со случайностью.
vem566, сколько байт вы отправляете? Попробуйте изменить количество отправляемых байтов чётное на нечётное или наоборот. И посмотрите, будут ли артефакты появляться.
Добавлено after 2 hours 31 minute 17 seconds:
shonty писал(а):
чётное на нечётное или наоборот
потому что мне кажется, что вы нечётное количество байтов отсылаете, а:
vem566 писал(а):
Даже хуже - цвета нет. Только черный кроме последнего пикселя при любой длине.
и
vem566 писал(а):
Время заливки около 1 сек при 8 цветах и примерно 3 сек при 65К цветов(5+6+5 бит)
Не припомню, что бы в каком-л. ТФТ было 8 бит на пиксель.
На всякий случай просмотрел ДШ на ILI9488, в 4.5.1. RGB Interface Selection, только 24, 18 и 16 бит на пиксель. И то они комутируются аппаратно. пользователь не сможет битность поменять..
Если ошибаюсь, ткните меня носом, где 8 бит на пиксель или 8 бит цветность..
PS: предположительно:
vem566 писал(а):
Даже хуже - цвета нет. Только черный кроме последнего пикселя при любой длине.
если отправлять чёрый (0xFF), и считать, что отравляете 8 битную цветность, то при нечётном количестве отправленных данных как раз последний пиксель и не прокрасится чёрным. Так как чёрный цвет для этих дисплеев 0xFFFF
Добавлено after 5 minutes 51 second: PS2:
shonty писал(а):
Так как чёрный цвет для этих дисплеев 0xFFFF
а так да, при нечётном количестве байтов у вас не 0xFFFF, а 0xFF(хз). Это и есть цвет последнего пикселя.
Про 8 цветов. Раздел 5.2.34 - описание команды 3А. Страница во вложении. В разделе 4.7.1.1 описан SPI в этом режиме. И это рабтает.
В режиме 8 цветов пробовал отправлять и четное и не четное количество байт. Меняется только положение артефакта. 1/3 от длины линии, 2/3 или в конце. Повторюсь - появляется только в случае, если после прорисовки линии идет команда адреса(2А). Причем если между линией и командой 2А будел произвольное количество любых других команд артефакта нет. Получается, что прямоугольник нарисовать не получится. А при пиксельном выводе получается, что артефакт затирает пиксель. В результате отображается правильно только последний. Сам артефакт занимает 3 пикселя со смещением на 1 пиксель назад и 3 пикселя вверх.
Во всех остальных режимах цвета никаких нареканий нет. Хоть прямые, хоть косые, хоть круглые. Дисплея второго то же нет. Смотрел примеры для ардуины, но там нет режима 8 цветов. Остальное не интересно, т.к. работает и без С. Пробовал вспомнить ассемблер - получилось плохо. Последний раз что то писал на нем лет 20 назад и для 8086.
В разделе 4.7.1.1 описан SPI в этом режиме. И это рабтает.
Сорри есть такая буква Но есть жирное но в 4.7.1. это вроде как для 3-line/9-bit serial bus interface
тогда возможно и у вас артефакт. Потому что пока отсылаете 0xff у вас по сути идут одни 1111111111111...... , и последний байт возможно не полный. А если тогда отправить 72 байта цвета? Или 144..?, ну что бы кратно и 8 и 9 было..
В разделе 4.7.2 все тоже самое для 4 проводной. Гонять байты смысла нет. Вообще то цель заморочки с 8-ю цветами была ускорить вывод. Нужно будет отображать быстро меняющиеся параметры. И гнать 1 байт на 2 пикселя явно слаще, чем 3 байта на 1 пиксель. Так что голова уже болит, а толку нет. Пусть заказчик покупает дисплей с параллельной шиной. Он товарищ своеобразный. -"Хочу цветной дисплей размером больше 3 дюймов!" Ну и "менеджеры по закупкам" ему и приобрели. Подешевше. Вроде все складно, но прорисовка не лезет ни в какие ворота. Ну и еще один прикол. При включении эта канитель должна показывать логотип фирмы. А он зарегистрирован бело-голубой. Голубого в 8 цветов нет. Синий есть. Он вроде не против. Может дальтоник. Визуально картинка плавно (~1 сек) появляется. А вот дальше задница.
Тут еще вопросы есть по инициализации. В лоб, по простому не запустился. Типа ресет, формат пикселя, режим адресации, побудка. Нарыл у какого немца. На С. Цепочка по длине 16 команд. Тупо скопировал, перевел и он запустился. Где прикол, толком не разбирался. Может в этой цепочке "косяк". По книжке вроде криминальных команд нет. Тем более работает во всех режимах. Могу предоставить эту цепочку. Пожалуй самая хитрая часть.
Сейчас у меня работает Мега2560 20МГц. Нужно получить с одной платы управления 4 модели и у каждой до 5 разных функционалов. Ну и в разных комбинациях. Так что ресурсов контроллера нужно до хрена.
Судя по видео вполне приемлемо. У экрана же прямой доступ к памяти. Так что без разницы на размер. Нужно будет еще SPI поковырять. Аппаратный работает в 2 раза быстрее чем программный. И прграммный плевать хотел на волевую установку скорости. Похоже и у аппаратного скорость не предельная. До шрифтов еще не добрался. Да и они в проекте так, факультативно. Аварийные сообщения. На основном рабочем экране нужно изобразить подобие двух спидометров. Дизайнеры там развлекаются. Тупые, правда эти самые дизайнеры. У них разницы нет между растровой и векторной графикой. Ну и ведущие спецы вместе с директором их шедевры хают и бракуют. Пришлось на Delphi писать программу для разбора их картинок на пиксели и определние цвета. Потом в текстовый файл в формате, чтобы сразу как массив загрузить можно. В общем не скучно.
его не нужно вспоминать. Вам всего несколько строк и нужно. В баскоме же можно вставки вставлять асмовские?
У меня всё через ж.., но как то так: когда с ТФТ работаю, у меня R14, R13, R12, R11 - зарезервированны под цвет. а R15 - это у меня TEMP, никак у всех но вы можете на свой вкус определить.
потом макросами загоняю через R16 код цвета в регистры (цвет переднего плана и бакгроунд)
дальше:
Код:
out SPDR, color_back_H in TEMP,SPSR ; ожидание конца передачи sbrs TEMP,SPIF rjmp PC-2 out SPDR,color_back_L in TEMP,SPSR ; ожидание конца передачи sbrs TEMP,SPIF rjmp PC-2
- это закраска одного пикселя цветом фона. и всё это в цикле. Но в цикле есть ещё моменты на ускорение передачи. Предположительно ваш дисплей на 20мгц должен заливаться цветом фона менее чем за пол секунды. В крайнем случае за 0,7сек.
За вставки спасибо. Баском съедает ассемблер. Попробую. Что касаемо скорости SPI, то он не желает работать на частоте выше 5 МГц. Минимальный делитель = 4. Вот и получается, что не 0.5-0.7 а 2-3 секнды. Если перейти на 8 цветов, то в 3 раза сокращается объем данных и соответственно в 3 раза время вывода. Примерно это так и есть. Конечно, разогнать бы SPI до 20 МГц.... По даташиту дисплей поддерживает по SPI до 500 МГц. Где их взять только. Пробовать программный SPI, так он медленнее аппаратного.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения