HiFi player project, first commit.
This commit is contained in:
commit
4126ea13a1
49 files changed
+6333
No files matched your search
@@ -0,0 +1,104 @@
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* @file spi_sdcard.c
|
||||
* @author 正点原子团队(ALIENTEK)
|
||||
* @version V1.0
|
||||
* @date 2025-01-01
|
||||
* @brief SD卡 驱动代码
|
||||
* @license Copyright (c) 2020-2032, 广州市星翼电子科技有限公司
|
||||
****************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* 实验平台:正点原子 ESP32-S3 开发板
|
||||
* 在线视频:www.yuanzige.com
|
||||
* 技术论坛:www.openedv.com
|
||||
* 公司网址:www.alientek.com
|
||||
* 购买地址:openedv.taobao.com
|
||||
*
|
||||
****************************************************************************************************
|
||||
*/
|
||||
|
||||
#include "spi_sd.h"
|
||||
|
||||
sdmmc_card_t *card; /* SD / MMC卡结构 */
|
||||
const char mount_point[] = MOUNT_POINT; /* 挂载点/根目录 */
|
||||
esp_err_t ret = ESP_OK;
|
||||
esp_err_t mount_ret = ESP_FAIL;
|
||||
|
||||
/**
|
||||
* @brief SD卡初始化
|
||||
* @param 无
|
||||
* @retval esp_err_t
|
||||
*/
|
||||
esp_err_t sd_spi_init(void)
|
||||
{
|
||||
ret = ESP_OK;
|
||||
|
||||
if (MY_SD_Handle != NULL) /* 再一次挂载或者初始化SD卡 */
|
||||
{
|
||||
if (mount_ret == ESP_OK)
|
||||
{
|
||||
esp_vfs_fat_sdcard_unmount(mount_point, card); /* 取消挂载 */
|
||||
mount_ret = ESP_FAIL;
|
||||
}
|
||||
}
|
||||
else if (MY_SD_Handle == NULL) /* 未初始化SPI驱动 */
|
||||
{
|
||||
my_spi_init(); /* 初始化SPI驱动 */
|
||||
}
|
||||
|
||||
/* 文件系统挂载配置 */
|
||||
esp_vfs_fat_sdmmc_mount_config_t mount_config = {
|
||||
.format_if_mount_failed = false, /* 如果挂载失败:true会重新分区和格式化/false不会重新分区和格式化 */
|
||||
.max_files = 5, /* 打开文件最大数量 */
|
||||
.allocation_unit_size = 4 * 1024 * sizeof(uint8_t) /* 硬盘分区簇的大小 */
|
||||
};
|
||||
|
||||
/* SD卡参数配置 */
|
||||
sdmmc_host_t host = SDSPI_HOST_DEFAULT();
|
||||
|
||||
/* SD卡引脚配置 */
|
||||
sdspi_device_config_t slot_config = {0};
|
||||
slot_config.host_id = host.slot;
|
||||
slot_config.gpio_cs = SD_NUM_CS;
|
||||
slot_config.gpio_cd = GPIO_NUM_NC;
|
||||
slot_config.gpio_wp = GPIO_NUM_NC;
|
||||
slot_config.gpio_int = GPIO_NUM_NC;
|
||||
|
||||
mount_ret = esp_vfs_fat_sdspi_mount(mount_point, &host, &slot_config, &mount_config, &card); /* 挂载文件系统 */
|
||||
ret |= mount_ret;
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取SD卡相关信息
|
||||
* @param out_total_bytes:总大小
|
||||
* @param out_free_bytes:剩余大小
|
||||
* @retval 无
|
||||
*/
|
||||
void sd_get_fatfs_usage(size_t *out_total_bytes, size_t *out_free_bytes)
|
||||
{
|
||||
FATFS *fs;
|
||||
size_t free_clusters;
|
||||
int res = f_getfree("0:", (DWORD *)&free_clusters, &fs);
|
||||
assert(res == FR_OK);
|
||||
size_t total_sectors = (fs->n_fatent - 2) * fs->csize;
|
||||
size_t free_sectors = free_clusters * fs->csize;
|
||||
|
||||
size_t sd_total = total_sectors / 1024;
|
||||
size_t sd_total_KB = sd_total * fs->ssize;
|
||||
size_t sd_free = free_sectors / 1024;
|
||||
size_t sd_free_KB = sd_free*fs->ssize;
|
||||
|
||||
/* 假设总大小小于4GiB,对于SPI Flash应该为true */
|
||||
if (out_total_bytes != NULL)
|
||||
{
|
||||
*out_total_bytes = sd_total_KB;
|
||||
}
|
||||
|
||||
if (out_free_bytes != NULL)
|
||||
{
|
||||
*out_free_bytes = sd_free_KB;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* @file spi_sd.h
|
||||
* @author 正点原子团队(ALIENTEK)
|
||||
* @version V1.0
|
||||
* @date 2025-01-01
|
||||
* @brief SD卡 驱动代码
|
||||
* @license Copyright (c) 2020-2032, 广州市星翼电子科技有限公司
|
||||
****************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* 实验平台:正点原子 ESP32-S3 开发板
|
||||
* 在线视频:www.yuanzige.com
|
||||
* 技术论坛:www.openedv.com
|
||||
* 公司网址:www.alientek.com
|
||||
* 购买地址:openedv.taobao.com
|
||||
*
|
||||
****************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __SPI_SD_H
|
||||
#define __SPI_SD_H
|
||||
|
||||
#include <unistd.h>
|
||||
#include "esp_vfs_fat.h"
|
||||
#include "driver/sdspi_host.h"
|
||||
#include "driver/spi_common.h"
|
||||
#include "sdmmc_cmd.h"
|
||||
#include "driver/sdmmc_host.h"
|
||||
#include "my_spi.h"
|
||||
|
||||
|
||||
/* 引脚定义 */
|
||||
#define SD_NUM_CS GPIO_NUM_2
|
||||
#define MOUNT_POINT "/0:"
|
||||
|
||||
/* 函数声明 */
|
||||
esp_err_t sd_spi_init(void); /* SD卡初始化 */
|
||||
void sd_get_fatfs_usage(size_t *out_total_bytes, size_t *out_free_bytes);
|
||||
#endif
|
||||
Reference in new issue
Block a user