통신 프로토콜

[통신 프로토콜] SAI(Serial Audio Interface)

별빛의온기 2025. 5. 16. 13:07
반응형

 

 

 

SAI란 무엇인가

 

SAI(Serial Audio Interface)는 STM32에서 제공하는 오디오 전용 시리얼 통신 인터페이스입니다. 기존의 SPI 기반 I2S보다 더 유연하고 확장성 있는 구조로 설계되어 있어서, 스피커, 마이크, 오디오 코덱 같은 외부 장치와의 디지털 오디오 데이터 송수신에 최적화되어 있습니다.

 

SAI는 “프리 프로토콜 모드 (free protocol mode)” 덕분에 슬롯 수, 슬롯 크기, 데이터 크기, 오디오 프레임 구조 등을 자유롭게 설정할 수 있습니다.

 

  • 예를 들어, SAI는 I2S, LSB/ MSB 정렬, PCM/DSP, TDM, AC’97 프로토콜을 지원합니다.
  • 또한, 오디오 블록이 송신기로 구성되면 SPDIF 출력도 사용 가능합니다.

 

이러한 유연성과 구성을 위해, SAI는 다음과 같이 두 개의 독립된 블록 A, B로 나뉘며, 각 블록은 송신 또는 수신 역할을 맡을 수 있습니다. 예를 들어 블록 A는 오디오 출력(TX), 블록 B는 마이크 입력(RX)으로 동시에 구성할 수 있습니다.


이렇게 하면 하나의 SAI 장치로도 마이크와 스피커를 동시에 사용할 수 있는 Full-Duplex 통신이 가능합니다. 지원하는 오디오 포맷도 다양한데, 기본 I2S 방식뿐 아니라, MSB 우선, LSB 우선, PCM(short/long sync) 방식도 모두 지원합니다. 이런 유연함 덕분에 다양한 종류의 오디오 코덱이나 디지털 마이크와 쉽게 호환할 수 있습니다.

 

SAI는 마스터 또는 슬레이브 모드로 동작할 수 있습니다. 블록 A/B는 서로 독립된 송신/수신 장치로 구성 가능하며, 다른 SAI 블록들과도 동기 또는 비동기 모드로 연동 가능합니다. 또한 SAI 간 동기화를 통해 여러 오디오 모듈을 함께 구동할 수도 있습니다.

 

SAI는 TDM(Time Division Multiplexing) 방식도 지원하므로, 스테레오(2채널)를 넘어서 4채널, 8채널 등 멀티채널 오디오 출력도 가능합니다.

 

이때는 슬롯 단위로 데이터를 나누어 전송하는 구조를 사용합니다. 클럭 구성도 매우 유연해서, SAI가 클럭을 만들어낼 수도 있고,
외부 코덱에서 주는 클럭에 맞춰 동기화될 수도 있습니다.


SAI는 기본적으로 다음과 같은 신호선들로 구성됩니다:

 

  • SD (Serial Data): 실질적인 데이터 선,
  • WS (Word Select): 채널 구분용 신호,
  • BCLK (Bit Clock): 데이터 타이밍 기준, 
  • MCLK (Master Clock): 코덱에 따라 필요 여부가 갈림, (선택 사항)

 

SAI는 대부분 DMA와 함께 사용됩니다.

DMA를 활용하면, 버퍼에 오디오 데이터를 담아두기만 해도 자동 전송되므로 CPU 개입 없이 효율적인 실시간 오디오 처리가 가능합니다.

 

정리하자면, SAI는 STM32에서 고급 오디오 처리를 하려면 반드시 알아야 할 통신 방식이고, 스테레오 오디오, 마이크-스피커 동시 사용, 멀티채널 출력, 코덱 연결, DMA 처리 같은 복잡한 오디오 시스템을 설계할 때 매우 강력한 수단입니다.

 

SAI의 특징

 

  • 두 개의 독립 오디오 서브블록 지원
    → 각각 송신 또는 수신기로 구성 가능하며 자체 FIFO 보유
  • 각 서브블록당 8워드 FIFO 제공
  • 서브블록 간 동기(synchronous) 또는 비동기(asynchronous) 동작 가능
  • 다중 SAI 간 동기화 지원
  • 각 서브블록별 마스터/슬레이브 구성 독립적으로 가능
  • 서브블록별 독립적인 클럭 생성기 제공
    → 마스터 모드일 때 각 블록의 오디오 주파수 샘플링을 개별 설정 가능
  • 데이터 크기 설정 가능:
    8, 10, 16, 20, 24, 32비트
  • 지원 프로토콜:
    I²S, LSB 또는 MSB 정렬, PCM/DSP, TDM, AC’97
  • 필요 시 SPDIF 출력 가능
  • 슬롯 최대 16개 사용 가능, 슬롯 크기 사용자 정의 가능
  • 프레임당 비트 수 설정 가능
  • 프레임 동기화(active level) 조정 가능
    → 오프셋, 길이, 레벨 조절
  • 첫 번째 슬롯 위치 사용자 설정 가능
  • LSB 또는 MSB 먼저 전송 설정 가능
  • 뮤트(Mute) 모드 지원
  • 스테레오/모노 자동 감지 기능 지원
  • 클럭 스트로빙 엣지(SCK 엣지) 설정 가능
  • 에러 플래그 및 관련 인터럽트 지원 (필요 시)
    • 언더런 / 오버런 감지
    • 슬레이브 모드에서 프레임 동기화 신호 누락 사전 감지
    • 슬레이브 모드에서 프레임 동기화 신호 지연 감지
    • AC’97 모드에서 수신 준비 상태 아님 감지
  • 인터럽트 소스 (Interrupt sources) 가능
    • 오류 (Errors)
    • FIFO 요청 (FIFO requests)
  • 2채널 DMA 인터페이스

SAI의 장단점

 

장점

 

  • 풀 듀플렉스 처리 가능
    - 블록 A는 송신, 블록 B는 수신으로 구성 가능 → 마이크+스피커 동시 처리
  • 멀티채널(TDM) 지원
    - 스테레오를 넘는 4채널, 6채널, 8채널 오디오도 가능
  • DMA와의 결합성 우수
    - 오디오 스트리밍에 적합한 고속 데이터 처리 가능
    - 버퍼 절반 완료(Half), 전체 완료(Complete) 인터럽트로 안정적 처리
  • 클럭 제어가 유연함
    - MCLK 출력 가능 (일부 코덱에서 필수)
    - 내부 PLL과 연동해서 오디오 샘플링 클럭 정확히 생성 가능
  • 여러 오디오 포맷 지원
    - 코덱에 맞춰 I2S, PCM 등 포맷 유연하게 설정 가능
  • 하드웨어적으로 독립적
    - SPI 기반 I2S는 SPI 기능과 공유되지만, SAI는 SPI와 별도로 동작하므로 리소스 충돌 없음

 

단점

 

  • 하드웨어 리소스를 더 많이 차지함
    - 일부 STM32 MCU는 SAI 블록이 1개 또는 없음
    - 핀 수, 클럭 라우팅에서 제약 있을 수 있음
  • 설정이 복잡함
    - 초기 설정이 I2S보다 복잡 (특히 TDM, 슬레이브 모드)
  • STM32 외 다른 MCU에서는 거의 안 씀
    - ARM Cortex 기반에서도 벤더 종속적임 (호환성이 좋지 않다)
  • 저가형 MCU에선 미지원
    - STM32F1, 일부 F0, F3 시리즈에는 없음

 

 

 

 

 

 

 

 

 

반응형

'통신 프로토콜' 카테고리의 다른 글

[통신 프로토콜] I2S(integrated interchip sound)  (0) 2025.05.09