STM32F4. Урок 20 — Отображение изображения с SD-карты

Данная библиотека используется для отображения изображений, хранящихся на SD-карте.
Сейчас поддерживаются 3 формата изображений:

  1. 16-битные (RGB565) — Графические файлы (* .img)
  2. растровые файлы (BMP, 24bpp, без сжатия) (* .bmp)
  3. JPG файлы (* .jpg)

Для формата №1 автор написал программу «ImageGenerator» которая превращает любые файлы BMP в формат RGB565.

Скорость:

  • Image изображение с разрешением 240 × 320 пикселя (16 бит) прорисовывается примерно 100 мс
  • BMP изображение с разрешением 240 × 320 пикселей (24pbb) прорисовывается примерно 165 мс
  • JPG изображение с разрешением 240 × 320 пикселей прорисовывается примерно 580 мс

Потребление памяти:

  • Image изображение с разрешением 240 × 320 пикселей изображения требует примерно 153 600 байт
  • BMP изображение с разрешением 240 × 320 пикселей нужно 230454 байт
  • JPG изображение с разрешением 240 × 320 пикселей занимает около 15 323 байт

Для работы также необходимы следующие библиотеки: «STM32_UB_LCD_ST7783» и «STM32_UB_FATFS».

Демонстрация работы:

Требования:

   Подключаемые модули CooCox-IDE: отсутствуют.
   Поддерживаемые библиотеки: STM32_UB_LCD_ST7783, STM32_UB_FATFS.

Перечисления:

 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;

Функции:

 PICTURE_ERR_t UB_Picture_DrawImage(const char* name, uint16_t xpos, uint16_t ypos); // нарисовать Image-файл из SD-карты PICTURE_ERR_t UB_Picture_DrawBmp(const char* name, uint16_t xpos, uint16_t ypos);   // нарисовать BMP-файл из SD-карты PICTURE_ERR_t UB_Picture_DrawJpg(const char* name, uint16_t xpos, uint16_t ypos);   // нарисовать JPG-файл из SD-карты

Пример использования:

 //-------------------------------------------------------------- // File     : main.c // Datum    : 06.04.2013 // Version  : 1.1 // 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(); // инициализация настроек кварца    // инициализация LCD   UB_LCD_Init();   UB_LCD_FillScreen(RGB_COL_GREEN);    // инициализация FATFS-библиотеки   UB_Fatfs_Init();    // монтирование SD карты   check_fat=UB_Fatfs_Mount(MMC_0);   if(check_fat==FATFS_OK) { 	  // загрузить BMP-изображение с SD-карты 	  // и вывести его на дисплей 	  UB_Picture_DrawBmp("emo2.bmp",50,20);  	  // загрузить JPG-изображение с SD-карты 	  // и вывести его на дисплей 	  UB_Picture_DrawJpg("emo2.jpg",20,180);  	  UB_Fatfs_UnMount(MMC_0);   }     while(1)   {    } } 

В приложении проект CooCox и отдельная библиотека для использования в других проектах, а также программы для конвертирования графических файлов. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.