Advertisement
Cam0uflage

ESP32 + SDCARD

May 11th, 2024 (edited)
915
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.62 KB | Software | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <time.h>
  6. #include <freertos/FreeRTOS.h>
  7. #include "esp_vfs_fat.h"
  8. #include "sdmmc_cmd.h"
  9.  
  10. static const char *TAG = "sdcard";
  11.  
  12. #define MOUNT_POINT "/sdcard"
  13.  
  14. #define PIN_MOSI  17
  15. #define PIN_MISO  16
  16. #define PIN_SCK   14
  17. #define PIN_CS    4
  18.  
  19. void app_main(void)
  20. {
  21.     esp_err_t ret;
  22.  
  23.     esp_vfs_fat_sdmmc_mount_config_t mount_config;
  24.     mount_config.format_if_mount_failed = false;
  25.     mount_config.max_files = 16;
  26.     mount_config.allocation_unit_size = 0;
  27.  
  28.  
  29.     sdmmc_card_t *card;
  30.  
  31.     ESP_LOGI(TAG, "Инициализация SD-карты через SPI");
  32.  
  33.     sdmmc_host_t host = SDSPI_HOST_DEFAULT();
  34.     host.max_freq_khz = 7500;
  35.  
  36.     spi_bus_config_t bus_cfg;
  37.     memset(&bus_cfg, 0x0, sizeof(spi_bus_config_t));
  38.     bus_cfg.mosi_io_num = PIN_MOSI;
  39.     bus_cfg.miso_io_num = PIN_MISO;
  40.     bus_cfg.sclk_io_num = PIN_SCK;
  41.     bus_cfg.quadwp_io_num = -1;
  42.     bus_cfg.quadhd_io_num = -1;
  43.     bus_cfg.max_transfer_sz = 4000;
  44.  
  45.     ret = spi_bus_initialize(host.slot, &bus_cfg, SPI_DMA_CH_AUTO);
  46.     if (ret != ESP_OK) {
  47.         ESP_LOGE(TAG, "Не удалось настроить шину.");
  48.         return;
  49.     }
  50.  
  51.     sdspi_device_config_t slot_config = SDSPI_DEVICE_CONFIG_DEFAULT();
  52.     slot_config.gpio_cs = PIN_CS;
  53.     slot_config.host_id = host.slot;
  54.  
  55.     const char mount_point[] = MOUNT_POINT;
  56.  
  57.     ESP_LOGI(TAG, "Монтирование файловой системы");
  58.     ret = esp_vfs_fat_sdspi_mount(mount_point, &host, &slot_config, &mount_config, &card);
  59.  
  60.     if (ret != ESP_OK) {
  61.         if (ret == ESP_FAIL) {
  62.             ESP_LOGE(TAG, "Не удалось смонтировать файловую систему.");
  63.         } else {
  64.             ESP_LOGE(TAG, "Не удалось инициализировать SD-карту (%s).", esp_err_to_name(ret));
  65.         }
  66.         return;
  67.     }
  68.  
  69.     ESP_LOGI(TAG, "Файловая система смонтирована");
  70.     ESP_LOGI(TAG, "TTX SD-карты:");
  71.     sdmmc_card_print_info(stdout, card);
  72.  
  73.     srand(time(NULL));
  74.    
  75.     vTaskDelay(1000);
  76.  
  77.     FILE * fpw = fopen(MOUNT_POINT"/rand.txt", "wr");
  78.  
  79.     if (fpw == NULL) {
  80.         ESP_LOGE(TAG, "Не удалось создать/открыть файл rand.txt.");
  81.         return;
  82.     }
  83.  
  84.     for (size_t i = 0; i < 10; i++)
  85.         fprintf(fpw, "%d\n", rand() % 100000000);
  86.    
  87.     fclose(fpw);
  88.  
  89.  
  90.     esp_vfs_fat_sdcard_unmount(mount_point, card);
  91.     ESP_LOGI(TAG, "Файловая система размонтирована");
  92.  
  93.     spi_bus_free(host.slot);
  94.  
  95.     return;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement