这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【M5STACK TAB5 W/O BATTERY】--SD卡读写及图片文件显示

共3条 1/1 1 跳转至

【M5STACK TAB5 W/O BATTERY】--SD卡读写及图片文件显示

菜鸟
2026-01-07 23:36:42     打赏

      本篇讲述SD卡读写及图片显示功能。

一.硬件原理与准备

      开发板带有SD卡座,原理如下:

1_SD卡原理图.png

      这里使用SPI口,硬件引脚定义如下:

CS     --GPIO42

SCK   --GPIO43

MOSI--GPIO44

MISO--GPIO39

      准备一张SD卡,容量32GB以下(使用64GB的读不出来),FAT32格式。在SD里用读卡器放入以下图片1280*760,我这里放了png格式和jpg格式图片文件。

2_SD卡与图片文件.png

      将准备好文件的SD卡插入卡座。


二.代码准备

1.sd卡引脚定义

#define SD_SPI_CS_PIN   42
#define SD_SPI_SCK_PIN  43
#define SD_SPI_MOSI_PIN 44
#define SD_SPI_MISO_PIN 39

2.sd卡初始化并检测SD卡是否识别插入

// SD Card Initialization
    SPI.begin(SD_SPI_SCK_PIN, SD_SPI_MISO_PIN, SD_SPI_MOSI_PIN, SD_SPI_CS_PIN);
    if (!SD.begin(SD_SPI_CS_PIN, SPI, 25000000)) {
        // Print a message if SD card initialization failed or if the SD card does not exist.
        M5.Display.print("\n SD card not detected\n");
        while (1);
    } else {
        M5.Display.print("\n SD card detected\n");
    }
3.SD卡读写文件

// Write TXT file
    M5.Display.print("\n SD card write test...\n");
    auto file = SD.open("/WriteTest.txt", FILE_WRITE, true);
    if (file) {
        file.print("Hello, world! \nSD card write success! \n");
        file.close();
        M5.Display.print(" SD card write success\n");
    } else {
        M5.Display.print(" Failed to create TXT file\n");
    }
    delay(1000);
    M5.Display.print("\n SD card read test...\n");
    if (SD.open("/TestPicture01.png", FILE_READ, false)) {
        M5.Display.print(" PNG file 01 detected\n");
    } else {
        M5.Display.print(" PNG file 01 not detected\n");
    }
    if (SD.open("/TestPicture02.png", FILE_READ, false)) {
        M5.Display.print(" PNG file 02 detected\n");
    } else {
        M5.Display.print(" PNG file 02 not detected\n");
    }

4.读出图片文件及显示

      这里使用到了PNG和JPG图片文件。

void loop()
{
    // Read PNG file and draw picture
    M5.Display.drawPngFile(SD, "/TestPicture01.png");
    delay(1500);
    M5.Display.drawPngFile(SD, "/TestPicture02.png");
    delay(1500);
    M5.Display.drawJpgFile(SD, "/C145_02_1280_760.jpg",0,0);
    delay(2000);
}

5.全部代码如下

#include <Arduino.h>
#include <SPI.h>
#include <SD.h>
#include <M5Unified.h>
#include <M5GFX.h>
#define SD_SPI_CS_PIN   42
#define SD_SPI_SCK_PIN  43
#define SD_SPI_MOSI_PIN 44
#define SD_SPI_MISO_PIN 39
void setup()
{
    M5.begin();
    M5.Display.setRotation(3);
    M5.Display.setFont(&fonts::FreeMonoBold18pt7b);
    // SD Card Initialization
    SPI.begin(SD_SPI_SCK_PIN, SD_SPI_MISO_PIN, SD_SPI_MOSI_PIN, SD_SPI_CS_PIN);
    if (!SD.begin(SD_SPI_CS_PIN, SPI, 25000000)) {
        // Print a message if SD card initialization failed or if the SD card does not exist.
        M5.Display.print("\n SD card not detected\n");
        while (1);
    } else {
        M5.Display.print("\n SD card detected\n");
    }
    delay(1000);
    // Write TXT file
    M5.Display.print("\n SD card write test...\n");
    auto file = SD.open("/WriteTest.txt", FILE_WRITE, true);
    if (file) {
        file.print("Hello, world! \nSD card write success! \n");
        file.close();
        M5.Display.print(" SD card write success\n");
    } else {
        M5.Display.print(" Failed to create TXT file\n");
    }
    delay(2000);
    M5.Display.print("\n SD card read test...\n");
    if (SD.open("/TestPicture01.png", FILE_READ, false)) {
        M5.Display.print(" PNG file 01 detected\n");
    } else {
        M5.Display.print(" PNG file 01 not detected\n");
    }
    if (SD.open("/TestPicture02.png", FILE_READ, false)) {
        M5.Display.print(" PNG file 02 detected\n");
    } else {
        M5.Display.print(" PNG file 02 not detected\n");
    }
    delay(5000);
}
void loop()
{
    // Read PNG file and draw picture
    M5.Display.drawPngFile(SD, "/TestPicture01.png");
    delay(1500);
    M5.Display.drawPngFile(SD, "/TestPicture02.png");
    delay(1500);
    M5.Display.drawJpgFile(SD, "/C145_02_1280_760.jpg",0,0);
    delay(2000);
}


三.调试测验

      编译烧录后,SD卡读写文件如下:

3_SD卡读写文件.jpg

      读出展示图片如下:

      整个SD卡读写文件显示图片视频如下




关键词: M5STACK     Tab5     SDCard    

专家
2026-01-08 08:14:47     打赏
2楼

谢谢分享


院士
2026-01-09 15:58:00     打赏
3楼

谢谢分享,学习了。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]