Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2016:stm32f429-jpeg

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2016:stm32f429-jpeg [2017/01/15 14:55]
Jan Vorálek [Úvod]
2016:stm32f429-jpeg [2017/01/15 21:04] (aktuální)
Jan Vorálek [Závěr]
Řádek 2: Řádek 2:
 Na vývojové desce 32F429IDISCOVERY implementujte USB mass storage (MSD). Po nahrání JPEG souboru jej dekomprimujte pomocí vhodné knihovny (např. TJpgDec) a zobrazte na displeji vývojového kitu spolu s informacemi o obrázku. Na vývojové desce 32F429IDISCOVERY implementujte USB mass storage (MSD). Po nahrání JPEG souboru jej dekomprimujte pomocí vhodné knihovny (např. TJpgDec) a zobrazte na displeji vývojového kitu spolu s informacemi o obrázku.
 ======Úvod====== ======Úvod======
-Cílem projektu je napsat program pro vývojovou desku STM32F429IDiscovery. Po připojení k počítači pomocí USB se má tato deska chovat jako mass storage. Pokud je nahrán obrázek ve formátu JPG, má být s pomocí vhodné knihovny zpracován a zobrazen na LCD displeji. Spolu s obrázkem mají být zobrazeny i základní informace o obrázku.+Cílem projektu je napsat program pro vývojovou desku STM32F429IDiscovery. Po připojení k počítači pomocí USB se má tato deska chovat jako mass storage ​(podobně jako např. flash disk). Pokud je nahrán obrázek ve formátu JPG, má být s pomocí vhodné knihovny zpracován a zobrazen na LCD displeji. Spolu s obrázkem mají být zobrazeny i základní informace o obrázku.
 ======Hardware====== ======Hardware======
-V projektu byla použita vývojová deska 32F429IDISCOVERY s procesorem ​STM32f429ZIT. Součástí desky je LCD displej o rozlišení 320x240 pixelů, který je ovládán pomocí LTDC (LCD TFT Display Controller) periferie procesoru. Dále deska obsahuje paměť SDRAM, která je nezbytná pro uložení obrazu LCD displeje, jelikož interní paměť procesoru nemá dostatečnou velikost. ​+V projektu byla použita vývojová deska 32F429IDISCOVERY s procesorem ​STM32F429ZIT6. Součástí desky je LCD displej o rozlišení 320x240 pixelů, který je ovládán pomocí LTDC (LCD TFT Display Controller) periferie procesoru. Dále deska obsahuje paměť SDRAM, která je nezbytná pro uložení obrazu LCD displeje, jelikož interní paměť procesoru nemá dostatečnou velikost. ​
  
 {{ 2016:​stm32f429-jpeg:​dev_kit.jpg }} {{ 2016:​stm32f429-jpeg:​dev_kit.jpg }}
Řádek 14: Řádek 14:
  
 ====Obsluha SDRAM==== ====Obsluha SDRAM====
-Procesor přistupuje k paměti pomocí periferie FMC (Flexible Memory Controller). Inicializační kód pro FMC byl vygenerován pomocí STM32CubeMX. Bylo však potřeba doplnit funkci provádějící inicializační sekvenci paměti, která závisí na konkrétní použité paměti. Tato funkce (''​void SDRAM_Initialization_Sequence(SDRAM_HandleTypeDef *hsdram)''​) byla převzata z [1].+Procesor přistupuje k paměti pomocí periferie FMC (Flexible Memory Controller). Inicializační kód pro FMC byl vygenerován pomocí STM32CubeMX. Bylo však potřeba doplnit funkci provádějící inicializační sekvenci paměti, která závisí na konkrétní použité paměti. Tato funkce (''​void SDRAM_Initialization_Sequence(SDRAM_HandleTypeDef *hsdram)''​) byla převzata z [5].
 Použitá paměť má kapacitu 8MB a je namapována na paměťový prostor 0xD0000000 až 0xD0800000. Tento prostor byl rozdělen následujícím způsobem: Použitá paměť má kapacitu 8MB a je namapována na paměťový prostor 0xD0000000 až 0xD0800000. Tento prostor byl rozdělen následujícím způsobem:
   *0xD0000000 až 0xD012FFFF- Paměť pro obrazová data LCD displeje (screen buffer)   *0xD0000000 až 0xD012FFFF- Paměť pro obrazová data LCD displeje (screen buffer)
Řádek 30: Řádek 30:
  
 ====Zpracování a zobrazení obrázku==== ====Zpracování a zobrazení obrázku====
-Pro zpracování obrázku byla použita knihovna TJpgDec. Tato knihovna používá pouze dvě API funkce, ''​JRESULT jd_prepare(...)''​ pro přípravu dekomprese a ''​JRESULT jd_decomp(...)''​ pro samotnou dekompresi jpg obrázku. ​ Dále je třeba ​vytovořit dvě callback funkce pro čtení a zápis dat (''​UINT in_func(...)'',​ ''​UINT out_func(...)''​). Postup zpracování obrázku závisí na jeho rozlišení,​ které je zjištěno při přípravě k dekompresi. Mohou nastat tyto možnosti:+Pro zpracování obrázku byla použita knihovna TJpgDec. Tato knihovna používá pouze dvě API funkce, ''​JRESULT jd_prepare(...)''​ pro přípravu dekomprese a ''​JRESULT jd_decomp(...)''​ pro samotnou dekompresi jpg obrázku. ​ Dále je třeba ​vytvořit dvě callback funkce pro čtení a zápis dat (''​UINT in_func(...)'',​ ''​UINT out_func(...)''​). Postup zpracování obrázku závisí na jeho rozlišení,​ které je zjištěno při přípravě k dekompresi. Mohou nastat tyto případy:
   -**rozlišení obrázku souhlasí s rozlišením displeje**\\ Nejjednodušší případ, obrázek je vykreslován na displej již při dekompesi.   -**rozlišení obrázku souhlasí s rozlišením displeje**\\ Nejjednodušší případ, obrázek je vykreslován na displej již při dekompesi.
   -**jeden rozměr obrázku souhlasí s příslušným rozměrem displeje, druhý je menší**\\ Obrázek je také vykreslován už při dekompresi, je však posunut tak, aby byl na středu displeje. Před začátkem dekomprese je obsah displeje smazán, po stranách obrázku jsou tedy černé pruhy.   -**jeden rozměr obrázku souhlasí s příslušným rozměrem displeje, druhý je menší**\\ Obrázek je také vykreslován už při dekompresi, je však posunut tak, aby byl na středu displeje. Před začátkem dekomprese je obsah displeje smazán, po stranách obrázku jsou tedy černé pruhy.
Řádek 40: Řádek 40:
 ======Závěr====== ======Závěr======
 Vývoj se obešel bez větších problémů a zadání se podařilo splnit v plném rozsahu. Níže je uvedeno video, které demonstruje funkci přípravku na obrázcích s různým rozlišením a poměrem stran. Vývoj se obešel bez větších problémů a zadání se podařilo splnit v plném rozsahu. Níže je uvedeno video, které demonstruje funkci přípravku na obrázcích s různým rozlišením a poměrem stran.
 +{{youtube>​-agfH936UVI?​medium}}
 +Zdrojový kód: {{2016:​stm32f429-jpeg:​mpoa_projekt_voralek.zip}}
 +
 +
  
 ======Použité zdroje====== ======Použité zdroje======
Řádek 50: Řádek 54:
 [4]http://​elm-chan.org/​fsw/​tjpgd/​00index.html [4]http://​elm-chan.org/​fsw/​tjpgd/​00index.html
  
-[1]http://​www.st.com/​en/​embedded-software/​stm32cubef4.html\\ STM32Cube_FW_F4_V1.14.0\Projects\STM32F429I-Discovery\Examples\FMC\FMC_SDRAM\Src\main.c+[5]http://​www.st.com/​en/​embedded-software/​stm32cubef4.html\\ STM32Cube_FW_F4_V1.14.0\Projects\STM32F429I-Discovery\Examples\FMC\FMC_SDRAM\
  
 Obrázek vývojové desky:\\ http://​cz.rs-online.com/​web/​p/​vyvojove-sady-pro-procesory-a-mikrokontrolery/​7892815/​ Obrázek vývojové desky:\\ http://​cz.rs-online.com/​web/​p/​vyvojove-sady-pro-procesory-a-mikrokontrolery/​7892815/​
  
 Obrázky použité v demonstračním videu:\\ Obrázky použité v demonstračním videu:\\
 +http://​imagedatabase.cs.washington.edu/​demo/​P7180319.jpg\\
 +http://​maxpixel.freegreatpicture.com/​static/​photo/​640/​Nepal-The-Himalayas-Mountain-Mountains-Ama-Dablam-1664805.jpg\\
 +https://​believinginchristjesus.files.wordpress.com/​2013/​08/​eagle.jpg\\
 +https://​clairemcc155.files.wordpress.com/​2013/​10/​bearded-dragon-lizard.jpg\\
 +http://​animal-dream.com/​data_images/​lizard/​lizard4.jpg\\
 +http://​paper4pc.com/?​module=images&​act=downloadResize&​file=nature-wallpapers-hd-wallpaper-3.jpg&​x=5120x2048&​y=
2016/stm32f429-jpeg.1484488525.txt.gz · Poslední úprava: 2017/01/15 14:55 autor: Jan Vorálek