안녕하세요!
ESP32-C3 Mini 모듈을 활용해 데이터 로깅, 센서 값 저장, 파일 서버 구축 등 다양한 프로젝트를 진행하다 보면 외부 저장 장치로 TF 카드(MicroSD 카드)를 자주 연결하게 됩니다.
이때 “TF 카드는 몇 GB까지 꽂아도 될까?”, “포맷은 무조건 FAT32로 해야 하나?” 궁금하셨던 분들을 위해 ESP32-C3 환경에서의 TF 카드 용량 한계, 지원 포맷 규격, 그리고 64GB 이상 대용량 카드 인식법까지 깔끔하게 정리해 드립니다.
1. TF 카드(MicroSD) 용량, 몇 GB까지 쓸 수 있을까?
결론부터 말씀드리면, 가장 안정적인 실사용 권장 용량은 32GB 이하(SDHC)입니다.
| 규격 | 용량 범위 | 기본 출하 포맷 | ESP32-C3 호환성 |
| TF (SD) | ~2GB | FAT16 | 완벽 지원 |
| TF (SDHC) ⭐ | 4GB ~ 32GB | FAT32 | 완벽 지원 (가장 추천) |
| TF (SDXC) | 64GB ~ 2TB | exFAT | 기본 인식 불가 (강제 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 포맷 방법
- 윈도우 기본 포맷 기능은 32GB 초과 용량에서 FAT32 옵션을 제공하지 않습니다.
- 무설치 포맷 프로그램인
GUIFormat (fat32format)을 다운로드합니다. - 대상 드라이브를 선택하고, Allocation unit size(할당 크기)를
32768 (32KB)로 지정한 뒤 포맷합니다.
⚠️ 주의사항: ESP32-C3의 내부 SRAM 용량 한계로 인해, 64GB 이상 대용량 카드를 FAT32로 포맷해 쓰면 파일 탐색/읽기 속도가 느려지거나 간헐적인 읽기 에러가 발생할 수 있습니다. 가급적 8GB ~ 32GB 카드를 사용하는 것을 권장합니다.
4. ESP32-C3 TF 카드 사용 실전 팁
- 포맷 할당 크기 최적화
- PC에서 FAT32 포맷을 진행할 때 ‘할당 단위 크기(Cluster Size)’를
32KB로 설정하면 ESP32-C3가 데이터를 읽고 쓰는 속도 효율이 가장 좋아집니다.
- PC에서 FAT32 포맷을 진행할 때 ‘할당 단위 크기(Cluster Size)’를
- 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 클러스터가 갖는 이점이 훨씬 큽니다.
- FAT 테이블 메모리 관리 (SRAM 절약)
- 클러스터 단위가 작아지면(4KB), 동일한 용량의 SD 카드를 관리하기 위해 필요한 FAT(File Allocation Table) 관리 항목 수가 8배로 증가합니다.
- ESP32-C3가 파일 위치를 찾거나 읽을 때 RAM에 올려야 하는 인덱스 정보가 커져 메모리 부족(OOM)이나 파일 인덱싱 지연이 생길 수 있습니다.
- 읽기/쓰기 속도 및 I/O 오버헤드 감소
- SD 카드의 물리적 최소 기록 단위(페이지/블록)는 보통 512B~4KB 이상이며, Flash 메모리 내부 삭제 단위(Block)는 훨씬 큽니다.
- 32KB 세팅: 한 번에 데이터 덩어리를 큼직하게 읽고 쓰기 때문에 SPI 통신 횟수(오버헤드)가 대폭 줄어들어 전반적인 파일 읽기/쓰기 속도가 크게 향상됩니다.
- SD 카드 수명 보호 (Wear Leveling)
- 작은 단위로 자주 고쳐 쓰는 것보다 큰 단위로 뭉쳐서 쓰기를 수행할 때 SD 카드 내부 컨트롤러의 플래시 메모리 마모 분산(Wear Leveling) 알고리즘이 훨씬 효율적으로 동작합니다.
💡 블로그용 한 줄 요약 정리
“소형 텍스트 파일 다수를 저장해 용량 낭비를 줄이는 게 최우선이라면 4KB, ESP32-C3의 처리 속도 향상과 시스템 안정성이 목적이라면 32KB를 추천합니다.”


답글 남기기
댓글을 달기 위해서는 로그인해야합니다.