|
HY-Mini STM32V + STemGUI, Конфигурирование STemGUI под SSD1289 |
|
|
|
Oct 10 2014, 06:23
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 26-09-14
Пользователь №: 82 927

|
Добрый день, товарищи Раскуриваю даташиты и разнообразные примеры, в том числе и на забугорных сайтах, уже больше недели, но скорость продвижения только замедляется. Помогите, пожалуйста. Имеется плата HY-Mini STM32V, купленная на ибее. Выбрал ее за такой комплекс периферии:  - Контроллер STM32F103VCT6
- Дисплей 320х240, 65536 цветов на контроллере SSD1289, подключенный по 16bit параллельному FSMC интерфейсу
- Тачскрин на контроллере ADS7843 (по SPI подключен).
- Слот microSD и прочее...
Скачал библиотеку STemGUI с офф. сайта ST Microelectronics. В процессе чтения даташита на эту библиотеку стало понятно, что это известная платная библиотека emGUI, похоже купленная ST и выложенная свободно, возможно, в какой-то ограниченной комплектации, но драйвер для распространенных контроллеров SSD1289 у ней в комплекте. И находится он там в файле LCDConf_FlexColor_Template. На сайте производителя этой отладочной платы я нашел разнообразные примеры, в том числе и STemGUI, он компилируется, но не работает. Судя по всему его код не полностью портирован с одной из официальных отладочных ST'шных плат на эту, и, кроме того, библиотека, предлагаемая ST, сейчас уже откомпилирована в lib-файл, а этот пример - нет, и в итоге мало чего общего в них я заметил. Прилагаю к этому посту код моего проекта в Keil4, и даташиты железа.  Помогите, пожалуйста, разобраться куда в этой библиотеке вписать адреса памяти для работы с LCD по FSMC, буду очень признателен, если покажете в каком месте даташита к контроллеру SSD1289 указаны конкретные адреса его памяти. И где в этой библиотеке настраиваются пины контроллера, к которым подключен LCD и Тач. Сейчас мой проект при компиляции выдает следующие ошибки: Error: L6406E: No space in execution regions with .ANY selector matching guiconf.o(.bss). Error: L6407E: Sections of aggregate size 0x800000 bytes could not fit into .ANY selector(s). Т.е. я так понимаю, первая проблема - это не настроенные адреса памяти вообще, есть мысль, что настраиваются они вот здесь, в файле GUIConf.c: Код #define GUI_NUMBYTES 0x200000
void GUI_X_Config(void) { // // 32 bit aligned memory area // static U32 aMemory[GUI_NUMBYTES / 4]; // // Assign memory to emWin // GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES); // // Set default font // GUI_SetDefaultFont(GUI_FONT_6X8); } Изменение значения GUI_NUMBYTES на наличие ошибок влияния не дает. Файлы моего проекта с библиотеками скачать можно здесь: STemWinProject.rar
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Oct 10 2014, 07:41
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(electrotehnik @ Oct 10 2014, 09:23)  Изменение значения GUI_NUMBYTES на наличие ошибок влияния не дает. Надо изменить размер экрана в LCDConf.c Скажем вот так: Код #define XSIZE_PHYS 2 //было 240 // To be adapted to x-screen size #define YSIZE_PHYS 2 //было 320 // To be adapted to y-screen size И сразу увидите другую ошибку. Которая говорит что драйверов у вас на самом деле нет. И похоже либа изначально сконфигурирована на прямое мапирование видеобуфера. А на плате нет внешней шины. Т.е. сама библиотека уже не подходит.
|
|
|
|
|
Oct 10 2014, 08:23
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 26-09-14
Пользователь №: 82 927

|
Да разработчики же этой библиотеки утверждают, что она универсальна.
|
|
|
|
|
Oct 10 2014, 08:32
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(electrotehnik @ Oct 10 2014, 11:23)  Да разработчики же этой библиотеки утверждают, что она универсальна. Да универсальна, пока не скомпилирована. Я года три назад как раз на STM32F103 ее выкладывал с поддержкой TTF шрифтов. Но то было на внешней памяти. Без буффера экрана эта GUI превращается просто в тормоза. А на вашей плате места для такого буфера даже нет. А как скомпилирована либа от ST, трудно сказать, исходники они же не дают .
|
|
|
|
|
Oct 10 2014, 08:51
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 26-09-14
Пользователь №: 82 927

|
чем отличается FSMC от "прямого мапирования видеобуфера"? Вот такую библиотеку нашел STemWin, не откомпилированную, а под одну из их отладочных плат, и которая тоже работает на STM32F103 и LCD по FSMC подключен. Это одна из тех библиотек, которые предлагаются на сайте производителя моего железа. Библиотека STemWin от разработчиков платыЯ так понимаю, это то, что нужно?
Сообщение отредактировал electrotehnik - Oct 10 2014, 08:52
|
|
|
|
|
Oct 10 2014, 08:56
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(electrotehnik @ Oct 10 2014, 11:42)  чем отличается FSMC от "прямого мапирования видеобуфера"? Под прямым мапирование я имел в виду отображение памяти видеоконтроллера на область памяти в STM32 И на такую память настроена либа. А на вашей плате видеоконтроллер для STM32 представлен как два регистра. Цитата(electrotehnik @ Oct 10 2014, 11:51)  Я так понимаю, это то, что нужно? Нет конечно, это фрагменты демок для Discovery. Там внешняя шина полная выведена.
|
|
|
|
|
Oct 10 2014, 08:58
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 26-09-14
Пользователь №: 82 927

|
Цитата(AlexandrY @ Oct 10 2014, 08:56)  ..Там внешняя шина полная выведена. Вас не затруднит показать, как выглядит полная внешняя шина?
|
|
|
|
|
Oct 10 2014, 09:13
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 26-09-14
Пользователь №: 82 927

|
Спасибо. Для этой платы буду искать другую библиотеку GUI. Например, сейчас уже с uGFX знакомлюсь. Объектно-ориентированного интерфейса для проектирования экрана(-ов) у нее пока нет. Но зато есть несколько рабочих виджетов. Сайт проекта uGFXМожет кто-то еще посоветует что-то? Из бесплатного.
|
|
|
|
|
Oct 10 2014, 09:59
|
Группа: Участник
Сообщений: 11
Регистрация: 4-12-11
Из: Киев
Пользователь №: 68 670

|
Не работал с STemGUI, думаю глобальных отличий от EmWin нет. Есть два драйвера которые поддерживают контроллер SD1289: GUIDRV_FLEXCOLOR и GUIDRV_COMPACT_COLOR_16. Их различие состоит в том, что драйвер GUIDRV_FLEXCOLOR - runtime configurable, то есть может конфигурироваться во время работы, а параметры драйвера GUIDRV_COMPACT_COLOR_16 задаются во время компиляции ( compile time configurable). В этих драйверах уже учтены необходимые адреса памяти и регистров их вручную настраивать не надо. Цитата Error: L6406E: No space in execution regions with .ANY selector matching guiconf.o(.bss). Error: L6407E: Sections of aggregate size 0x800000 bytes could not fit into .ANY selector(s). Эти ошибки говорят, что задано слишком большой размер памяти для GUI, необходимо уменьшить, чем меньше это значение тем заметнее будут перерисовки. Можете попробовать Код #define GUI_NUMBYTES (320*240) AlexandrY верно подсказал, необходимо задать размеры экрана: Код #define XSIZE_PHYS 320 #define YSIZE_PHYS 240 Для полноценной работы необходимо такие функции: 1. Инициализация дисплея a) Инициализируется вся необходимая для дисплея периферия : FSMC, GPIO, PWM для подсветки) б) Запись в регистры необходимых параметров (количество цветов, поворот, интерфейс) Эта функцию необходимо вызвать в функции LCD_X_DisplayDriver, в случае LCD_X_INITCONTROLLER. 2. Считывание и запись слов и массивов (указатели на эти функции будут использоваться в драйвере) Код void LCD_X_Write00_16(U16 c); void LCD_X_Write01_16(U16 c); U16 LCD_X_Read01_16 (void); void LCD_X_WriteM01_16(U16 * pData, int NumWords); void LCD_X_ReadM01_16 (U16 * pData, int NumWords); Последний пункт оформление функции LCD_X_Config, в которой настраивается сам драйвер, вот пример моей: Код GUI_DEVICE * pDevice; CONFIG_FLEXCOLOR Config = {0}; GUI_PORT_API PortAPI = {0}; pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR,COLOR_CONVERSION, 0, 0); Config.RegEntryMode = 0x6830; Config.Orientation = GUI_SWAP_XY|GUI_MIRROR_X|GUI_MIRROR_Y; GUIDRV_FlexColor_Config(pDevice, &Config); LCD_SetSizeEx (0,XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx(0, XSIZE_PHYS * NUM_VSCREENS, YSIZE_PHYS);
LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx(0, XSIZE_PHYS * NUM_VSCREENS, YSIZE_PHYS); PortAPI.pfWrite16_A0 = LCD_X_Write00_16; PortAPI.pfWrite16_A1 = LCD_X_Write01_16; PortAPI.pfWriteM16_A1 = LCD_X_WriteM01_16; PortAPI.pfReadM16_A1 = LCD_X_ReadM01_16; GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66702, GUIDRV_FLEXCOLOR_M16C0B16); где GUIDRV_FLEXCOLOR_F66702 - идентификатор SSD1289, GUIDRV_FLEXCOLOR_M16C0B16 - формат шині ( 16bpp, no cache, 16 bit bus)
|
|
|
|
|
Oct 10 2014, 10:30
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(electrotehnik @ Oct 10 2014, 12:13)  Спасибо. Для этой платы буду искать другую библиотеку GUI. Например, сейчас уже с uGFX знакомлюсь. Объектно-ориентированного интерфейса для проектирования экрана(-ов) у нее пока нет. Но зато есть несколько рабочих виджетов. Сайт проекта uGFXМожет кто-то еще посоветует что-то? Из бесплатного. Посмотрел. Сначала порадовал список их фичей, и названия в исходниках такие многообещающие: ttf, Windows, JPEG, PNG... А потом опа в сорсах: #error "JPG support not implemented yet" Также как и ttf, антиалиасинг, окна и т.д. Окнами они называют некую примитивную структуру которая для такого "нереального" удобства сохраняет в себе только цвет фона и координаты. Ни оконной процедуры, ни сообщений, ни частичной прорисовки и перекрытий, ни оконных меню .. ничего этого нет. Знаете, я бы помучился, но достал бы рабочий uC/GUI и забыл бы все эти опенсорсы как страшный сон.
|
|
|
|
|
Oct 10 2014, 12:01
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 26-09-14
Пользователь №: 82 927

|
Цитата(valeros @ Oct 10 2014, 10:59)  ...GUIDRV_FLEXCOLOR_M16C0B16 [/b]- формат шині ( 16bpp, no cache, 16 bit bus) Это ведь актуально для подключения LCD к MCU по примеру демоплаты от ST (32F429IDISCOVERY)? А для подключения, имеющегося сейчас у меня на руках, в текущей компиляции библиотеки STemWin режима работы шины данных нет.
|
|
|
|
|
Oct 10 2014, 12:13
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(AlexandrY @ Oct 10 2014, 14:30)  Знаете, я бы помучился, но достал бы рабочий uC/GUI и забыл бы все эти опенсорсы как страшный сон. Ну собственно есть другой вариант нарушений ... )) Я пробовал библиотеку бесплатную от MICROCHIP. Она в исходниках ... Тоже вполне рабочая... )) Только для PICов позиционируется ... У меня перенос был безболезненный. Правда с того момента года 2 ушло. Смотрю они развили её достаточно серьёзно. А то uC/GUI уж больно навёрнутой показалась.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|