3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
1

STemWin на STM32F4. Первый опыт. Вопросы.

21.12.2013, 23:06. Показов 821713. Ответов 1103
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот, задумавшись о GUI, решил попробовать эту либу.
Моё железо - STM32F4 (Dyscovery) и дисплей с Ebay разрешением 800х480 на контроллере SSD1963 с 16-битным интерфейсом.
Эта аппаратная связка давно обкатана и работает. Под это дело я писал свои драйверы и библиотеки. Работал с дисплеем через DMA и без него. Всё прекрасно.

Т.к. никаких заводских плат со встроенными дисплеями у меня нет, мне пришлось править и переписывать под себя конфигурационные модули STemWin. Для старта взял стандартный пример из ST-шного архива. Дальше стартовой заставки я не продвинулся, т.к. там нужен тач, а я пока не разобрался, как туда подключить мой драйвер тача. Но и тут проблемы.

В итоге получилось 2 варианта - на драйвере FlexColor (штатный драйвер STemWin, поддерживающий SSD1963) и мой собственный. Оба прилагаю.

В целом оба варианта запустились в общем-то с пол-оборота, но есть ряд непоняток:

1. На драйвере FlexColor некоторые строчки текста на экране выглядят как некий мусор. Я понимаю, что я мог где-то ошибиться, но тогда бы не работало ни-че-го, т.к. пользовательский драйвер для Flex-Color представляет собой 4 функции - запись команды/данных и запись/чтения блока. По сути это функции работы с FSMC. Плюс функция низкоуровневой инициализации SSD1963.

2. На моём драйвере все строчки рисуются нормально, но нету стрелочки курсора мыши, который есть на FlexColor. Подозреваю, что это из-за отсутствия функции вывода картинки на дисплей. В драйвере дисплея она у меня есть, но я не понял, куда её запихать в ST-шную прослойку. Да и тормозит заметно в сравнении с FlexColor.

Если кто разбирался, подскажите пожалуйста.
Если надо, я выложу полные проекты на кокосе. Блок CRC включён (просто знаю, что на этом многие ловятся, но это не мой случай).

Ещё один вопрос про память для GUI.

Я видел конструкцию
Код
#if defined (STM32F429X)
#define GUI_NUMBYTES  (1024) *  96    // x KByte
#elif defined (STM32F40XX) || defined (STM32F2XX) || defined (STM32F10X_HD_VL)
#define GUI_NUMBYTES  (1024) *  512   // x KByte
#elif defined (STM32F10X_HD)
#define GUI_NUMBYTES  (1024) *  53   // x KByte
#elif defined (STM32F10X_MD)
#define GUI_NUMBYTES  (1024) *  10   // x KByte
#elif defined (STM32F10X_MD_VL) || defined (STM32F0XX)
#define GUI_NUMBYTES  (1024) *  3   // x KByte
#elif defined (STM32F30X)
#define GUI_NUMBYTES  (1024) *  25   // x KByte
#elif defined (STM32F37X)
#define GUI_NUMBYTES  (1024) *  22   // x KByte
#elif defined (STM32T1XX_HD)
#define GUI_NUMBYTES  (1024) *  35   // x KByte
#elif defined (STM32T1XX_MD)
#define GUI_NUMBYTES  (1024) *  6   // x KByte
#else
#define GUI_NUMBYTES  (1024) *  40   // x KByte
#endif
От одного вида которой мне стало страшно. У меня проц F407, Значит я должен дать ему 512 кил оперативы.
Внешней памяти у меня нет, в силу урезанности FSMC на 100-ногих процах. Или что, оно работает только на 429-Dyscovery, где стоит 8-метровый чип SDROM? Охренеть...
Дал ей пока 64К, но рекомендаций по этим объёмам я не нашёл. Сколько ей надо?

Спасибо.

[23.93 Кб]

[18.45 Кб]
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2013, 23:06
Ответы с готовыми решениями:

Измерение уровней звука. Вопросы. Первый опыт.
Всем доброго времени суток! Тема моего проекта "Модернизация многоканального устройства контроля...

Сравнительно мистический баг в Coocox: stemwin и stm32f4
Суть вопроса примерно в том, что в один из старых проектов на stemwin я решил добавить Bluetooth...

Вопросы по STM32F4
Начал осваивать STM32F4. После недели чтения и колупания в примерах начало складываться...

