你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用 STM32L1xx 微控制器与外部 I2S 音频编解码器播放音频文件

[复制链接]
STMCU小助手 发布时间:2022-7-17 22:29
前言$ S, I' L6 d* M: p# w
本应用笔记说明了如何利用外部编解码器(参考 STSW-STM32135),使用 STM32L1xx I2S接口播放音频件。2 C5 d2 `1 ?4 T* m, Y6 i, l
I2S 协议广泛用于从微控制器 /DSP 到音频编解码器传输音频数据,以播放(储存于存储器中的)音乐,或者 (从麦克风)捕获模拟声音。( N9 K, k( E3 h0 ?
STM32L1xx 可使用 SPI 外设进行 I2S 音频通信,并为此通信模式实现了特定的功能。高级用户可跳过本应用笔记前面的部分。
; x4 ~% m( Q. h1 f:
: P+ K' R  I  ?3 L. F8 m0 G3 J在本文中,除非特别说明, I2S 一词指 STM32L1xx 微控制器中实现的 SPI 外设的 I2S 特性。8 `# V/ u1 T3 E8 s3 T
- a. T7 j" i; N& M5 j
1 I2S 一般说明
5 b- a3 o$ j7 }/ `5 _& g1.1 I2S 协议
# F' R! n7 u, {! P3 WI2S(集成电路内置音频总线)是音频数据传输标准,它使用三线总线进行串行和同步数据传输。
. X% n2 h2 K" [: B6 X, Z! O+ ]数据在 SD (串行数据)线上传输,格式为小端序 (先传 MSB)。数据长度不受限制 (通常为 16/20/24/32 位)。发送器数据通过 SCK (串行时钟)的上升沿或下降沿同步,接收器用SCK 的下降沿。请参见1
% ^- k( N+ ?0 m, c数据表示的是立体声数字音频,所以每个采样包含两个字 —— 右声道采样和左声道采样。它并不使用两个数据通道,而是执行复用,在半个采样周期传输一个字,这样就将采样率加倍,可在每周期传输两个字。% G% f+ D& G/ ?" J& |9 p$ g
它使用控制信号 WS (字选择)确定正在发送的字是右声道还是左声道。此信号还决定了数据的开始和结束:因此无需固定数据长度。因此,接收器和发送器数据长度可以不同,右声道和左声道数据长度也可以不同。
5 i: Y  z- m( t: z7 SWS 同步到 SCK 的上升沿或下降沿,比 MSB 早一个 SCK 周期,以便有足够时间做储存和移位运算。
% ?4 o! V, P/ }3 o$ o与大多数通信协议一样,必须有主设备和从设备。主设备提供并控制 SCK 时钟和 WS 信号,从设备仅发送或接收数据。主设备可以是接收器、发送器或第三设备(控制器)。请参见2# q9 q( {! P; C; G) Y6 A

2 J& N# b& d8 E: G# c- J, J0 D0 Z

0 J$ x! o$ @( J Q@}P)@@}RS32SJLB[[UFCX1.png 4 f. l9 [8 `; h" E1 ~

