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

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

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

Студворк — интернет-сервис помощи студентам
Вот, задумавшись о 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.

Я видел конструкцию
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2013, 23:06
Ответы с готовыми решениями:

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

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

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

1103
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
22.12.2013, 00:29
Цитата Сообщение от 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
Р.S. В либе от ST забыли включить hard DSP. Поэтому отказался от неё и пользуюсь Keil.
0
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
22.12.2013, 09:03
hd44780. схемку не скините подключения? SD бортовую тоже подключали? Лещит у меня такой 5" думаю сделать суровый российский смартфон :-)
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
22.12.2013, 13:39
__bt__, спасибо, буду смотреть. Сейчас решил тачем заняться.

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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 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
Цитата Сообщение от hd44780
Сейчас решил тачем заняться.
Я подключал тач ногодрыгом. Если нужно скину код. НО это ногодрыг.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
22.12.2013, 15:26
Спасибо, пока не надо.
У меня есть рабочий драйверок через SPI3 плюс пара доп. ног для nCS и IRQ. Сижу ковыряю, как его привинтить к STemWin.
Нашёл в интернете примерчик, изучаю.
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
22.12.2013, 15:58
посмотрите пример от StEmWin. Там драйвер на SPI шине грамотно привязан к либе.
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
22.12.2013, 19:51
Цитата Сообщение от hd44780
Могу кинуть свои либы. Самое главное здесь - отладьте на тестовой прошивке инициализацию дисплея и все базовые операции типа вывод точки, битмапа и пр.
можете кинуть что нибудь для начала? демку, или либы...
купил вот такой дисплей, тоже SSD1963, только не знаю с чего начать? ((
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
22.12.2013, 19:59
Цитата Сообщение от 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
Цитата Сообщение от 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
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
Цитата Сообщение от hd44780
Dimox, ловите
Безмерно благодарен, будет с чего начать)

Подскажите, чем подключали дисплей к плате?
Купил шлейф, но читал на форумах, что из-за приличной длины (20см) наблюдаются глюки вплоть до неработоспособности.
На всякий случай купил контакты и разъемы, чтоб укоротить.
Стоит заморачиваться?
0
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
23.12.2013, 06:18
hd44780 какой у вас чип сенсора?
У меня есть рабочая библиотека для ADS7843
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
23.12.2013, 13:01
Цитата Сообщение от moksir
У меня есть рабочая библиотека для ADS7843
Если я не ошибаюсь существует не много контроллеров тачскринов из них ADS7843 / XPT2046 аналоги.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
23.12.2013, 13:26
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
Цитата Сообщение от hd44780
Ну и на закуску ещё одна хрень.
Я понимаю, что защитный полиэтилен на дисплее защищает его от царапин ...
Но в моём конкретном случае из-за этой долбаной плёнки тач дико глючил ...
Да, такая хрень имеет место быть :-) Но я её использую для доведения кода драйвера до совершенства (в плане чувствительности, точности, безошибочности, скорости отклика). Когда необъезженный мустанг тач с плёнкой сдаётся и начинает работать удовлетворительно, тогда плёнка торжественно сдирается и выбрасывается. Тач же работает хорошо. :-)
0
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
23.12.2013, 14:35
hd44780, про ADS7843 в курсе, по этому нужно делать калибровку перед использованием устройства. а потом хранить где-то.
У меня набор Open407V-D там экран 3.5" с этим сенсором, поставляемый пример работы с этим экраном я переделал под Coosox, но там LCD другой.
Про пленку был прикол один из практики:
Попросили посмотреть в мед. лаборатории аппарат-анализатор, что-то сбоил, в нем интерфейс через аналогичный экран с тач, так вот на наем за более чем год работы эта пленка стала практически матовой, я недолго думая содрал ее, чем вызвал бешеную радость лаборанш, они оказывается мучились выглядывали сквозь ее и не знали что это была защитная пленка :-)
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
23.12.2013, 16:01
Цитата Сообщение от hd44780
Но в моём конкретном случае из-за этой долбаной плёнки тач дико глючил, на выходе IRQ контроллера тача почти всё время были импульсы с частотой под 100 кГц (даже когда в него никто ничем не тычет). В итоге тач был фактически неработоспособен.
Вот отсюда:
Немного повозился с тачскрином, оказывается, если не делать подтяжку на TP_IRQ ads7843, то считываемые данные скачут в пределах поля видимости, и сложно отследить — реальное нажатие или глюк.

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

Я сейчас продолжаю то, о чём писал вначале - STemWin.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2013, 19:24
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru