본문 바로가기

ESP32

esp32 sd 카드 spi 인터페이스와 i2s 인터페이스 충돌

반응형

ESP32에서 SD 카드(SPI)와 I2S 장치(DAC, 앰프, 마이크)를 함께 사용할 때 발생하는 충돌은 대부분 핀 중복 설정, 공통 SPI 버스 사용, 또는 DMA 버퍼 병목 현상으로 인해 발생합니다. 

 

1. 하드웨어 핀 충돌 및 해결 방법

 

ESP32의 기본/HSPI 핀은 플래시 메모리와 겹치는 경우가 많아 I2S 핀과 물리적으로 엉킬 수 있습니다.

 

  • SPI와 I2S 핀 분리: SD 카드 모듈에 사용되는 SPI 핀(SCK, MOSI, MISO)과 I2S 모듈의 핀(BCLK, WS, DATA)이 같은 GPIO를 공유하지 않도록 배선을 확인하세요.
  • SD 카드 전용 SPI 버스 지정: SD 카드 객체 생성 시 기본 SPI 대신 별도의 SPI 버스(예: VSPI)를 할당하여 I2S와의 간섭을 원천 차단하세요.
  •  
SPIClass sdSPI(VSPI);
#define SD_SCK  18
#define SD_MISO 19
#define SD_MOSI 23
#define SD_CS   5
// sdSPI.begin(SD_SCK, SD_MISO, SD_MOSI, SD_CS); 로 초기화

 

 

2. 소프트웨어/라이브러리 충돌 해결

 

두 인터페이스를 구동할 때 CPU 락(Lock)이나 오디오 끊김이 발생할 수 있습니다.

 

  • 듀얼 코어(FreeRTOS) 활용: I2S 오디오 처리는 실시간(Real-time) 작업입니다. 오디오 데이터를 읽고 출력하는 작업은 Core 0에 할당하고, SD 카드 파일 읽기 및 UI 제어 등은 Core 1에 할당하여 병렬 처리하세요.
  • 충돌 및 핀 맵핑 공식 가이드: 아두이노 및 ESP-IDF 프레임워크에서 I2S 관련 핀 설정을 변경할 때는 ESP32 I2S API 문서를 참조하여 하드웨어 할당을 명확히 하세요. [1, 2, 3]

 

3. 전원 및 기타 주의사항

 

  • 전원 부족 문제: SD 카드와 I2S 앰프가 동시에 작동할 때 전류 피크로 인해 ESP32 전압이 순간적으로 강하하여 통신이 끊길 수 있습니다. I2S 모듈과 SD 카드 모듈 전원 라인에 각각 \(10 \ \mu\text{F}\) 이상의 디커플링 커패시터를 장착하는 것을 권장합니다. [1, 2]

 

각각의 모듈을 개별적으로 먼저 테스트하여 정상 동작을 확인한 뒤 결합하는 방식을 추천합니다. [1]
 
 
 
 

 

 

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