Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2148 + S1D13705 посоветуйте GUI
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dogmatik
Нужен небольшой контроллер с графическим интерфейсом.
Планирую использовать LPC2148 + S1D13705 + TFT с TouchScr.
Есть ли возможность использовать какой-нибудь несложный GUI.
Особых изысков не надо, кнопки, слайдеры, вывод битмап.
scifi
Цитата(Dogmatik @ Jun 26 2007, 11:23) *
Особых изысков не надо, кнопки, слайдеры, вывод битмап.

То, что Вы назвали, без особого труда делается "с нуля" самостоятельно. Ещё важен вывод текста: там лучше позаимствовать чьи-то форматы шрифтов. Мы взяли из uC/GUI.
Dogmatik
Я собственно к этому и склонялся.
А насчет шрифтов хорошая идея.
Надо будет воспользоваться.
А вы кнопочки делали с полутонами и имитацией нажатия или
просто контуром.
Wano
С библиотекой uC/GUI идут примерчики. Там много кнопочек,движков и прочих элементов управления. Другое дело,что сама библиотека это просто монстр. Чем разбираться в ней так лучше самому накарябать.
scifi
Цитата(Dogmatik @ Jun 26 2007, 14:31) *
А вы кнопочки делали с полутонами и имитацией нажатия или
просто контуром.

С полутонами и имитацией нажатия. Вот один из скриншотов:
Dogmatik
Цитата(scifi @ Jun 26 2007, 14:53) *
С полутонами и имитацией нажатия. Вот один из скриншотов:

Неплохо, а ресурсов не много сожрало ?

Цитата(Wano @ Jun 26 2007, 14:46) *
С библиотекой uC/GUI идут примерчики. Там много кнопочек,движков и прочих элементов управления. Другое дело,что сама библиотека это просто монстр. Чем разбираться в ней так лучше самому накарябать.

Я пытался как-то использовать эту библиотеку - не влезла в память.
scifi
Цитата(Dogmatik @ Jun 26 2007, 16:06) *
Неплохо, а ресурсов не много сожрало ?

Какие могут понадобиться ресурсы для рисования нескольких прямоугольников, пары битмапов, вывода нескольких строк? Всё получается довольно скромно. Естественно, тратится ПЗУ на шрифты и битмапы, расход памяти на это можно легко подсчитать.
lebiga
Цитата(scifi @ Jun 26 2007, 17:09) *
Какие могут понадобиться ресурсы для рисования нескольких прямоугольников, пары битмапов, вывода нескольких строк? Всё получается довольно скромно. Естественно, тратится ПЗУ на шрифты и битмапы, расход памяти на это можно легко подсчитать.


Если требуется скорость на дисплее или использование окон (GUI_WINSUPPORT) - лучше использовать в uC/GUI режим GUI_SUPPORT_MEMDEV, но для этого нужно в системе выделить память - в зависимости от режима до 80КБ. Если только прямоугольники, шрифты и битмапы - можно использовать только память S1D13705. Я уже писал в другой теме - у меня S1D13705 подключена прямо на порты, причем некоторые сигналы S1D13705 можно не использовать (без BHE, BCLK соединил вместе с CLKI). Скорости хватает, чтобы регенерировать эхограмму за 0.1с (правда часть экрана). Насчет написать свое - если с нуля - не стоит и пытаться, вылавливать ошибки будешь намного дольше, чем разобраться в исходниках uc/Gui. Я для ускорения разработки просто скопировал 30 файлов в проект и скомпилировал. Знаю - так не правильно, нужно сделать просто линковку, но у меня это получилось за 1 день, а остальное время игрался с буквочками по желанию заказчика.
В гуи из больших таких изменений сделал - переписал макросы типа LCD_READ_MEM в lcdconf.h на функции, в которых дергаю ногами для работы с S1D13705
Dogmatik
Цитата(lebiga @ Jun 27 2007, 00:04) *
Если требуется скорость на дисплее или использование окон (GUI_WINSUPPORT) - лучше использовать в uC/GUI режим GUI_SUPPORT_MEMDEV, но для этого нужно в системе выделить память - в зависимости от режима до 80КБ. Если только прямоугольники, шрифты и битмапы - можно использовать только память S1D13705. Я уже писал в другой теме - у меня S1D13705 подключена прямо на порты, причем некоторые сигналы S1D13705 можно не использовать (без BHE, BCLK соединил вместе с CLKI). Скорости хватает, чтобы регенерировать эхограмму за 0.1с (правда часть экрана). Насчет написать свое - если с нуля - не стоит и пытаться, вылавливать ошибки будешь намного дольше, чем разобраться в исходниках uc/Gui. Я для ускорения разработки просто скопировал 30 файлов в проект и скомпилировал. Знаю - так не правильно, нужно сделать просто линковку, но у меня это получилось за 1 день, а остальное время игрался с буквочками по желанию заказчика.
В гуи из больших таких изменений сделал - переписал макросы типа LCD_READ_MEM в lcdconf.h на функции, в которых дергаю ногами для работы с S1D13705

