3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
1 | |
STemWin на STM32F4. Первый опыт. Вопросы.21.12.2013, 23:06. Показов 821713. Ответов 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. Я видел конструкцию Код
#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 Внешней памяти у меня нет, в силу урезанности FSMC на 100-ногих процах. Или что, оно работает только на 429-Dyscovery, где стоит 8-метровый чип SDROM? Охренеть... Дал ей пока 64К, но рекомендаций по этим объёмам я не нашёл. Сколько ей надо? Спасибо. [23.93 Кб] [18.45 Кб]
1
|
21.12.2013, 23:06 | |
Ответы с готовыми решениями:
1103
Измерение уровней звука. Вопросы. Первый опыт. Сравнительно мистический баг в Coocox: stemwin и stm32f4 Вопросы по STM32F4 STM32F4-Discovery(подключение и глупые вопросы) |
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
|
|
22.12.2013, 00:29 | 2 |
Сообщение от hd44780
Сообщение от hd44780
Сообщение от hd44780
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
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
22.12.2013, 19:59 | 10 |
Сообщение от Dimox
0
|
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
|
|
22.12.2013, 20:11 | 11 |
Сообщение от OtyxPM
он дал)) даташиты на китайском, а пример с китайскими комментами и явно не под 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
Подскажите, чем подключали дисплей к плате? Купил шлейф, но читал на форумах, что из-за приличной длины (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
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
Немного повозился с тачскрином, оказывается, если не делать подтяжку на 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 | |
23.12.2013, 19:24 | |
Помогаю со студенческими работами здесь
20
STM32F4+ETH(Вопросы по PHY KSZ8863) [решено]stm32f4 ethernet phy вопросы Первый опыт Первый опыт Моддинг - первый опыт Первый опыт знакомства с Qt Первый опыт с USART Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |