Embedded/ST Series

[STM32F7] SAI(Serial audio interface) AC'97 Protocol

별빛의온기 2025. 5. 19. 02:01
반응형

 

[이전 회차]

 

 

[STM32F7] SAI(Serial audio interface) 학습하기 (5)

[이전 회차] [STM32F7] SAI(Serial audio interface) 학습하기 (4)[이전 회차] [STM32F7] SAI(Serial audio interface) 학습하기 (3)[이전 회차] [STM32F7] SAI(Serial audio interface) 학습하기 (2)[이전 회차] [STM32F7] SAI(Serial audio int

starlighton.com

 

 

 


 

AC’97 link controller

 

SAI는 AC’97 프로토콜을 지원하여 슬롯 수/크기가 고정된 고정형 오디오 프레임 구조를 구현할 수 있습니다.

이 프로토콜을 선택하려면 SAI_xCR1 레지스터의 PRTCFG[1:0] 비트를 10으로 설정해야 합니다. AC’97 모드가 선택되면, 데이터 크기는 반드시 16비트 또는 20비트 중 하나를 사용해야 하며, 그렇지 않으면 SAI 동작이 보장되지 않습니다.

  • NBSLOT[3:0] 및 SLOTSZ[1:0] 비트는 무시되며, 슬롯 수는 고정적으로 13개입니다. 이 중 첫 번째 슬롯은 16비트 너비이고, 나머지 슬롯은 20비트 너비의 데이터 슬롯입니다.
  • SAI_xSLOTR 레지스터의 FBOFF[4:0] 비트는 무시됩니다.
  • SAI_xFRCR 레지스터 전체는 무시됩니다.
  • MCLK (마스터 클럭)은 사용되지 않습니다.

또한, AC’97 링크에서는 마스터/슬레이브 설정과 관계없이 프레임 동기화(FS) 신호를 링크 컨트롤러가 구동하므로, 비동기(asynchronous)로 설정된 블록의 FS 핀은 자동으로 출력으로 설정됩니다.

 

아래 그림은 AC'97 오디오 프레임 구조를 보여줍니다.

 

 

<참고>
AC'97 프로토콜에서 태그의 비트 2는 예약되어 있으므로(항상 0) SAI FIFO에 기록된 값에 관계없이 TAG의 비트 2는 0 레벨로 강제 설정됩니다.

 

 

는 AC’97 통신을 위한 포인트 투 포인트 구조를 구성할 수 있으며, 2개의 SAI를 활용하면 최대 3개의 외부 AC’97 디코더를 동시에 제어할 수 있습니다.

 

단일 SAI 구성으로는

  • SAI A (Tx), SAI B (Rx) -  포인트 투 포인트로 한 개 디코더 제어 가능.

2개의 SAI 구성으로

 

  • SAI1: 마스터 송신(A), 슬레이브 수신(B)
    - B는 내부적으로 블록 A와 동기화된 상태로 구성
  • SAI2: 외부 SAI1에 동기화된 슬레이브 수신기 (A, B 모두) SAI1과 동기화된 상태의 슬레이브 수신기(slave receiver)로 구성
    -  이를 통해 최대 3개의 외부 AC’97 디코더를 병렬로 동시에 제어할 수 있습니다.

 

 

 

SAI가 AC’97 수신기로 동작 중일 때, 슬롯 0번의 codec-ready 비트가 0이면, SAI는 FIFO에 데이터를 저장하지 않으며, DMA 또는 인터럽트 요청도 발생시키지 않습니다. 이 상태를 감지하기 위해 SAI_xIM 레지스터에서 CNRDYIE 비트를 활성화하면, SAI_xSR 레지스터의 CNRDY 플래그가 설정되고 인터럽트가 발생합니다. 이 방식은 코덱이 준비되지 않은 경우 데이터를 자동으로 필터링하는 데 유용하며, AC’97 프로토콜 전용 기능입니다.

 

AC’97 모드에서의 클럭 생성기 설정

 

AC’97 모드에서는 프레임 길이가 256비트로 고정되고, 프레임 주파수는 반드시 48kHz로 설정해야 합니다.

이를 위해 FRL을 255로 설정하고, SAI 클럭 생성기 공식에 따라 비트 클럭(SCK)과 마스터 클럭(MCLK)을 계산해 맞춰야 합니다. 이 방식은 AC’97 규격을 정확히 따르는 데 필수이며, 오디오 전송의 타이밍 정확도에 결정적입니다.

 

 


[다음 회차]

 

 

[STM32F7] SAI(Serial audio interface) SPDIF output

[이전 회차] [STM32F7] SAI(Serial audio interface) 학습하기 (6)[이전 회차] [STM32F7] SAI(Serial audio interface) 학습하기 (5)[이전 회차] [STM32F7] SAI(Serial audio interface) 학습하기 (4)[이전 회차] [STM32F7] SAI(Serial audio int

starlighton.com

 

 

 

 

 

 

 

 

반응형