死在活的路上 2024-05-15 15:41 采纳率: 0%
浏览 64
已结题

ESP32S3怎么测试32k小数据往TF卡的写入速度

1.我想要测试ESP32S3 32k小数据往TF卡的写入速度,上电连续测试10次并通过串口在电脑显示出来?

是否有详细操作教程和代码,求指教

  • 写回答

12条回答 默认 最新

  • 阿里嘎多学长 2024-05-15 15:53
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您想要解决的问题

    您的目的是要测试ESP32S3微控制器向TF卡写入32KB小数据块的速度,并希望在上电后连续测试10次,每次测试的结果通过串口输出到电脑。

    问题出现原因

    这个问题可能出现的原因有:

    1. 不熟悉ESP32S3与TF卡的接口和通信协议。
    2. 不清楚如何测量和记录写入速度。
    3. 缺乏编写用于测试的C语言程序的经验。

    问题解决方案

    为了解决这个问题,您需要执行以下步骤:

    1. 硬件准备:确保您有一个ESP32S3开发板和一个兼容的TF卡以及读卡器。
    2. 软件准备:安装适用于ESP32S3的Arduino IDE或ESP-IDF开发环境。
    3. 编写代码:编写C语言代码,实现对TF卡的读写操作,并测量写入速度。
    4. 测试:运行代码,进行10次连续测试,并将结果输出到串口。

    提供代码

    以下是使用Arduino IDE的示例代码,用于测试ESP32S3向TF卡写入32KB数据的速度:

    #include "FS.h"
    #include "SPI.h"
    #include "SdFat.h"
    #include "sdio.h"
    
    // 定义TF卡的配置
    #define SD_CS 5
    
    // 初始化SdFat库对象
    SdFat sd;
    SdFile file;
    
    // 用于写入的32KB数据
    uint8_t buffer[32 * 1024];
    
    void setup() {
      // 初始化串口通信
      Serial.begin(115200);
      // 等待串口准备就绪
      while (!Serial) {
        delay(10);
      }
    
      // 初始化TF卡
      if (!sd.begin(SD_CS, SD_SCK_MHZ(50))) {
        sd.errorHalt(&Serial);
      }
    
      // 创建或打开文件
      if (!file.open("test.txt", FILE_WRITE)) {
        sd.errorHalt(&Serial);
      }
    
      // 填充缓冲区
      for (size_t i = 0; i < sizeof(buffer); i++) {
        buffer[i] = i;
      }
    
      // 进行10次测试
      for (int i = 0; i < 10; i++) {
        // 记录开始时间
        unsigned long start = millis();
        // 写入32KB数据
        file.write(buffer, sizeof(buffer));
        // 记录结束时间
        unsigned long end = millis();
        // 计算写入时间
        unsigned long duration = end - start;
        // 输出结果
        Serial.print("Write test ");
        Serial.print(i + 1);
        Serial.print(": ");
        Serial.print(duration);
        Serial.println(" ms");
      }
    
      // 关闭文件
      file.close();
    }
    
    void loop() {
      // 这里不做任何事情
    }
    

    代码运行方式

    1. 将ESP32S3开发板连接到电脑。
    2. 将TF卡插入读卡器,并连接到电脑。
    3. 打开Arduino IDE,安装ESP32的开发板管理。
    4. 将上述代码复制到Arduino IDE中。
    5. 选择您的ESP32S3开发板和端口。
    6. 上传代码到ESP32S3开发板。
    7. 打开串口监视器,设置正确的波特率(本例中为115200)。

    代码预期运行结果

    代码将连续运行10次写入测试,每次测试后,串口监视器会输出写入32KB数据所需的时间(以毫秒为单位)。

    推荐相关链接

    请根据实际情况调整代码中的参数和配置。如果您遇到任何问题,可以查阅上述链接中的文档或在相关社区寻求帮助。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月16日
  • 创建了问题 5月15日

悬赏问题

  • ¥15 如何能达到用ping0.cc检测成这样?如图
  • ¥15 关于#DMA固件#的问题,请各位专家解答!
  • ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?