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

【中文文档】AN2931 - 在大容量STM32F103xx单片机实现ADPCM算法

[复制链接]
STMCU-管管 发布时间:2019-4-12 09:55
在高容量 STM32F103xx 微控制器中实现 ADPCM 算法2 t5 T: N9 J- R6 h) ^  f" L% c
8 Y( l6 p& P! Z  {2 K& S( o
前言 . {7 P9 Y3 _6 m2 q* n# `7 J

4 h5 S! Y+ K* h, O. C本应用笔记描述了 ADPCM 音频固件编解码器,并提供了演示固件来说明如何在使用STM32F103xxI2S 时,利用外部的 DAC 来播放 ADPCM 文件。   |" G) a6 u, @- f" g7 b8 E

  c1 J+ U/ \  n/ d本应用笔记基于 “AN2739:如何利用具有外部 I2S 音频编解码器的高容量 STM32F103xx 微控制器播放音频文件 ”。由于关于 SPI、I2S 和外部 DAC 的部分在 AN2739 中已有说明,此处不再赘述。因此,为了能充分理解本应用笔记,建议您参考 AN2739。
# I3 B. e6 g, X) L2 _

% u: T& {) f' l. T9 t% Q3 B1 ADPCM 算法
# ~2 u7 _( Q% W8 L/ R% W" Z6 j: D) Y% K0 m1 a
1.1 概述
& l7 F' k( z( x% _4 \2 I  g' P- e& B1 C
* [1 R7 m+ u4 A$ I1 S, G
自适应差分脉冲编码调制 , 或简称为 ADPCM, 是波形编码的音频算法 , 它通过以前的信号值预测当前的信号值 , 并且仅发送真实值和预测值的差值。
! h$ T1 ]! I9 P; s
! j: T2 x5 h+ M, n1 K7 s- u" x在普通的脉冲编码调制 (PCM)中,发送的是真实或实际信号值。
! `0 C/ {3 p9 X5 s1 I6 C6 G) y2 i% N2 D) a8 s: n
ADPCM 的优势在于通常预测信号值和真实信号值的差值相当小,这意味着与相应的 PCM 值相比,它可以用更少的位数来表示。 7 N/ ]( i) `4 ^2 X! U9 s. _5 R& {
! u# e* o5 C0 b) F" O
根据需要的质量和压缩比,差分信号按照 4 (2 位)、 8 (3 位)、 16 (4 位)或 32 (5 位)水平量化。
$ _. t+ J0 g0 a, ]+ |3 J: l/ d% d) X$ L: u& J2 y
ADPCM 算法的实现方法有很多。它们在量化和预测模式上有所不同。 : W3 y0 g) B# r! W

7 y/ p5 F: [# q8 G# {# g) @在本应用笔记中,我们提供了由交互式多媒体协会(IMA)开发的4位量化算法IMA ADPCM。 6 @% {* y" t  |" n% N+ I! v" A

7 z3 q  g5 Y9 S3 Q. e( X选择 IMA ADPCM 有多种原因: 8 p8 E9 c- i1 l, T* {  d
● 它可以应用于 8 kHz 到 44.10 kHz 之间的不同采样率 & u  X& `& a8 J4 Y, H( ?
● 它能在较低的 CPU 的使用率和较少的内存占用情况下保证音频的播放质量   z8 J# W5 C! e4 m) C8 p
● 它具有广泛的实现方式,例如在 Windows 和 Mac 操作系统中
/ l  p4 t$ Z# [; u  |3 u& w9 P6 ]. l& n& r
IMA 数字音频对焦和技术工作组公布的一份文件对 IMA ADPCM 算法进行了充分说明:“ 在多媒体系统中增强数字音频兼容性的建议措施 ” 版本 3。 . k' i! ~; ^# J6 b: m

1 n0 V0 r* m9 N+ |* W1 X$ v1.2 ADPCM 算法实现 1 w- |8 j) |* n! W/ p( g

; Z, `8 C$ c) P& L, M' p  H& ?本应用笔记提供的 IMA ADPCM 算法用于对具有下述规范的音频文件进行编码:
9 [, D% Y! `( p! w; Q4 c4 ^0 o● 音频格式:PCM + q2 a  j7 D' R# i9 m: B
● 音频采样大小:16 位
7 E7 d$ [* X0 g2 p; a$ B8 _● 通道 : 1 ( 单声道 ) 3 a3 W- Y$ k1 t& P. P
● 音频采样率:8 kHz 到 44.1 kHz ( s) N9 C0 U: {2 S8 h6 v0 H
& q( C* F8 ~/ ~1 k) a- I& W0 }. B
每个 16 位 PCM 采样被编码为 4 位 ADPCM 采样,压缩比达到 1/4。
: Z' ^% A$ l# i" ^9 r- n

: ^" o/ I- m+ k: f% @& oIMA ADPCM 算法实现包含两个函数,一个函数编码音频采样,另一个函数解码音频采样。
5 I8 s! @6 v3 ?6 _: e3 @, q) T: ]
ADPCM 固件由两个文件组成: 7 [+ i' m; O% ]
a) adpcm.c:它包括执行编码和解码的两个 ADPCM 函数的源代码。
4 ^) f$ ?, |$ ?8 `& D% ?b) adpcm.h:它是 adpmc.c 的头文件。它应该包含在调用 ADPCM 函数的文件中。
7 X8 H' h4 J6 B% r) l* L0 e
/ z, G' Z, Z  d
..........

- t3 m* z2 x( o1 i
想了解更多,请下载原文阅读
4 B7 Y( T; W( s0 z
收藏 评论3 发布时间:2019-4-12 09:55

举报

3个回答
shensc 回答时间:2019-4-12 16:04:24
谢谢楼主分享~!
单片机爱好者 回答时间:2019-5-26 23:17:31
支持~~~~~~~~~~~~~~
Ian-392967 回答时间:2019-6-24 19:30:17
谢谢楼主分享~!
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版