ESP32应用教程(2)— SD NAND(记录飞控LOG)

文章目录

前言

[1 SD NAND概述](#1 SD NAND概述)

[2 代码说明](#2 代码说明)

[3 记录Log](#3 记录Log)


前言

本文基于 ESP32 芯片作为主控制器,测试 SD NAND 记录飞控 Log 功能。


关于 MCU 的存储方面,以前基本上用内置的 E2PROM,或者是外置的 NOR Flash 就可以。随着物联网的兴起,MCU 的应用越来越广泛,逐渐的 MCU 会涉及到大容量的存储需求,用来存储音频,图片(GUI)、视频缓存、协议栈等等。传统的 E2PROM 和 NOR Flash 就不够用了。这个时候 MCU 可能就需要用到 NAND Flash。

针对 MCU 需要使用大容量的存储需求,推荐一款简单易用、稳定可靠的 NAND Flash ------ SD NAND

1 SD NAND概述

SD NAND 的架构,内部采用使用寿命最长、性能最稳定的 NAND Flash(SLC NAND Flash)晶圆,它的擦写寿命可以达到 5~10 万次。内置了 Flash 控制器和针对 NAND Flash 管理的 Firmware。对外采用通用性最强的 SD 接口(几乎所有 MCU 都带有 SD 接口)。

本文选择的是 CSNP32GCR01-AOW 芯片。

不用编写驱动程序,自带坏块管理的 NAND Flash(贴片式 TF 卡),尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8 封装,标准 SDIO 接口,兼容 SPI,兼容拔插式 TF卡/SD卡,可替代普通 TF卡/SD卡,尺寸 6.2x8mm。

内置平均读写算法,通过 1 万次随机掉电测试耐高低温,机贴手贴都非常方便,速度级别 Class10(读取速度 23.5MB/s,写入速度 12.3MB/s)。标准的 SD 2.0 协议使得用户可以直接移植标准驱动代码,省去了驱动代码编程环节。支持 TF 卡启动的 SOC 都可以用 SD NAND,提供 STM32 参考例程及原厂技术支持,容量:4GB,比 TF 卡稳定,比 eMMC 便宜

2 代码说明

1. 宏定义使能 SD 卡功能

cpp 复制代码
#define HAL_ESP32_SDCARD

2. 挂载 SD 卡

cpp 复制代码
bool sdcard_retry(void)
{
    if(!card)
        return mount_sdcard();
    return true;
}
cpp 复制代码
bool mount_sdcard()
{
    printf("............Try mount.\n");
    sdmmc_host_t host = SDMMC_HOST_DEFAULT();
    host.max_freq_khz = SDMMC_FREQ_HIGHSPEED;

    sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT();
    slot_config.flags = SDMMC_SLOT_FLAG_INTERNAL_PULLUP;

    esp_vfs_fat_sdmmc_mount_config_t mount_config = {
        .format_if_mount_failed = false,
        .max_files = 5,
        .allocation_unit_size = 4 * 1024
    };
    esp_err_t ret = esp_vfs_fat_sdmmc_mount("/SDCARD", &host, &slot_config, &mount_config, &card);

    if (ret == ESP_OK) {
        mkdir("/SDCARD/APM", 0777);
        printf("sdcard is mounted\n");
        update_fw();
        return true;
    } else {
        printf("sdcard is not mounted.\n");
        return false;
    }
}

3. 卸载 SD 卡

cpp 复制代码
void sdcard_stop(void)
{
    unmount_sdcard();
}
cpp 复制代码
void unmount_sdcard()
{
    if (card != nullptr) {
        esp_vfs_fat_sdmmc_unmount();
    }
}

3 记录Log

1. LOG目录建立

可以看到飞控已经在 SD NAND 中成功建立 LOG 目录。

2. LOG分析

飞机通电,翻滚机身,记录飞机的姿态角。

下载日志,加载到 Mission Planner 软件。选中 ATT 字段中的 Roll 和 Pitch。可以看到曲线跟随飞机姿态变化。

至此,使用 SD NAND 替代 SD 卡,测试飞控 LOG 记录功能完成。

相关推荐
深圳米客方德半导体有限公司13 天前
MCU LTE Cat.1 bis 8910DM + SD NAND MKDV4GIL-AST:赋能 T-Box 的智能存储通信一体化解决方案
单片机·嵌入式硬件·汽车·sd nand
宇宙第一小趴菜17 天前
00 为啥 MicroPython 更 “好唠”和esp32?
单片机·嵌入式硬件·esp32·micropython
flushddd24 天前
GOOUUU ESP32-S3-CAM 果云科技开发板开发指南(一)(超详细!)Vscode+espidf 通过摄像头拍摄照片并存取到SD卡中,文末附源码
ide·vscode·编辑器·esp32
深圳米客方德半导体有限公司24 天前
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
嵌入式硬件·汽车·nxp·sd nand·t-box
小智学长 | 嵌入式1 个月前
SOC-ESP32S3部分:36-适配自己的板卡
单片机·物联网·esp32
小智学长 | 嵌入式1 个月前
SOC-ESP32S3部分:26-物联网MQTT连云
单片机·物联网·esp32
Ronin-Lotus1 个月前
程序代码篇---智能家居传感器
esp32·i2c总线·dht22·bh1750·sgp30·单总线
小智学长 | 嵌入式1 个月前
SOC-ESP32S3部分:31-ESP-LCD控制器库
单片机·物联网·esp32
湮雨塵飛1 个月前
ESP32开发之LED闪烁和呼吸的实现
vscode·嵌入式硬件·esp32·freertos·呼吸灯
小智学长 | 嵌入式1 个月前
SOC-ESP32S3部分:28-BLE低功耗蓝牙
网络·单片机·esp32