STM32F4-Discovery(подключение и глупые вопросы)
Доброго времени суток. В руки попали две платки: STM32F4-Dyscovery и STM32VL-discovery. Любопытств...

1103
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
22.12.2013, 00:29 2
Цитата Сообщение от hd44780
1. На драйвере FlexColor некоторые строчки текста на экране выглядят как некий мусор.
Смотрите в сторону FSMC и тайминги чтения/записи. При выводе текста из дисплея читаются данные и делается XOR.
Цитата Сообщение от hd44780
2. На моём драйвере все строчки рисуются нормально, но нету стрелочки курсора мыши, который есть на FlexColor.
Курсор настраивается в GUIConf.h. Я думаю при наличии тачскрина он бесполезен.
Цитата Сообщение от hd44780
3. Память
Для дисплея 480х272 я ставил 32 кБ. Работало. Кол-во памяти зависит от кол-ва окон и элементов на окнах (текст, кнопки и т.д.). На STM32F4 я эту память переместил в CCM.
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
22.12.2013, 00:33 3
Р.S. В либе от ST забыли включить hard DSP. Поэтому отказался от неё и пользуюсь Keil.
0
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
22.12.2013, 09:03 4
hd44780. схемку не скините подключения? SD бортовую тоже подключали? Лещит у меня такой 5" думаю сделать суровый российский смартфон :-)
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
22.12.2013, 13:39 5
__bt__, спасибо, буду смотреть. Сейчас решил тачем заняться.

masker, ловите моё подключение:

Код
 1 - GND       + GND
2 - +Vcc      + +3v
3 - NC
4 - RS (D/nC) + CLE (PD11)
5 - nWR       + NWE (PD5)
6 - nRD       + NOE (PD4)
7 - DB8       + PE11
8 - DB9       + PE12
9 - DB10      + PE13
10 - DB11      + PE14
11 - DB12      + PE15
12 - DB13      + PD8
13 - DB14      + PD9
14 - DB15      + PD10
15 - nCS       + NCE2 (PD7)
16 - F_CS      + PB2
17 - RESIT     + pull-up 1k
18 - NC
19 - LED-A  pull-up 1-10k
20 - NC

21 - DB0      -- PD14
22 - DB1      -- PD15
23 - DB2      -- PD0
24 - DB3      -- PD1
25 - DB4      -- PE7
26 - DB5      -- PE8
27 - DB6      -- PE9
28 - DB7      -- PE10
29 - T_CLK    -- PC10
30 - T_CS     -- PB0
31 - T_DIN    -- PC12
32 - NC
33 - T_DO     -- PC11
34 - T_IRQ    -- PA15
35 - SD_DO    -- PC11
36 - SD_CLK   -- PC10
37 - SD_DIN   -- PC12
38 - SD_CS    -- PB1
39 - NC
40 - NC
Могу кинуть свои либы. Самое главное здесь - отладьте на тестовой прошивке инициализацию дисплея и все базовые операции типа вывод точки, битмапа и пр.

SD-шку подключал, вроде работала, но особо с ней не игрался. Пока предпочитаю USB флэшку :) .
F_CS - это CS микросхемы флэш-памяти. У неё интерфейс SPI, сидит она обычно на тех же ногах, что и SD.
На моём дисплее её не было, я её отдельно покупал и припаивал.
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
22.12.2013, 14:36 6
Цитата Сообщение от hd44780
Сейчас решил тачем заняться.
Я подключал тач ногодрыгом. Если нужно скину код. НО это ногодрыг.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
22.12.2013, 15:26 7
Спасибо, пока не надо.
У меня есть рабочий драйверок через SPI3 плюс пара доп. ног для nCS и IRQ. Сижу ковыряю, как его привинтить к STemWin.
Нашёл в интернете примерчик, изучаю.
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
22.12.2013, 15:58 8
посмотрите пример от StEmWin. Там драйвер на SPI шине грамотно привязан к либе.
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
22.12.2013, 19:51 9
Цитата Сообщение от hd44780
Могу кинуть свои либы. Самое главное здесь - отладьте на тестовой прошивке инициализацию дисплея и все базовые операции типа вывод точки, битмапа и пр.
можете кинуть что нибудь для начала? демку, или либы...
купил вот такой дисплей, тоже SSD1963, только не знаю с чего начать? ((
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
22.12.2013, 19:59 10
Цитата Сообщение от Dimox
купил вот такой дисплей, тоже SSD1963, только не знаю с чего начать
А почему не воспользуетесь любезным предложением продавца ("If you want to downtood data . we will sent you .thanks")? Он даст ссылку на скачивание материалов по этому дисплею, там будут, кроме даташита, работающие примеры кода.
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
22.12.2013, 20:11 11
Цитата Сообщение от OtyxPM
Цитата Сообщение от Dimox
купил вот такой дисплей, тоже SSD1963, только не знаю с чего начать
А почему не воспользуетесь любезным предложением продавца ("If you want to downtood data . we will sent you .thanks")? Он даст ссылку на скачивание материалов по этому дисплею, там будут, кроме даташита, работающие примеры кода.

он дал))
даташиты на китайском, а пример с китайскими комментами и явно не под STM32F4-Dyscovery (к которой я хочу его прикрутить)
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
23.12.2013, 00:46 12
Dimox, ловите.