Я так понял можно обойтись собственными ресурсами прицессора.
Wano
Подскажите плиз люди.Конечно стандартные библиотеки нет вопросов отлично. Но как можно будет заливать каждый раз во флэш такой объём? В оперативку 2148 это никак не влезет. Может я не знаю и занимаюсь дуростью,когда приходится каждый раз все битмапы и шрифты лить. Подскажите,ведь можно же залить фсё это ,к примеру, в конец флэша контроллера,а потом использовать. Ведь записать на бумажку адреса начал того или иного элемента проще чем перезаписывать каждый раз. Может и функции можно. Внешняя RAM - выход,ну а если нет.
Сергей Борщ
Цитата(Wano @ Jun 27 2007, 15:04) *
Ведь записать на бумажку адреса начал того или иного элемента проще чем перезаписывать каждый раз. Может и функции можно. Внешняя RAM - выход,ну а если нет.
Я лил. Но записывать адреса на бумажку - то еще извращение. Почему бы не объяснить линкеру, что есть два адресных пространства, положить в одно из них код, во второе - константы (фонты и т.д) и не попростить линкер сгенерить два файла? Тогда линкер будет сам подставлять необходимые адреса.
lebiga
Цитата(Dogmatik @ Jun 27 2007, 15:11) *
Я так понял можно обойтись собственными ресурсами прицессора.

Ну да, у меня стоит LPC2138, вся программа эхолота с ГУИ (обрезанным) заняла 75К flash и 25К RAM
Wano
Цитата(Сергей Борщ @ Jun 27 2007, 15:41) *
Я лил. Но записывать адреса на бумажку - то еще извращение. Почему бы не объяснить линкеру, что есть два адресных пространства, положить в одно из них код, во второе - константы (фонты и т.д) и не попростить линкер сгенерить два файла? Тогда линкер будет сам подставлять необходимые адреса.


Подскажите коим образом можно делить на два адресных пространства флэш память контроллера. Я так понимаю в Кейле это настройки ROM1 RAM1 ROM2 RAM2 . Если так,но что делать дальше,как к примеру массив-картинку записать по какому-то адресу?

Вот в книжке Трэвора на стр. 47 есть раздел "Размещение объектов по фиксированным адресам"
int checksum_at 0x40000000

Эт тоже всё хорошо,один раз скомпилили - записали во флэш где-то в конце массив.А следующий раз?
Убрать из него инициалиацию,но оставить по тому же адресу.

Напишите пару строчек ликбеза,кто знает как решить проблему.
khach
Цитата(Dogmatik @ Jun 26 2007, 09:23) *
Планирую использовать LPC2148 + S1D13705 + TFT с TouchScr.

А как вы его аппаратно подключаете S1D13705 к LPC2148? А то от реализации интерфейса логика построения gui немного меняется. Т.е выполнимо ли на данном интерфейсе операции чтения- модификация-запись или нет? По причине отсутствия у LPC2148 параллельной шины возможны два варианта- симуляция параллельной шины программно или цепляться на быструю последовательную шину. И вот во втором случае чтение- модификация-запись в силу блочности обмена по SSP требуют модификации ГУИ, иначе все тормозить будет безбожно.
lebiga
Цитата(khach @ Jun 28 2007, 13:08) *
А как вы его аппаратно подключаете S1D13705 к LPC2148? А то от реализации интерфейса логика построения gui немного меняется. Т.е выполнимо ли на данном интерфейсе операции чтения- модификация-запись или нет? По причине отсутствия у LPC2148 параллельной шины возможны два варианта- симуляция параллельной шины программно или цепляться на быструю последовательную шину. И вот во втором случае чтение- модификация-запись в силу блочности обмена по SSP требуют модификации ГУИ, иначе все тормозить будет безбожно.


Я поставил две защелки HC573 на адрес - т.е. симуляция параллельной шины. В том то и дело, что операция чтение-модиф-запись - это основная операция при этой конфигурации, ведь используется в основном память S1D13705.
Причем рекомендация - напишите сначала код для записи данных в S1D13705- потом делайте схему - так не промахнетесь с быстродействием, типа A16 переносить.
Dogmatik
Цитата(lebiga @ Jun 28 2007, 21:15) *
Я поставил две защелки HC573 на адрес - т.е. симуляция параллельной шины. В том то и дело, что операция чтение-модиф-запись - это основная операция при этой конфигурации, ведь используется в основном память S1D13705.
Причем рекомендация - напишите сначала код для записи данных в S1D13705- потом делайте схему - так не промахнетесь с быстродействием, типа A16 переносить.


Спасибо за совет. С железом еще не занимался, так что ценное замечание.
Еще один вопрос. Как touchscreen подключали ? Я слышал что цепляют на
ацп процессора это реально ? Если да то как ?
lebiga
Цитата(Dogmatik @ Jun 30 2007, 09:47) *
Спасибо за совет. С железом еще не занимался, так что ценное замечание.
Еще один вопрос. Как touchscreen подключали ? Я слышал что цепляют на
ацп процессора это реально ? Если да то как ?


Я не цеплял, но смотрел код - вроде бы все без проблем. в модуле GUI_TOUCH_DriverAnalog.c вызываются функции TOUCH_X_MeasureX, TOUCH_X_MeasureY - ты их сам пишешь под одиночное измерение аналоговой координаты. Естественно - координаты X и Y. Потом все преобразовывается и настраивается под твою панель в define. Только сделай пару экспериментов - какое напряжение панели будет при касании в разных углах - и согласуй с диапазоном ацп - будет лучше работать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.