8 b6 I: o% o6 R/ {  \2 A 101O4RLN]EVM4D9G0_KNW{Q.png ( ^+ W  A" o$ \4 l6 L( J- e" W

" S; e; w# t1 }* Q) @) a$ K& g9 B8 a
% j; R. x/ L3 Q% y/ G
1.2 STM32L1xx I2S 特性讲解$ j+ ]% H( d0 {, O; x
STM32L1xx 将 I2S 特性实现为 SPI 外设的一个模式。用户必须选择 SPI 模式或 I2S 模式(软件配置)。$ D  a: Q6 M& w8 [0 ~$ \$ |1 o
STM32L1xx I2S 仅有单工模式 (仅接收或仅发送),通信方向由软件配置。5 s5 `- z: k& [, j% l
I2S 外设支持四种音频协议 (可由软件配置):
! q" m8 y6 r8 }  w; l* {) EI2S 飞利浦协议3 S0 _+ w' H" n1 z3 Q, L& R$ D8 ]* d! k
MSB 协议
2 U9 L+ i& D4 qLSB 协议
, \6 R2 U& E8 [( c; ]PCM 协议 (包括 PCM 短帧和 PCM 长帧)
! u2 z+ ~7 Y+ s% q3 h它还支持大多数音频频率 (8 kHz、 16 kHz、 22.05 kHz、 32 kHz、 44.1 kHz、 48 kHz 等)数据格式可编程为 16、 24 或 32 位数据长度 (每通道), MSB 在前,以及 16 或 32 位包长度 (每通道)。
' ?! X6 X! h6 Y% ]$ uWS 信号的分配由硬件管理,并有一个相应的标志位 (CHSIDE)监控通道侧 (仅飞利浦、MSB 和 LSB 标准)。
2 g: X! M! o+ f& C% mI2S 外设可配置为音频通信中的主设备或从设备。I2S 使用 9 位预分频生成其自身时钟(独立于寄存器与 APB 总线接口所使用的 SPI 时钟),其设计可达到精确音频频率 (8 kHz、 16 kHz、22.05 kHz、44.1 kHz、32 kHz、48 kHz 等)(a)。当配置为主模式时,外设能以固定速 率输出额外的主时钟 (MCLK):256 × FS (其中 FS 为音频频率)。
8 T. \: }& d. m3 A& \2 V1 F若需决定是否生成 MCLK,应考虑下述因素:! S- K$ n8 X1 N# l2 G8 j
外部 I2S 器件的需要 (编解码器 /DAC)。   D8 Q$ @4 F" m; T% D5 H& \
一般来说,这些器件需要主时钟 (一般速率为 256 × FS)以执行内部和采样工作。1 F) t: i& k- d/ [% Q* |7 N/ i
在某些情况下,音频频率精度会因为启用 MCLK 输出而下降。6 U+ O' x& E) G" z5 @
可使用下述方式中的一种控制音频通信:3 @5 k, Y- B. U
通过轮询 TXE/RXNE 标志 (SPI_CR2 寄存器中的位 1/0):等待 TXE/RXNE 标志置位,然后向 / 从 SPI_DR 寄存器写 / 读通道波形数据。(适合测试 / 小型应用等)# c4 p, s! E  U1 p
– TXE/RXNE 上的中断:配置并启用发送 / 接收中断。在中断子程序中,向 / 从SPI_DR 寄存器写 / 读通道波形数据。(适合大多数应用 /RT 软件等)
' U: J' O8 w; ^/ [5 K6 x% ^8 J– DMA 传输:配置 DMA,在每个 Rx/Tx 请求时从 / 向 SPI_DR 寄存器加载 / 卸载。(适合高性能需求。)$ I+ [3 }6 B8 D7 @: a: Z; s( R
:
5 D1 i, [0 }: e* X5 Z  J$ X4 n* [I2S 模式中,DMA 的用法与 SPI 模式完全相同(对于所支持的音频传输协议,I2S 模式中无法用 CRC 特性)。
" K1 X# \7 ]; O2 j1 |4 w- b9 ASYSCLK 频率的选择直接影响 I2S 的传输质量(在主模式中):采样时钟(CK)和 WS 时钟直接由 SYSCLK 用 9 位分频器得到,以获取最精确的 FS 频率。为得到最大精度,预分频器允许奇数次除二 (使用 SPI_I2SPR 寄存器中的 ODD 位)。
3 x2 n$ K& P5 f! m: k2 B因为 SYSCLK 的低频率 (最大 32 MHz),低精度因子时的分频值会导致音频质量下降。当 STM32L1xx I2S 外设在主模式中生成主时钟时,精度因子会降低。请查阅参考手册 (RM0038:STM32L100xx、 STM32L151xx、 STM32L152xx 和 STM32L162xx 基于 ARM®的高级 32 位 MCU)根据目标采样频率确定音频频率精度。0 m+ ]' c5 J4 |5 P2 S7 Z

3 S# P2 {7 e4 H! r$ R5 ?" |. r3 _1 Z; U0 I& m1 P4 y
完整版请查看:附件
. L) g! j1 @6 U8 |+ Z. ^' o9 |* k, C- o, S

DM00087544_ZHV2.pdf

下载

410.75 KB, 下载次数: 2

收藏 评论0 发布时间:2022-7-17 22:29

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版