这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » SD读写模块与Max98357模块的联动测试(一)-----测试SD读写模块

共1条 1/1 1 跳转至

SD读写模块与Max98357模块的联动测试(一)-----测试SD读写模块

专家
2026-06-03 11:37:10     打赏

买了SD读写模块很久了,印象里买来之后就没有进行过测试。后来又买了Max98357模块,在学习了I2S相关的知识以后,也被放到了一边。这几天想起来这两个模块,准备重新捡起来,编程测试。测试Max98367的过程中使用过ESP8266RP2040ESP32C3,开发语言用过CMicroPython。测试SD读写模块用过RP2040ESP32C3ArduinoMega2560。最终终于通过使用ESP32C3SD读写模块、Max98357完成了读SD卡中的WAV文件,并完成播放的测试。现在把整个过程分解为SD卡处理部分和Max98357处理部分两大块,注意发帖记录成果的处理结果。

我买到的SD卡读写模块有两种: 

两种。大的那种,无论怎么测试都没有通过。小的,首先通过Arduino Mega2560完成了测试。

SD模块与开发板的连接情况,在代码中注明了,不再单独列出。程序代码如下:

#include <SPI.h>
#include <SD.h>
 
/**
// 接mega2560开发板
SD卡模块引脚  Mega2560    说明
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
CS       53       片选引脚
MOSI      51       主设备输出,Mega通过此引脚向SD卡发送数据。
MISO      50        主设备输入,Mega通过此引脚从SD卡读取数据。
SCK       52       串行时钟
VCC       5V        为模块供电,SD卡模块本身带有稳压芯片,可提供3.3V。
GND       GND       地
------------------------------------------------------------------------------------------------------------------------------------------------------------------
*/
 
// 定义CS引脚,mega2560场合,这里使用GPIO53
//const int chipSelect = 53;
// 定义CS引脚,ESP32C3场合,这里使用GPIO4
const int chipSelect = 4;
const unsigned char* filename = "/data.txt";
 
File myFile;
 
Sd2Card card;
SdVolume volume;
SdFile root;
 
void setup() {
  Serial.begin(115200);  
  delay(1000);           // 等待串口稳定
 
  Serial.print("\n正在初始化SD卡...");
 
  // 关键:初始化SD卡,参数为CS引脚号
  // 注意:即使你不使用GPIO10,也建议将其设为输出以保证SD库正常工作,实际我用的GPIO53
  pinMode(10, OUTPUT);
  
  if (!SD.begin(chipSelect)) {
    Serial.println("初始化失败!请检查接线或卡是否正确插入。");
    return;
  }
  Serial.println("初始化成功。");
 
  if (SD.exists(filename)) {
    Serial.println("data.txt文件存在。");
    if (SD.remove(filename)) {
      Serial.println("删除data.txt文件成功。");
    } else {
      Serial.println("删除data.txt文件失败!");
    }
  }
 
  // ---------- 写入数据 ----------
  // 打开文件(如果文件不存在,会创建它;FILE_WRITE意为追加模式)
  myFile = SD.open(filename, FILE_WRITE);
 
  if (myFile) {
    Serial.print("正在写入 data.txt ...");
    // 写入一行数据
    myFile.println("Hello from Mega2560!");
    myFile.print("当前时间戳: ");
    myFile.println(millis());
    // 关闭文件(非常重要,确保数据实际保存)
    myFile.close();
    Serial.println("写入完成。");
  } else {
    Serial.println("打开文件(用于写入)失败!");
  }
 
  // ---------- 读取数据 ----------
  // 重新打开文件(默认只读模式)
  myFile = SD.open(filename);
 
  if (myFile) {
    Serial.println("读取 data.txt 内容:");
    // 逐字节读取并打印到串口
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close();
    Serial.println("\n读取结束。");
  } else {
    Serial.println("打开文件(用于读取)失败!");
  }
}
 
void loop() {
}

在完成建立文件、读写测试后,将SD卡连上电脑,找到data.txt文件并查看内容,确认了测试结果无误。





关键词: 大懒猫的试用笔记     Mega2560     SD卡模块    

共1条 1/1 1 跳转至

回复

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