📜  向 esp32 添加额外的 ram (1)

📅  最后修改于: 2023-12-03 15:22:58.275000             🧑  作者: Mango

向 ESP32 添加额外的 RAM

简介

ESP32 是一款功能强大的微控制器,但它的默认 RAM 容量较小。有时,我们需要更多的 RAM 来存储一些临时变量或缓存数据。幸运的是,ESP32 具有外部 RAM 接口,可以轻松地将额外的 RAM 添加到 ESP32 中。

本文将介绍如何向 ESP32 添加额外的 RAM。

硬件配置

ESP32 具有 PSRAM 接口,可以通过将 PSRAM 芯片连接到 ESP32 上来增加可用 RAM 容量。PSRAM 芯片一般具有 SPI 或 QSPI 接口,因此我们需要确保所选的 PSRAM 芯片与 ESP32 的 SPI 或 QSPI 总线兼容。

请参考 ESP32 官方文档以获取更多硬件配置细节。

驱动程序

在默认情况下,ESP32 SDK 不支持外部 RAM。但是,我们可以使用 Espressif 提供的 SPI RAM 驱动程序,该驱动程序可用于与 SPI 或 QSPI 接口的 RAM 芯片交互。

驱动程序使用的主要接口如下:

  • heap_caps_malloc():使用带有指定标记的指定字节数分配内存增长到外部 RAM。

  • heap_caps_calloc():使用带有指定标记的指定元素数和每个元素大小的内存分配增长到外部 RAM。

  • heap_caps_realloc():尝试重新分配以前用 heap_caps_malloc() 或 heap_caps_calloc() 分配的 RAM,增长到外部 RAM。

驱动程序还提供了对其他内存管理功能的支持,如堆内存和 MALLOC_CAP_8BIT 标志,可在 ESP32 的默认内存池中进行内存分配。有关更多详细信息,请参阅 Espressif 官方文档。

配置选项

默认情况下,ESP32 SDK 配置文件不包括对 PSRAM 的支持。因此,我们需要相应地配置 SDK。

首先,在 menuconfig 中启用 SPI RAM 驱动程序:

Component config -> ESP32-specific -> Support for external, SPI-connected RAM

接下来,在 sdkconfig 文件中添加以下选项:

CONFIG_SPIRAM_TYPE_ESPPSRAM32=y
CONFIG_SPIRAM_SIZE_16MB=y

这将使 SDK 配置为支持 ESP32 兼容的 PSRAM 芯片,大小为 16 MB。

示例程序

以下是一个简单的示例程序,展示了如何在 ESP32 上使用外部 RAM:

#include "esp_heap_caps.h"

void example() {
    uint8_t *mem = (uint8_t*) heap_caps_malloc(1024, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
    if (mem == NULL) {
        /* handle error */
    }
    /* use mem... */
    heap_caps_free(mem);
}

该代码将从外部 SPI RAM 中分配 1024 字节的内存,并使用该内存。在完成使用后,该代码将释放内存。

结论

如您所见,向 ESP32 添加额外的 RAM 非常容易。通过连接一个 PSRAM 芯片并使用 Espressif 提供的 SPI RAM 驱动程序,您可以将可用 RAM 容量增加到 16 MB。

我们希望本文能帮助您了解如何向 ESP32 添加额外的 RAM。如有任何疑问或建议,请随时联系我们。