Всё шаманство сидит в функции SSD1963_Init. Всё остальное можете не трогать, оно одинаково для всех..

Тупой копи-паст с чужих проектов здесь вряд ли прокатит, т.к. у разных моделей дисплеев разные матрицы и это заметно влияет на инициализацию.

Вот мой - http://www.ebay.com/itm/New-5-0-800-480 ... 4658wt_898

[26.99 Кб]
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
23.12.2013, 01:34 13
Цитата Сообщение от hd44780
Dimox, ловите
Безмерно благодарен, будет с чего начать)

Подскажите, чем подключали дисплей к плате?
Купил шлейф, но читал на форумах, что из-за приличной длины (20см) наблюдаются глюки вплоть до неработоспособности.
На всякий случай купил контакты и разъемы, чтоб укоротить.
Стоит заморачиваться?
0
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
23.12.2013, 06:18 14
hd44780 какой у вас чип сенсора?
У меня есть рабочая библиотека для ADS7843
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
23.12.2013, 13:01 15
Цитата Сообщение от moksir
У меня есть рабочая библиотека для ADS7843
Если я не ошибаюсь существует не много контроллеров тачскринов из них ADS7843 / XPT2046 аналоги.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
23.12.2013, 13:26 16
Dimox, про шлейфы, честно - не знаю.
Первое время я пользовался 40-жильными IDE шлейфами от старых компьютерных винтов, оно работало нормально.
Но потом, когда я прикрутил DMA к FSMC и начал гонять на дисплей картинки, я поймал кучу глюков - картинки портились, на них отчётливо были заметны пиксели с искажёнными цветами, ряд пикселей вообще терялся и не отрисовывался, из-за этого картинка перекашивалась, зачастую превращаясь в какое-то цветное месиво из точек. Скорее всего это происходило из-за искажений сигнала в шлейфе либо из-за длины шлейфа (всё-таки 40 см...) либо из-за плохого контакта в разъёмах.
В конце-концов меня это достало и я впаял в макетку разъём, в который втыкаю дисплей непосредственно. С тех пор, вот уж 4 месяца тех проблем нет ...
На фотографиях разных демо-плат видел дисплеи на шлейфах длиной сантиметров 10, не больше.
Поэтому мой Вам совет - не используйте шлейф вообще, впаяйте разъём в плату. Конечно, если Ваша конструкция это позволяет ...
Насчёт примеров, присланных Вам производителем. Вам надо оттуда взять только инициализацию дисплея и всё. Всё остальное у всех одинаково. Я когда парился со своим дисплеем, я вообще выдирал инициализацию с какого-то проца на x51 ядре....

masker, на этих китаёзных дисплеях стоит чип XPT2046. Других я там не видел.
Это некий китайский аналог ADS7843, у них есть какие-то отличия, но по цоколёвке и по командам они идентичны. Так что можете считать, что у Вас ADS7843. Хотя, лучше посмотрите, что там стоит конкретно на Вашем дисплее. Китайцы - народ непредсказуемый.
Единственное, что Вам придётся подбирать самому - привязку координат тача к координатам дисплея.
ADS7843 - это, фактически простейший 2-х канальный АЦП, он даёт координаты в виде чисел 0..4095 (если включить 12-битный режим), а привязку этих чисел к экранным координатам Вам надо делать самому.
Возможные особенности:
1. На разных тачах и дисплеях максимальное значение, выдаваемое АЦП, не 4095, а чуть ли не в 2 раза меньше. Это надо определять в каждом конкретном случае, иначе будет фигня.
2. Начало координат дисплея и начало координат тача - совершенно разные вещи. Производители лепят сенсоры на дисплеи руководствуясь хрен знает чем, поэтому в каком направлении эти координаты увеличиваются, а в каком уменьшаются, определяйте опять же на месте.

