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

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

  • 16-битные (RGB565) — Графические файлы (* .img)
  • растровые файлы (BMP, 24bpp, без сжатия) (* .bmp)
  • 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 и отдельная библиотека для использования в других проектах, а также программы для конвертирования графических файлов. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

    Оригинал статьи

    Прикрепленные файлы:

    Добавить комментарий

    Ваш адрес email не будет опубликован.