로그인회원가입

[ESP32-C3] TF 카드(MicroSD) 용량 한계와 추천 포맷 완전 정리 (64GB 인식법 포함)

안녕하세요!

ESP32-C3 Mini 모듈을 활용해 데이터 로깅, 센서 값 저장, 파일 서버 구축 등 다양한 프로젝트를 진행하다 보면 외부 저장 장치로 TF 카드(MicroSD 카드)를 자주 연결하게 됩니다.

이때 “TF 카드는 몇 GB까지 꽂아도 될까?”, “포맷은 무조건 FAT32로 해야 하나?” 궁금하셨던 분들을 위해 ESP32-C3 환경에서의 TF 카드 용량 한계, 지원 포맷 규격, 그리고 64GB 이상 대용량 카드 인식법까지 깔끔하게 정리해 드립니다.

1. TF 카드(MicroSD) 용량, 몇 GB까지 쓸 수 있을까?

결론부터 말씀드리면, 가장 안정적인 실사용 권장 용량은 32GB 이하(SDHC)입니다.

규격용량 범위기본 출하 포맷ESP32-C3 호환성
TF (SD)~2GBFAT16완벽 지원
TF (SDHC) ⭐4GB ~ 32GBFAT32완벽 지원 (가장 추천)
TF (SDXC)64GB ~ 2TBexFAT기본 인식 불가 (강제 FAT32 포맷 필요)

왜 32GB 이하를 권장할까?

ESP32의 기본 라이브러리(SD.h, FS.h)는 FAT32 파일 시스템을 기준으로 동작합니다. TF 카드 규격상 32GB 이하 제품(SDHC)은 공장 출하 시 FAT32로 포맷되어 나오기 때문에, 꽂자마자 오류 없이 즉시 인식됩니다.

2. 파일 시스템 포맷 지원 현황

파일 시스템지원 여부상세 설명
FAT16 / FAT32완벽 지원아두이노 IDE, MicroPython 기본 라이브러리 완벽 호환
exFAT조건부 지원기본 라이브러리 미지원. 외부 전용 라이브러리(SdFat 등) 사용 시 가능하나 RAM 메모리 소모가 큼
NTFS / ext4지원 불가PC/리눅스 전용 포맷으로 마이크로컨트롤러 환경 지원 불가

3. 집에 남아도는 64GB 이상 TF 카드를 쓰려면?

64GB 이상의 TF 카드(SDXC)를 ESP32-C3에 꽂으면 기본적으로 Card Mount Failed 에러가 발생합니다. 카드가 exFAT 상태로 포맷되어 출시되기 때문입니다.

이 경우 PC 전용 강제 포맷 프로그램을 이용해 카드를 FAT32로 변경하면 정상 사용할 수 있습니다.

강제 FAT32 포맷 방법

  1. 윈도우 기본 포맷 기능은 32GB 초과 용량에서 FAT32 옵션을 제공하지 않습니다.
  2. 무설치 포맷 프로그램인 GUIFormat (fat32format)을 다운로드합니다.
  3. 대상 드라이브를 선택하고, Allocation unit size(할당 크기)를 32768 (32KB)로 지정한 뒤 포맷합니다.

⚠️ 주의사항: ESP32-C3의 내부 SRAM 용량 한계로 인해, 64GB 이상 대용량 카드를 FAT32로 포맷해 쓰면 파일 탐색/읽기 속도가 느려지거나 간헐적인 읽기 에러가 발생할 수 있습니다. 가급적 8GB ~ 32GB 카드를 사용하는 것을 권장합니다.

4. ESP32-C3 TF 카드 사용 실전 팁

  1. 포맷 할당 크기 최적화
    • PC에서 FAT32 포맷을 진행할 때 ‘할당 단위 크기(Cluster Size)’를 32KB로 설정하면 ESP32-C3가 데이터를 읽고 쓰는 속도 효율이 가장 좋아집니다.
  2. SPI Pinout 구성 주의
    • ESP32-C3 Mini는 사용 가능한 GPIO 핀 수가 적기 때문에, TF 카드 모듈 연결 시 기본 SPI 핀(SCK, MISO, MOSI, CS)을 올바르게 할당해야 합니다.
    • SPI 통신 클럭 속도는 10MHz ~ 20MHz 이하로 안정화해서 사용하는 것을 권장합니다.

💡 3줄 요약

  • 가장 추천하는 TF 카드: 32GB 이하 (FAT32 포맷)
  • 64GB 이상 카드를 쓰려면: PC에서 GUIFormat 등으로 FAT32 강제 포맷 후 사용
  • 추천 포맷 옵션: FAT32 / 할당 크기(Cluster Size) 32KB

** 클러스터 관련

일반적인 PC 환경에서는 4KB가 유리하지만, ESP32-C3 같은 마이크로컨트롤러(MCU) 환경에서는 32KB가 훨씬 유리합니다.

이유를 정리해 드릴 테니 블로그 글에 ‘보너스 팁: 클러스터 크기(4KB vs 32KB) 선택 기준’ 섹션으로 활용해 보세요.

1. 용량 절약 관점 (4KB의 장점)

  • 4KB 세팅: 파일 하나당 최소 4KB 공간을 차지합니다. 100바이트짜리 작은 센서 로그 파일 1,000개를 저장할 때 불필요하게 버려지는 낭비 공간(Internal Fragmentation)이 최소화됩니다.
  • 텍스트 위주의 매우 작은 로그 파일만 수만 개 만드는 프로젝트라면 4KB가 저장 공간 효율 면에서 유리합니다.

2. 성능 및 RAM 소모 관점 (32KB가 권장되는 이유)

ESP32-C3는 메모리(SRAM)가 약 400KB 정도로 매우 제한적인 임베디드 시스템입니다. 이 환경에서는 4KB보다 32KB 클러스터가 갖는 이점이 훨씬 큽니다.

  1. FAT 테이블 메모리 관리 (SRAM 절약)
    • 클러스터 단위가 작아지면(4KB), 동일한 용량의 SD 카드를 관리하기 위해 필요한 FAT(File Allocation Table) 관리 항목 수가 8배로 증가합니다.
    • ESP32-C3가 파일 위치를 찾거나 읽을 때 RAM에 올려야 하는 인덱스 정보가 커져 메모리 부족(OOM)이나 파일 인덱싱 지연이 생길 수 있습니다.
  2. 읽기/쓰기 속도 및 I/O 오버헤드 감소
    • SD 카드의 물리적 최소 기록 단위(페이지/블록)는 보통 512B~4KB 이상이며, Flash 메모리 내부 삭제 단위(Block)는 훨씬 큽니다.
    • 32KB 세팅: 한 번에 데이터 덩어리를 큼직하게 읽고 쓰기 때문에 SPI 통신 횟수(오버헤드)가 대폭 줄어들어 전반적인 파일 읽기/쓰기 속도가 크게 향상됩니다.
  3. SD 카드 수명 보호 (Wear Leveling)
    • 작은 단위로 자주 고쳐 쓰는 것보다 큰 단위로 뭉쳐서 쓰기를 수행할 때 SD 카드 내부 컨트롤러의 플래시 메모리 마모 분산(Wear Leveling) 알고리즘이 훨씬 효율적으로 동작합니다.

💡 블로그용 한 줄 요약 정리

“소형 텍스트 파일 다수를 저장해 용량 낭비를 줄이는 게 최우선이라면 4KB, ESP32-C3의 처리 속도 향상과 시스템 안정성이 목적이라면 32KB를 추천합니다.”

코멘트

답글 남기기