Embedded/ST Series

[STM32F7] I2S(integrated interchip sound) 학습하기 (3)

별빛의온기 2025. 5. 13. 17:14
반응형

[이전 회차]

 

[STM32F7] I2S(integrated interchip sound) 학습하기 (2)

[이전 회차] [STM32F7] STM32의 I2S(integrated interchip sound) 학습하기 (1)들어가기 앞서 이것은 STM32F7 DataSheet에 나온 문서를 기반으로 개인적으로 정리한 자료입니다. 만약, 오정보가 있다면 댓글로 알려

starlighton.com

 

 

 

I2S Clock Generator

 

I2S bit rate는 I2S 데이터 라인으로 전송되는 데이터 흐름의 속도I2S 클럭(CK) 주파수를 결정합니다.

 

I2S bit rate = 채널당 비트 수 × 채널 수 × 샘플링 오디오 주파수

 

예) 16bit × 2 채널 (Left/Right) × 44.1kHz = 1.4112 Mbps

 

16비트 오디오(좌우 채널, 스테레오)의 경우, I2S 비트 전송률은 다음과 같이 계산됩니다.

 

I2S bit rate  = 16 × 2 × fS(샘플링 오디오 주파수)

 

패킷 길이가 32비트인 경우에는

 

I2S bit rate = 32 × 2 × fS

 

참고로 샘플링 오디오 주파수 FS는 오디오 데이터를 샘플링하는 주기이며, 프레임 단위로 계산됩니다. 이때의 프레임은 좌/우 채널 데이터를 모두 포함합니다.

 

 

만약 Master 모드로 동작할 경우, 원하는 오디오 샘플링 주파수에 맞춰 내부 클럭 분주기(Linear Divider)를 정확히 설정해야 합니다.

 

아래는 I2S Clock 생성에 대한 아키텍처를 보여줍니다.

 

I2SxCLK 클럭은 제품의 RCC(Reset and Clock Controller) 에 의해 제공됩니다. 이 I2SxCLK 클럭은 SPI/I2S 주변장치(APB 버스 클럭)비동기적으로 운용될 수 있습니다.

SPI 주변장치의 확장 모드로 동작하지만, 전용 오디오 클럭(I2SxCLK)은 APB 버스 클럭과 별도로 설정할 수 있다는 뜻으로써, 고속 오디오 통신을 위해 정밀한 클럭 설정이 필요하다는 점을 의미합니다.

 

참고로 I2SxCLK의 주파수는 SPI/I²S 블록이 속한 APB 클럭보다 크거나 같아야 하며, 이 조건이 지켜지지 않으면 SPI/I²S가 정상적으로 동작하지 않습니다. 즉, APB1 클럭이 50MHz라면, I2SxCLK도 50MHz 이상으로 설정해야 합니다.

 

1. 오디오 샘플링 주파수(Fs)

오디오 샘플링 주파수(Fs)는 192kHz, 96kHz, 48kHz, 44.1kHz, 32kHz, 22.05kHz, 16kHz, 11.025kHz 또는 8kHz(또는 이 범위 내의 다른 값)일 수 있습니다. 이 주파수를 정확히 맞추기 위해, 아래 공식에 따라 프로그래밍해야 합니다.

 

I2S Mode에서 계산

 

(1) 마스터 클럭(MCLK)을 사용하는 경우 (MCKOE = 1인 경우)

 

  • F_I2SxCLK: SPI/I²S 블록에 공급되는 클럭 (보통 PLLI2S에서 파생)
  • I2SDIV: 8비트 분주값
  • ODD: 홀수 보정 비트 (0 또는 1)

 

 

(2) 마스터 클럭(MCLK)을 사용하지 않는 경우 (MCKOE = 0인 경우)

 

 

  • CHLEN = 0 → 프레임 길이 16비트
  • CHLEN = 1 → 프레임 길이 32비트

 

PCM Mode에서 계산


(1) 마스터 클럭(MCLK)을 사용하는 경우 (MCKOE = 1인 경우)

  • PCM에서는 클럭 프레임 간격이 I²S보다 짧기 때문에 128로 나누어짐

 

(2) 마스터 클럭(MCLK)을 사용하지 않는 경우 (MCKOE = 0인 경우)

  • CHLEN = 0 → 프레임 길이 16비트
  • CHLEN = 1 → 프레임 길이 32비트
 

 

주파수 계산시 공통적인 유의 사항으로 I2SDIV는 1보다 반드시 커야 합니다.

 

 

다음 표는 다양한 클럭 구성에 대한 정밀도 값의 예를 보여줍니다.

 

이 표는 다양한 클럭 구성에 대한 예시 값만 제공할 뿐, 최적의 클럭 정밀도를 제공하는 다른 구성도 가능합니다.

 

[다음 회차]

 

 

 

 

 

 

 

 

반응형