Ну и на закуску ещё одна хрень.
Я понимаю, что защитный полиэтилен на дисплее защищает его от царапин, многие лепят его на мобилы и прочее. Мол, гламурненько выглядит, цветовая гамма красивше и прочий бред озабоченных блондинок ...
Но в моём конкретном случае из-за этой долбаной плёнки тач дико глючил, на выходе IRQ контроллера тача почти всё время были импульсы с частотой под 100 кГц (даже когда в него никто ничем не тычет). В итоге тач был фактически неработоспособен.

Уже буквально вчера я содрал с него эту плёнку и он сразу же заработал как положено. А я его уже мысленно похоронил ....
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
23.12.2013, 14:31 17
Цитата Сообщение от hd44780
Ну и на закуску ещё одна хрень.
Я понимаю, что защитный полиэтилен на дисплее защищает его от царапин ...
Но в моём конкретном случае из-за этой долбаной плёнки тач дико глючил ...
Да, такая хрень имеет место быть :-) Но я её использую для доведения кода драйвера до совершенства (в плане чувствительности, точности, безошибочности, скорости отклика). Когда необъезженный мустанг тач с плёнкой сдаётся и начинает работать удовлетворительно, тогда плёнка торжественно сдирается и выбрасывается. Тач же работает хорошо. :-)
0
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
23.12.2013, 14:35 18
hd44780, про ADS7843 в курсе, по этому нужно делать калибровку перед использованием устройства. а потом хранить где-то.
У меня набор Open407V-D там экран 3.5" с этим сенсором, поставляемый пример работы с этим экраном я переделал под Coosox, но там LCD другой.
Про пленку был прикол один из практики:
Попросили посмотреть в мед. лаборатории аппарат-анализатор, что-то сбоил, в нем интерфейс через аналогичный экран с тач, так вот на наем за более чем год работы эта пленка стала практически матовой, я недолго думая содрал ее, чем вызвал бешеную радость лаборанш, они оказывается мучились выглядывали сквозь ее и не знали что это была защитная пленка :-)
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
23.12.2013, 16:01 19
Цитата Сообщение от hd44780
Но в моём конкретном случае из-за этой долбаной плёнки тач дико глючил, на выходе IRQ контроллера тача почти всё время были импульсы с частотой под 100 кГц (даже когда в него никто ничем не тычет). В итоге тач был фактически неработоспособен.
Вот отсюда:
Немного повозился с тачскрином, оказывается, если не делать подтяжку на TP_IRQ ads7843, то считываемые данные скачут в пределах поля видимости, и сложно отследить — реальное нажатие или глюк.

может оно?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
23.12.2013, 19:24 20
Да pull-up там на дисплее есть. Ладно, тач уже работает нормально.
OtyxPM, если выход IRQ тач-контроллера реализует некую случайную функцию, мало зависящую от реальных нажатий, то драйвер сложно написать :) .

Я сейчас продолжаю то, о чём писал вначале - STemWin.
0
23.12.2013, 19:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2013, 19:24
Помогаю со студенческими работами здесь

STM32F4+ETH(Вопросы по PHY KSZ8863)
Привет. Есть stm32f4 и желание прикрутить Ethernet с двумя портами. В качестве PHY был выбран...

[решено]stm32f4 ethernet phy вопросы
прицепил физику KSZ8051. пытаюсь завести пример с сайта стм - STM32F4x7_ETH_LwIP_V1.0.0. (со своими...

Первый опыт
День добрый форумчане. Имееться конфа УТП 1.0.19.8 типовая, обычное приложение, малость измененная...

Первый опыт
Приветствую всех! Сильно не бейте, сделал БД Автосалон, нужно для учёбы. Таблицы должны быть...

Моддинг - первый опыт
Здравствуйте, форумчане ! Хотел бы выложить свою первую работу по моддингу и услышать ваше мнение?...

Первый опыт знакомства с Qt
Ребята, подскажите пожалуйста по поводу сборки Qt под Visual Studio 2005. Я вчера раз 5 пытался...

Первый опыт с USART
Всем привет, Пытаюсь подключить ATtiny2313 к som-порту. Присоединил к max232 по даташиту....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru