20-FATFS_Picture-Library (STM32F4)

Diese Library dient zum anzeigen von Bildern, die auf einer SD-Karte gespeichert sind.

Im Moment werden 3 Bildformate unterstützt :
1. = 16Bit (RGB565) – Image-Files (*.img)
2. = Bitmap Files (BMP, 24bpp, unkomprimiert) (*.bmp)
3. = JPG Files (*.jpg)

Für das Format Nr. 1 habe ich das PC-Programm “ImageGenerator” geschrieben. Das wandelt beliebige BMP-Files in das RGB565-Format um.

Geschwindigkeit :
Ein Image-Bild mit 240×320 Pixel (16bpp) wird in ca. 100ms gezeichnet
Ein BMP-Bild mit 240×320 Pixel (24pbb) wird in ca. 165ms gezeichnet
Ein JPG-Bild mit 240×320 Pixel wird in ca. 580ms gezeichnet

Speicherverbrauch :
Ein Image-Bild mit 240×320 Pixel braucht 153.600 Bytes
Ein BMP-Bild mit 240×320 Pixel braucht 230.454 Bytes
Ein JPG-Bild mit 240×320 Pixel braucht ca. 15.323 Bytes

Es wird für die Anzeige die LIB : “STM32_UB_LCD_ST7783″ und für die SD-Karte die LIB “STM32_UB_FATFS” benötigt.

Beispielbild :

emo_pic

Voraussetzungen :

1
2
Benutzte Module der CooCox-IDE : keine
Benutzte Librarys : STM32_UB_LCD_ST7783, STM32_UB_FATFS

Enumerationen :

1
2
3
4
5
6
7
8
9
10
11
12
typedef enum {
  PICTURE_OK =0,
  PICTURE_MEDIA_ERR,
  PICTURE_FILE_ERR,
  PICTURE_SIZE_ERR,
  PICTURE_ID_ERR,
  PICTURE_HEAD_ERR,
  PICTURE_WIDTH_ERR,
  PICTURE_HEIGHT_ERR,
  PICTURE_BPP_ERR,
  PICTURE_COMPR_ERR,
}PICTURE_ERR_t;

Funktionen :

1
2
3
PICTURE_ERR_t UB_Picture_DrawImage(const char* name, uint16_t xpos, uint16_t ypos); // zeichnet ein Image-File von SD-Karte
PICTURE_ERR_t UB_Picture_DrawBmp(const char* name, uint16_t xpos, uint16_t ypos);   // zeichnet ein BMP-File von SD-Karte
PICTURE_ERR_t UB_Picture_DrawJpg(const char* name, uint16_t xpos, uint16_t ypos);   // zeichnet ein JPG-File von SD-Karte

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//--------------------------------------------------------------
// File     : main.c
// Datum    : 13.03.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der Picture Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_picture.h"
 
int main(void)
{
  FATFS_t check_fat;
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // Init vom LCD (Landscape Mode)
  UB_LCD_Init();
  UB_LCD_SetMode(LANDSCAPE);
  UB_LCD_FillScreen(RGB_COL_GREEN);
 
  // Init der FATFS-Lib
  UB_Fatfs_Init();
 
  // SD-mounten
  check_fat=UB_Fatfs_Mount(MMC_0);
  if(check_fat==FATFS_OK) {
    // Windows-BMP von SD-Karte laden
    // und auf dem Display anzeigen
    UB_Picture_DrawBmp("emo.bmp",0,0);
 
    UB_Fatfs_UnMount(MMC_0);
  }
 
  while(1)
  {
 
  }
}

Hier die Library zum Download :

ub_stm32f4_fatfs_picture_v103

Hier der komplette CooCox-Projektordner zum Download :

Demo_20_FATFS_Picture

Hier der Link zu dem PC-Programm :

PC-Programme

3 Antworten auf 20-FATFS_Picture-Library (STM32F4)

  1. Cortex-Einsteiger sagt:

    Hinweis: man muss unbedingt auf die Orientierung achten, 240×320 sind nicht 320×240
    BMPs funktionieren problemlos, bei JPGs ist die Lib etwas zickig und macht bei mir manchmal Anzeigefehler rein (notfalls mit Paint in BMP wandeln), IMG-Files hatte ich keine leider da.

    Bitte überprüfe den Imagegenerator Downloadlink, bei mir führt er ins Leere.

    • admin_ub sagt:

      Danke für den Hinweis, Link habe ich aktuallisiert.

  2. Pappnase sagt:

    Ändere bitte mal das “unkompremiert” nach “unkomprimiert”. Danke.


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert