ivainc1789 0 29 мая, 2021 Опубликовано 29 мая, 2021 · Жалоба Сначала у меня был дисплей на ILI9486 и мне удалось довольно быстро его настроить в STemWin, видимо потому, что он поддерживается библиотекой. Но при подключении было обнаружено, что кристаллы "потекли" (с момента покупки не проверялся и не подключался) и в конечном устройстве использовать его невозможно. Вскоре получил дисплей на NT35510, который довольно быстро удалось инициализировать и проверить на тестовых программах до подключения STemWin. Все работает без замечаний. Однако после подключения STemWin дисплей не работает, при этом инициализация его проходит нормально. Наверное, дело в том что команды NT35510 хотя в целом и похожи на ILI9486 имеют отличие - 16битный формат. Например, сброс дисплея для ILI9486: TFT_WriteCmd(01); а для NT35510: TFT_WriteCmd(0100); Возможно, дело именно в этом, но моих знаний STemWin пока не хватает, чтобы что-то поправить в библиотеке. Скорее всего, ошибка в этой функции: void LCD_X_Config(void) { GUI_DEVICE * pDevice; CONFIG_FLEXCOLOR Config = {0}; GUI_PORT_API PortAPI = {0}; // Set display driver and color conversion pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR,GUICC_565,0,0); // Orientation //Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y; Config.Orientation = GUI_SWAP_XY; //Config.Orientation = GUI_ROTATION_CW; //Config.RegEntryMode = 0x6E30; LCD_SetSizeEx(0, YSIZE_PHYS, XSIZE_PHYS); GUIDRV_FlexColor_Config(pDevice,&Config); // Set controller and operation mode PortAPI.pfWrite16_A0 = LcdWriteReg; PortAPI.pfWrite16_A1 = LcdWriteData; PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple; PortAPI.pfReadM16_A1 = LcdReadDataMultiple; GUIDRV_FlexColor_SetFunc(pDevice,&PortAPI,GUIDRV_FLEXCOLOR_F66709,GUIDRV_FLEXCOLOR_M16C0B16); } Я ее не изменял с момента использования ILI9486. Подскажите, что не так... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivainc1789 0 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба Отвечу сам себе (. Судя по мануалу, NT35510 не поддерживается. Тем не менее, я попробовал это оспорить. Система команд очень похожа, для ввода/вывода используются [в основном] команды ILI9486 0x36,2A,2B,2C,2E. NT35510 должен получить: 0x3600,0x2A00 и так далее. Причем параметры всегда однобайтовые и перед ними должна всегда выводится "инкрементированная" команда. Короче, вот функции LCDConf_FlexColor.c, которые я переписал: /******************************************************************** * * LcdWriteReg * * Function description: * Sets display register */ uint16_t cmd; // текущая команда uint8_t i; // текущий параметр команды static void LcdWriteReg(U16 Data) { // ... TBD by user Data <<= 8;cmd = Data;i=0; *(uint16_t *)ADR_CMD = Data; } /******************************************************************** * * LcdWriteData * * Function description: * Writes a value to a display register */ static void LcdWriteData(U16 Data) { // ... TBD by user if (i == 0){// первый параметр команды *(uint16_t *)ADR_DAT = Data; }else{// команда и последующий параметр команды *(uint16_t *)ADR_CMD = cmd+i;*(uint16_t *)ADR_DAT = Data; } i++; } /******************************************************************** И это работает!!! Дисплей: http://www.lcdwiki.com/3.97inch_16BIT_Module_NT35510_SKU:MRB3973 Подключение: STM32F103VET6, FSMC. Но счастье длилось недолго ибо обнаружил странный глюк при выводе текста. Взял кусок кода из UM01003 v6.18 стр 215: // пример вывода текста из UM03001_v6.18.pdf стр. 215 // вывод должен соответствовать картинке в UM03001_v6.18.pdf GUI_SetFont(&GUI_Font8x16); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); GUI_SetPenSize(10); GUI_SetColor(GUI_RED); GUI_DrawLine(80, 10, 240, 90); GUI_DrawLine(80, 90, 240, 10); GUI_SetBkColor(GUI_BLACK); GUI_SetColor(GUI_WHITE); GUI_SetTextMode(GUI_TM_NORMAL); GUI_DispStringHCenterAt("GUI_TM_NORMAL", 160, 20); GUI_SetTextMode(GUI_TM_REV); GUI_DispStringHCenterAt("GUI_TM_REV", 160, 36); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringHCenterAt("GUI_TM_TRANS", 160, 52); GUI_SetTextMode(GUI_TM_XOR); GUI_DispStringHCenterAt("GUI_TM_XOR", 160, 68); GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV); GUI_DispStringHCenterAt("GUI_TM_TRANS | GUI_TM_REV", 160, 84); К сожалению, через функции GUI_ текст выводится иногда с ошибками и пока нельзя сказать, что это из-за криво поддержанного контроллера NT35510. Текст внутри виджетов всегда выводится корректно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivainc1789 0 31 мая, 2021 Опубликовано 31 мая, 2021 · Жалоба Да, не работает вывод текста именно в режимах GUI_SetTextMode(GUI_TM_NORMAL) и GUI_SetTextMode(GUI_TM_REV). Скорее это не связано с "поддержкой" нового контроллера, я проверил какие команды посылает библиотека в контроллер при выводе текста в этих режимах. Оказалось, что ничего особенного - те же команды 2A,2B,2C. Пробовал увеличивать тайминги по FSMC - не помогло. Удивительно, что не работают только два режима вывода из пяти. Особенно жаль NORMAL, поле EDIT использует для своей инициализации именно этот режим... Что же делать?... Попробую еще поиграться с инициализацией самого контроллера, если не поможет, значит все дело в библиотеке, будем как-то жить с урезанным текстовым выводом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
W1RuuS 0 11 декабря, 2021 Опубликовано 11 декабря, 2021 · Жалоба 29.05.2021 в 21:25, ivainc1789 сказал: дисплей на NT35510, который довольно быстро удалось инициализировать и проверить на тестовых программах Приветствую. Начинающий. Уже месяц воюю с дисплеем на контроллере nt35510 ( https://aliexpress.ru/item/32807629460.html?spm=2114.13010708.0.0.569733edJNysPx&_ga=2.47249639.1993953292.1638739180-727815846.1636284356&_gac=1.118971899.1637884514.Cj0KCQiAhf2MBhDNARIsAKXU5GT8Rd1LAvk8bi2aPEsVIE99cwpb-QdUmqa6IU76QJLtIRwXg8I5wn0aApfVEALw_wcB ), удалось запустить его только на ESP32 в режиме 8b на модифицированной библиотеке ( https://github.com/Mike120Git/TFT_eSPI ). Не могли бы Вы помочь с инициализацией дисплея на STM32 ? Или "пнуть" в нужную сторону )))... Примеры от "Вавешаре" или "ЛСДвики" - "Кеил" купить - пока смысла нет (мигрировать не получается), программировать не умею вообще. А код от СТ - не смог даже запустить инициализацию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться