Witam Elektrodowiczów! Jest to mój pierwszy post tutaj, mam nadzieję że umieszczam go zgodnie z regulaminem.
Zwracam się z prośbą o pomoc w sprawie STemWin. Jest to moja pierwsza styczność z nie tylko z tą biblioteką, ale też z architekturą ARM, więc od razu uprzedzam że mogłem popełnić kilka klasycznych błędów początkującego wynikających z czystego braku doświadczenia.
Do urządzenia które zaprojektowałem i już zmontowałem mam dołączony wyświetlacz TFT. Wiem że jest poprawnie dopięty do procesora, ponieważ daje się inicjować i obsługiwać bezpośrednio biblioteką HAL. Założyłem jednak obsługę bardziej zaawansowaną i wygodniejsze wydało mi się użycie biblioteki STemWin ze względu na dużą popularność i szerokie wsparcie, jednak nie umiem jej poprawnie użyć. Po zainicjowaniu wyświetlacza i (jak mi się wydaje) poprawnym zainicjowaniu biblioteki program przelatuje przez funkcje jej obsługi ale wyświetlacz kompletnie na to nie reaguje. Po przeczytaniu dokumentacji do STemWin i emWin oraz wszystkiego sensownego co udało mi się namierzyć w internecie, dochodzę do wniosku że źle adresuję pamięć... VRAM_ADDR adresuję na 0x60000000 czyli FMC Bank1, ponieważ to była jedyna wartość ze wszystkich które przetestowałem i nie zapętlała GUI_Init. Niestety jeśli faktycznie na tym polega błąd, to nie wiem jak powinienem to zrobić żeby było dobrze.
Czy mogę Was, bardziej doświadczonych użytkowników, poprosić o jakieś rady i wskazówki mogące pomóc mi w uruchomieniu tego ustrojstwa?
Pozwolę sobie wypisać wszystkie potencjalnie przydatne informacje na temat tego co mam i co zrobiłem:
Software:
- Środowisko IAR EWARM w najnowszej wersji, licencja 30-dniowa
- Biblioteka STemWin 5.22
- Bazowy kod źródłowy urządzenia wygenerowany przez STM32CubeMX
Hardware:
- Procesor STM23F429IGT6, ustawiony na taktowanie 168MHz
- Wyświetlacz Innolux AT050TN33 v.1, dopięty 24 bitowo
- Dołączony zewnętrzny RAM Hynix H57V2562GTR-75C, w CubeMX ustawiony jako FMC SDRAM Bank1
(Próbowałem dodać linki do datasheetów, ale forum mi nie pozwala ze względu na zbyt mało postów)
Firmware:
- dołączyłem preprocessorowi folder INC biblioteki stemwin
- dołączyłem linkerowi plik STemWin522_CM4_IAR.a
- dołączyłem do kompilacji pliki GUIConf.c, GUI_X.c i LCDConf.c jako LCDConf_LIN_Template.c ze zmienioną nazwą
- w pliku GUIConf.c zdefiniowałem GUI_NUMBYTES jako (1024 * 171)
- w pliku LCDConf.c zdefiniowałem wymiary wyświetlacza X/Y 480/272, COLOR_CONVERSION GUICC_8888, DISPLAY_DRIVER GUIDRV_LIN_24, VRAM_ADDR 0x60000000 oraz usunąłem LCD_SetDevFunc dotyczące nadpisania funkcji _CopyBuffer, _CopyRect, _FillRect, _DrawBitmap8bpp, _DrawBitmap16bpp
- w pliku main.c wywołuję kolejno:
RCC->AHB1ENR |= RCC_AHB1ENR_CRCEN;
GUI_Init();
GUI_SetColor(GUI_RED);
GUI_DispStringAt("Hello world!", 100, 100);
Czy jeszcze jakieś informacje powinienem teraz podać?
Zwracam się z prośbą o pomoc w sprawie STemWin. Jest to moja pierwsza styczność z nie tylko z tą biblioteką, ale też z architekturą ARM, więc od razu uprzedzam że mogłem popełnić kilka klasycznych błędów początkującego wynikających z czystego braku doświadczenia.
Do urządzenia które zaprojektowałem i już zmontowałem mam dołączony wyświetlacz TFT. Wiem że jest poprawnie dopięty do procesora, ponieważ daje się inicjować i obsługiwać bezpośrednio biblioteką HAL. Założyłem jednak obsługę bardziej zaawansowaną i wygodniejsze wydało mi się użycie biblioteki STemWin ze względu na dużą popularność i szerokie wsparcie, jednak nie umiem jej poprawnie użyć. Po zainicjowaniu wyświetlacza i (jak mi się wydaje) poprawnym zainicjowaniu biblioteki program przelatuje przez funkcje jej obsługi ale wyświetlacz kompletnie na to nie reaguje. Po przeczytaniu dokumentacji do STemWin i emWin oraz wszystkiego sensownego co udało mi się namierzyć w internecie, dochodzę do wniosku że źle adresuję pamięć... VRAM_ADDR adresuję na 0x60000000 czyli FMC Bank1, ponieważ to była jedyna wartość ze wszystkich które przetestowałem i nie zapętlała GUI_Init. Niestety jeśli faktycznie na tym polega błąd, to nie wiem jak powinienem to zrobić żeby było dobrze.
Czy mogę Was, bardziej doświadczonych użytkowników, poprosić o jakieś rady i wskazówki mogące pomóc mi w uruchomieniu tego ustrojstwa?
Pozwolę sobie wypisać wszystkie potencjalnie przydatne informacje na temat tego co mam i co zrobiłem:
Software:
- Środowisko IAR EWARM w najnowszej wersji, licencja 30-dniowa
- Biblioteka STemWin 5.22
- Bazowy kod źródłowy urządzenia wygenerowany przez STM32CubeMX
Hardware:
- Procesor STM23F429IGT6, ustawiony na taktowanie 168MHz
- Wyświetlacz Innolux AT050TN33 v.1, dopięty 24 bitowo
- Dołączony zewnętrzny RAM Hynix H57V2562GTR-75C, w CubeMX ustawiony jako FMC SDRAM Bank1
(Próbowałem dodać linki do datasheetów, ale forum mi nie pozwala ze względu na zbyt mało postów)
Firmware:
- dołączyłem preprocessorowi folder INC biblioteki stemwin
- dołączyłem linkerowi plik STemWin522_CM4_IAR.a
- dołączyłem do kompilacji pliki GUIConf.c, GUI_X.c i LCDConf.c jako LCDConf_LIN_Template.c ze zmienioną nazwą
- w pliku GUIConf.c zdefiniowałem GUI_NUMBYTES jako (1024 * 171)
- w pliku LCDConf.c zdefiniowałem wymiary wyświetlacza X/Y 480/272, COLOR_CONVERSION GUICC_8888, DISPLAY_DRIVER GUIDRV_LIN_24, VRAM_ADDR 0x60000000 oraz usunąłem LCD_SetDevFunc dotyczące nadpisania funkcji _CopyBuffer, _CopyRect, _FillRect, _DrawBitmap8bpp, _DrawBitmap16bpp
- w pliku main.c wywołuję kolejno:
RCC->AHB1ENR |= RCC_AHB1ENR_CRCEN;
GUI_Init();
GUI_SetColor(GUI_RED);
GUI_DispStringAt("Hello world!", 100, 100);
Czy jeszcze jakieś informacje powinienem teraz podać?