基于 LPC221 4和 uC/OS—I I
的音频处理
※
■ 华中科技大学 彭 华 成 许 晓 晖
关键词 VSLOO3 LPC2214 uC/OS—II 音频编码 音频解码
基于 ARM平台和实时操作系统的嵌入式技术应用
得越来越广泛,因此,在开发一款工控手持设备中,也基于
这样的平台来实现。针对该工控手持设备对音频编解码
功能的特殊要求,并综合考虑了成本及可靠性的要求,最
终采用了基于 LPC2214和 uC/OS—II的嵌入式平台,结
合一款性能优越的音频编解码芯片——VS1OO3来实现。
1 基于 LPC2214和 uC/OS—Il的嵌入式平台
目前流行的 ARM芯片内核有 ARM7TDMI、ARM720T、
ARM9TDMⅡ、ARM922T、ARM94OT、ARM946T、ARM966T和
ARM1OTDMI等。Philips LPC2214是基于 ARM7TDMI—S
的高性能 32位 融SC微控制器。它集成了Thumb扩展指令
集,256 KB可在系统中编程的片内 Flash和可在应用中编
程的 16 KB RAM,向量中断控制器,外部总线控制器 ,2
个 UART,I2C串行接 口,2个 SPI串行接口,2个定时器
(7个捕获/比较通道),可提供多达 6个 PWM 输 出的
PwM单元,8通道 1O位 ADC,实时时钟 ,看门狗定时器
以及 112个通用 I/O引脚。通过可编程 的片内锁相环
(PLL)可实现 LPC2214最高为 6O MHz的 CPU时钟频
率。相对众多 ARM 系列产品来说 ,Philips公司生产的
LPC2214是一款性价比较高的 ARM7芯片。
嵌入式实时操作系统有助于提高系统可靠性和开发
效率,且能够充分发挥 32位 CPU的多任务处理能力。常
见的嵌入式操作系统有 Linux、Windows CE、Vxworks、
Nucleus、uC/OS—II等。其中 uC/OS—II是一个可移植、
可固化、可裁剪的占先式实时操作系统 ,其周边的配套产
品也比较完善,如 uC/FS、uC/GUI等产品都为其应用增
强了实用性。相对其他操作系统而言,uC/OS—II正常运
行只需十几或几十 KB的 Flash空间和 SRAM空间,并且
其所需的授权费用也相对较低。结合以 LPC2214为核心
的硬件平台,在这里采用了 uC/OS—II作为该设备的嵌入
式操作系统 。
由上述 分析可 知 ,选 择 LPC2214和 uC/OS~II相 结
合的嵌入式平台是一种较为经济而实用的
。
2 音频解码芯片的选择
LPC2214与 uC/0S—II相结合的平台具有比较强大
的处理能力,但在许多应用场合中仍显不足。在本文所介
绍的应用中,系统需要具有音频编解码功能。音频的编解
码方式包括软件编解码和硬件编解码。如果采用软件编
解码的方式,则对处理器的处理速度要求一般在 5O MIPS
以上,而 LPC2214的处理速度仅有 7O MIPS左右。显然
倘若采用这种方式,LPC2214处理能力将受到很大限制。
所以,采用专门的音频处理芯片来处理音频数据对该平台
来说是个正确的选择。这里选用一款性能优越的音频解
码芯 片——VS1003。
VS1003音频解码芯片为 VS10XX系列的第三代产
品,是 芬 兰 VLSI Solution Oy公 司 生产 的单 片 MP3/
WMA/MIDI解码和 ADPCM 编码芯片。它内部包含一
个高性能、低功耗的 DSP处理核(VSDSP),一个工作内
存,一片可供用户程序使用 的 5.5 KB RAM,一个串行
SPI总线接 口,一个高质量的采样频率可调的过采样 DAC
以及一个 16位的过采样 ADC。VS1003的内部构造如图 1
所示 。
4-4- -j;喜 冬0刍厢 一J.. ⋯ 一一 ⋯ 一,rL 口j、
维普资讯 http://www.cqvip.com
MIC
allclio line MICAMP M
胱onolI H
audio
GPIO
2
SO
SI
SCLK
xCS
xDCS
RX
TX
_.J GP10
串行
数据
控制
接口
UA盯
VSDSP
圆 圈 匿
图 1 VS1003系统框 图
音频
L
卜R
输出
3 VS1003控制
的实现
VS1003通过一个工作于从模式的 SPI串行总线与主
机进行数据和控制信息的交流。音频数据通过串行数据
接口(SDI)传送;控制数据则通过串行控制接口(SCI)来传
送。控制数据总是为 16位 ,通过读/写不同的寄存器来实
现对 VS1003的控制。
VS1003的 SPI接口具有两种工作模式 :VS1002新
模式和 VS1001兼容模式。设 置 SM—SDINEW 为 1,使
VS1003处 于 VS1002新模 式。当 SMSDISHARED为 0
时,控制信号和数据信号的传送分别采
用 xCS和 xDCS作 为 同 步 信 号;而 当
SMSDISHARED为 1时,共用 xCS作为
同步信号。设置 SM—SDINEw 为 0,使
VS1003处于 VS1001兼容模式,该模式
仅以 xCS作为同步信号。
作为从机工作模式,VS1003通过一
个信号线 DREQ指示是否允许主机传送
数据。当 DREQ为高时,VS1003至少可
以接收 32 KB的 SDI数据或者 SCI控制
命令。
在这里,以 VS1002新模式且 SMS— xCg
DISHARED设置为 0为例介绍 VS1003
通信协议的实现。图 2描述 了 SDI工作 ⋯
时序,它以 xDCS为 同步信号,随着时钟 sI
信号 DCI K 的 变 化,数 据 根 据 SCL—
MODE的设置依次从高位或低位送出。 n
SCI协议包括 1个控制指令字节、1 .
个地址字节和 1个 16位数据字。每次读 DREQ
/写控制可以操作一个寄存器。读命令和
写命令分别为 0x03和0x02。这两种控制
命令的工作时序分别如图 3和图 4所示。
xDCS
SD
DcL I r-1几n r_1 f-]几几n几n几
图 2 SDI工作时序
_臣
4 电路
本设计最终要实现的目标是一款具有人机界面及数
据存储功能的工控手持设备,通过人机对话界面发送控制
命令来操纵 VS1003,以实现录放音功能。
4.1 硬件电路设计
VS1003的所有数据和控制命令均通过 SPI总线接口
实现,因此与 I PC2214的接 口实现比较简单 ,包括 3条
SPI数据线和 4条控制线,如图5所示。
4.2 软件设计
VS1003的控制软件设计,是在系统成功地移植 了
uC/OS—II操作系统以及 ZLGFS文件系统的条件下进行
的。具体软件设计中,首先对 LPC2214与 VS1003控制接
口的几个功能引脚进行相应的配置,然后使能 SPI并设置
其工作模式。此后,利用 uC/0S—II多任务的特点,建立
一 个专门的任务用于实现系统的录放音功能。在该任务
图3 SCI读命令工作时序
图 4 SCI写命令工作时序
nan r国mP nPt nm rn r|廿越击田、 ^:⋯ ⋯⋯l1⋯ R. —L JJ J c...~ 一 4
耐
一一~一一一一~ 5; 5i s
维普资讯 http://www.cqvip.com
+
一
5V +3
_
牛 , = =1l
图 5 VS1003与 LPC2214接 口电路
创建完毕后,首先完成对 VS1003的初始化工作 ;然后任
务进入等待循环中,等待系统发出相应的控制指令。当该
任务接收到录音指令时,调用相应的录音功能函数启动录
音功能,并将录音数据写入指定的文件中;当接收到播放
功能指令时,调用播放功能函数,播放指定的音频文件;当
接收到中断指令时,将退出录放音功能 ,任务回到循环等
待中。该任务的具体实现函数如下:
/*RecordTask任务需要用到的一些全局变 量 */
char*FileName; //声 明指 向录音文件的指针
char Record
—
Enable=0,Play
— Enable=0;
//声明开始录音和播放录音的标识
char Play
—
Pause=0,Play
_ Stop= 0,Record
—
Stop= 0;
//声 明录放音的一些控制标识
/*用于实现录音和播放功能的任务 */
void RecordTask(void *pdata)f
OSTimeDly(OS
_ TICKs_PER—SEC*5);
//延时一段 时间才启用该任务
1
OSAddFileDriver(SDCammand,NULL); ,
RecorderReset()
while(1){
//~JIl载文件 系统驱 动函数
7 始化 VS1003
if(Record
_ Enable){
record(FileName);
//启动录音功能,调用录音函数
Record_Enable一 0;
}
else if(Play
— Enable){
playrecord(FileName);
//启动播放功能,调用播放函数
Play
_
Enable一 0;
)
OSTimeD1y(OS
_ TICKs_PER—SEC);
//任务处于循环等待运行状态
pdata— pdata; //避免编译错误
D
4 6 羊专机.j;蛊入式条惋应国|圈__瞳圈硼 adv@mesnet
. COn%cn(广告专用)
●
]二_上∞
维普资讯 http://www.cqvip.com
雎
图 8 串口通信程序
换成 AT89S51,就可以提供至少24路的PWM输出 (P0、
P1、P2)。
④ 控制参数由 SCI串口输入,适应面广,上位机可以
图 9 其 中一路 PWM波形
① PWM波形由外部振荡电路提供定时基准,与单片
机内部振荡器的频率无关,不影响串VI通信、定时器等参
数的配置。
② PWM波形的调整精度可任意确定。
③ 本设计思路可应用于任意多路 的 PWM 输出,只
要单片机能提供足够多的输出端 口,例如将 AT89C2051
是 PC机、单片机或是 PLC。
⑤ 本方法具有一般性 ,任何单片机只要能提供 SCI
中断、外部中断就可以应用本方法。
编者注:本文为期刊缩略版 ,全文见本刊网站 WWW.
mesnet.corn.cn。奠
参考文献
[1]求是科技.单片机典型模块设计实例导航.北京:人民邮电出
版社 ,2004.
E2]利用单片机 PWM 信号进行舵机控制.WWW.vip998.corn/
Article/mcu/mcuyj/200603/237.htm1.
(收稿 日期 :2006—04—19)
I
编者注:VSIO03的驱动程序以及相关录音和播放功
能程序见本刊网站 www.mesnet.corn.cn。
5 总 结
采用 VSIO03实现基于 LPC2214和 uC/OS—II的嵌入
式平台的音频编解码功能,接口电路简单,控制程序易于编
写,且最终音频播放清晰、自然。当然在具体设计中也曾遇
到一些需要注意的问题 ,例如要成功对 VSIO03进行初始
化,必须详细了解 VS1003的配置时序要求。特别要注意
的是,对不同寄存器配置完后,其等待处理周期有所不同,
若等待周期不够,则将使得配置无法正常完成。-E
参考文献
[1]周立功.ARM嵌入式系统基础教程.北京:北京航空航天大
学出版社 ,2005.
[2]Labrosse J.ec/()s—II一 源码公开的实时嵌入式操作系
统.邵贝贝,译.北京:中国电力出版社,2002.
[3]VLSI Solution Oy.VS1003一MP3/WMA AUDIO CODEC.
VLSI Solution Oy,2005.
(收稿 日期 :2006—04—18)
R j lJ._j;喜 奋0刍厢 J.. ⋯ 一⋯ ~ t1-.土I:l:l、
维普资讯 http://www.cqvip.com