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

【中文文档】AN4309_将STM32L1xx微控制器与外部I2S音频编解码...

[复制链接]
STMCU-管管 发布时间:2019-4-3 10:02
使用 STM32L1xx 微控制器与外部 I2S 音频编解码器播放音频文件8 C. c. b3 c, S$ Y' p0 e4 A" H
+ a+ T6 L; p) w* M+ y$ E$ V
前言 # n, t2 x) i+ }& F: K, f7 \

% n! g. e8 U( T) p5 z本应用笔记说明了如何利用外部编解码器(参考 STSW-STM32135),使用 STM32L1xx I2S接口播放音频文件。
" g0 E8 L8 g! V  U/ Q3 P% A
! n1 o% d+ i, K: P& j' A* WI2S 协议广泛用于从微控制器 /DSP 到音频编解码器传输音频数据,以播放(储存于存储器中的)音乐,或者 (从麦克风)捕获模拟声音。
0 f5 ~' ~6 G, v. }& W: u
, A" M2 ^& R1 Z' I
STM32L1xx 可使用 SPI 外设进行 I2S 音频通信,并为此通信模式实现了特定的功能。高级用户可跳过本应用笔记前面的部分。
: J" Q2 n( r) ^+ t# t$ P: H
" v4 h' O$ J; }- q' }4 i2 ^注 : 在本文中,除非特别说明, I2S 一词指 STM32L1xx 微控制器中实现的 SPI 外设的 I2S 特性。
- `% K+ Z, p2 i4 _! n9 I- o2 M/ E
1 I2S 一般说明
" w& `0 b8 E, J* Y! V% X$ E6 [% P# N: G- }! a: a  @
1.1 I2S 协议 : x2 r- p( s( K; r! G

  [# Z4 r" L  c; q- ]. j! i' y2 wI2S(集成电路内置音频总线)是音频数据传输标准,它使用三线总线进行串行和同步数据传输。 9 s& h. |9 h! R
! T, d+ \1 W/ N6 R- u2 s7 ]# |
数据在 SD (串行数据)线上传输,格式为小端序 (先传 MSB)。数据长度不受限制 (通常为 16/20/24/32 位)。发送器数据通过 SCK (串行时钟)的上升沿或下降沿同步,接收器用SCK 的下降沿。请参见图 1。 $ ]& |  D, v5 l) i. h( r6 {
( _. y+ m; `3 Y2 q; e0 n
数据表示的是立体声数字音频,所以每个采样包含两个字 —— 右声道采样和左声道采样。它并不使用两个数据通道,而是执行复用,在半个采样周期传输一个字,这样就将采样率加倍,可在每周期传输两个字。 " o1 E7 |! g4 X! W0 l

+ ~+ ?7 F8 X6 M8 _它使用控制信号 WS (字选择)确定正在发送的字是右声道还是左声道。此信号还决定了数据的开始和结束:因此无需固定数据长度。因此,接收器和发送器数据长度可以不同,右声道和左声道数据长度也可以不同。 ; v1 W* W5 g7 \! Q
1 j' @2 x+ B  w% n
WS 同步到 SCK 的上升沿或下降沿,比 MSB 早一个 SCK 周期,以便有足够时间做储存和移位运算。
8 m7 I) B" q" S) c7 u2 J0 m# X" {; d; w2 d1 l; ]; q, k8 E
与大多数通信协议一样,必须有主设备和从设备。主设备提供并控制 SCK 时钟和 WS 信号,从设备仅发送或接收数据。主设备可以是接收器、发送器或第三设备(控制器)。请参见图 2。
2 |( [% O; v6 Y" B) j' _

2 ~5 {1 d% V8 h& N3 s6 }
1.png
0 ~) L2 n1 Q( f0 \( m7 F
! k4 m' z, H; q, T& }% l
1.png

9 ^) H  o8 f1 G6 D
1.2 STM32L1xx I2S 特性讲解
% r% N9 N; d$ T  ~. S
STM32L1xx 将 I2S 特性实现为 SPI 外设的一个模式。用户必须选择 SPI 模式或 I2S 模式(软件配置)。

2 f  U$ X  U& H& ^& s
STM32L1xx I2S 仅有单工模式 (仅接收或仅发送),通信方向由软件配置。
0 R' o  L( w* x. u1 m. X
I2S 外设支持四种音频协议 (可由软件配置):

( k2 P8 g3 H6 P' \4 V3 H* o" G
• I2S 飞利浦协议

" F- ]7 z1 Y5 z, X4 b- ?+ }
• MSB 协议
  K5 I! D" J2 I* M8 X+ M7 H
• LSB 协议

# _, D9 Z/ d( m* y, x
• PCM 协议 (包括 PCM 短帧和 PCM 长帧)

' _. Z% l7 o9 b/ n7 Z
它还支持大多数音频频率 (8 kHz、 16 kHz、 22.05 kHz、 32 kHz、 44.1 kHz、 48 kHz 等)数据格式可编程为 16、 24 或 32 位数据长度 (每通道), MSB 在前,以及 16 或 32 位包长度 (每通道)。
$ B1 X, `. e6 N4 V; d! p
WS 信号的分配由硬件管理,并有一个相应的标志位 (CHSIDE)监控通道侧 (仅飞利浦、MSB 和 LSB 标准)。I2S 外设可配置为音频通信中的主设备或从设备。
5 ~5 Q6 C+ q) b& T, m9 m+ L
I2S 使用 9 位预分频生成其自身时钟(独立于寄存器与 APB 总线接口所使用的 SPI 时钟),其设计可达到精确音频频率 (8 kHz、 16kHz、22.05 kHz、44.1 kHz、32 kHz、48 kHz 等)(a)。当配置为主模式时,外设能以固定速率输出额外的主时钟 (MCLK):256 × FS (其中 FS 为音频频率)。
1 I0 b  X8 E# z$ k& P
若需决定是否生成 MCLK,应考虑下述因素:

8 F" g2 B( C! J
• 外部 I2S 器件的需要 (编解码器 /DAC)。一般来说,这些器件需要主时钟 (一般速率为 256 × FS)以执行内部和采样工作。
3 C* H( \% A. a, ~2 w% Z: L5 w
• 在某些情况下,音频频率精度会因为启用 MCLK 输出而下降。

: Q; V+ f* g8 G) }5 L' }' D. S
可使用下述方式中的一种控制音频通信:

7 D# P- y% a) r% D+ [
– 通过轮询 TXE/RXNE 标志 (SPI_CR2 寄存器中的位 1/0):等待 TXE/RXNE 标志置位,然后向 / 从 SPI_DR 寄存器写 / 读通道波形数据。(适合测试 / 小型应用等)

+ Z) Y* J* I$ }# ^9 L4 M# J
– TXE/RXNE 上的中断:配置并启用发送 / 接收中断。在中断子程序中,向 / 从SPI_DR 寄存器写 / 读通道波形数据。(适合大多数应用 /RT 软件等)
% |: f: e& c+ Z  d0 K+ R
– DMA 传输:配置 DMA,在每个 Rx/Tx 请求时从 / 向 SPI_DR 寄存器加载 / 卸载。(适合高性能需求。)

  A9 k3 o& L: p  E, `
注 : 在 I2S 模式中,DMA 的用法与 SPI 模式完全相同(对于所支持的音频传输协议,I2S 模式中无法用 CRC 特性)。SYSCLK 频率的选择直接影响 I2S 的传输质量(在主模式中):采样时钟(CK)和 WS 时钟直接由 SYSCLK 用 9 位分频器得到,以获取最精确的 FS 频率。为得到最大精度,预分频器允许奇数次除二 (使用 SPI_I2SPR 寄存器中的 ODD 位)。因为 SYSCLK 的低频率 (最大 32 MHz),低精度因子时的分频值会导致音频质量下降。当STM32L1xx I2S 外设在主模式中生成主时钟时,精度因子会降低。请查阅参考手册(RM0038:STM32L100xx、 STM32L151xx、 STM32L152xx 和 STM32L162xx 基于 ARM®的高级 32 位 MCU)根据目标采样频率确定音频频率精度。
' k, |3 z) X" _$ F: I( {) O! c5 P
...........
6 |  R" A" j8 O$ i
想了解更多,请下载原文阅读
6 J7 g: u% {  C' @6 A8 J
赞 收藏 1 评论1 发布时间:2019-4-3 10:02

举报

1个回答
Kevin_G 回答时间:2019-4-3 10:04:06
收藏

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版