基于LPC2214和uC/OS-II的音频处理方案及电路说明

发布者:冰心独语u最新更新时间:2011-11-17 关键字:LPC2214  uCOS-II  音频处理 手机看文章 扫描二维码
随时随地手机看文章
    目前流行的ARM芯片内核有ARM7TDMI、ARM720T、ARM9TDMI、ARM992T、ARM940T、ARM946T、ARM966T和ARM10TDMI等,Philips LPC2214是基于ARM7TDMI-S的高性能32位RISC微控制器,它集成了Thumb扩展指令集,256KB可在系统中编程的片内Flash和可在应用中编程的16位KB RAM,向量中断控制器,外部总线控制器,2个UART,I2C串行接口,2个SPI串行接口,2个定时器(7个捕获/比较通道),可提供多达6个PWM输出的PWM单元,8通道10位ADC,实时时钟,看门狗定时器以及112个通用I/O引脚,通过可编程的片内锁相环(PLL)可实现LPC2214最高为60MHz的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/OS-II相结合的平台有比较强大的处理能力,但在许多应用场合中仍显不足,在本文所介绍的应用中,系统需要具有音频编解码功能,音频的编解码方式包括软件编解码和硬件编解码,如果采用软件编解码的方式,最对处理器的处理速度要求一般在50MIPS以上,而LPC2214的处理速度仅有70MIPS左右,显然倘若采用这种方式,LPC2214处理能力将受到很大限制,所以,采用专门的音频处理芯片来处理音频数据对该平台的来说是个正确的选择,这里选用一款性能优越的音频解码芯片--VS1003。

    VS1003音频解码芯片为VS10XX系列的第三代产品,是芬兰VLSI Solution Oy公司生产的单片MP3/WMA/MIDI解码和ADPCM编码芯片,它内部包含一个高性能、低功耗的DSP处理核(VSDSP),一个工作内存,一片可供用户程序使用的5.5KB RAM,一个串行SPI总线接口,一个高质量的采样频率可调的过采样DAC以及一个16位的采样ADC,VS1003的内部构造如图1所示。

 

 

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至少可以接受32KB的SDI数据或者SCI控制命令。

    在这里,以VS1002新模式且SMSDISHARED设置为0为例介绍VS1003通信协议的实现。图2描述了SDI工作时序,它以xDCS为同步信号,随着时钟信号DCLK的变化,数据根据SCL_MODE的设置依次从高位或低位送出。

    SCI协议包括1个控制指令字节、1个地址字节和1个16位数据字。每次读写控制可以操作一个寄存器。读命令和写命令分别为0x03和0x02,这两种控制命令的工作时序分别如图3和图4所示。

 

 

4 电路设计

    本设计最终要实现的目标是一款具有人机界面及数据存储功能的工控手持设备,通过人机对话界面发送控制命令来操纵VS1003,以实现录放音功能。

4.1 硬件电路设计

    VS1003的所有数据和控制命令均通过SPI总线接口实现,因此与LPC2214的接口实现比较简单,包括3条SPI数据线和4条控制线,如图5所示。

4.2 软件设计

    VS1003的控制软件设计,是在系统成功地移植了uC/OS-II操作系统以及ZLGFS文件系统的条件下进行的,具体软件设计中,首先对LPC2214与VS1003控制接口的几个功能引脚进行相应的配置,然后使能SPI并设置其工作模式,此后,利用uC/OS-II多任务的特点,建立一个专门的任务用于实现系统的录放音功能,在该任务创建完毕后,首先完成对VS1003的初始化工作,然后任务进入等待循环中,等待系统发出相应的控制指令,当该任务接收到录音指令时,调用相应的录音功能函数启动录音功能,并将录音数据写入指定的文件时,当接收到播放功能指令时,调用播放功能函数,播放指定的音频文件,当接收到中断指令时,将退出录放音功能,任务回到循环等待中,该任务的具体实现函数如下:

 

5 总结

    采用VS1003实现基于LPC2214和uC/OS- II的嵌入式平台的音频编解码的功能,接口电路简单,控制程序易于编写,且最终音频播放清晰、自然,当然在具体设计中也曾遇到一些需要注意的问题,例如要成功对VS1003进行初始化,必须详细了解VS1003得配置时序要求,特别要注意的是,对不同寄存器配置完成,其等待处理周期有所不同,若等待周期不够,则将使得配置无法正常完成

关键字:LPC2214  uCOS-II  音频处理 引用地址:基于LPC2214和uC/OS-II的音频处理方案及电路说明

上一篇:嵌入式软件开发流程及ARM的中断调试方法介绍
下一篇:ARM内核目标系统中的代码运行时间测试方法

推荐阅读最新更新时间:2024-03-16 12:46

ucos-ii学习笔记——s12移植成功main函数
Created on: 2012-10-9 Author: zhang bin 学习笔记 for ucos-ii MC9S12XS128 redesigned by zhang bin 2012-10-9 versions :V-0.1 All Rights Reserved #include includes.h #include pll.h #include string.h #define TASK_STK_SIZE 128 //定义任务堆栈长度 #define TASK_START_PRIO 5 // 此版本的uC/
[单片机]
4通道音频处理器PT2313L
PT2313L是PrincetONTechnology公司推出的一款单片4通道音频处理专用芯片。该器件可用最少的外围元件组成一款娱乐场所的背景音乐电路。PT2313L音频处理器具有高、低音控制功能和高响度(重低音)控制功能,同时具有三路立体声输入端口,且其增益可由微控器控制。微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。微控制器(MicroCon
[模拟电子]
4通道<font color='red'>音频</font><font color='red'>处理</font>器PT2313L
采用DSP免提开发平台的车载信号处理音频系统
  回声消除(AEC)可实现汽车内舒适的全双工免提通话,本文介绍的Clarity CVC-HFK可提供集成的单扩音器解决方案(OMS)噪声抑制算法,它支持自适应噪声消除功能,可降低麦克风(传入)信号中的环境噪声,并提取所需的语音,还可向远端用户传输清晰的话音(传出)。   两个因素决定了使用免提蜂窝电话系统的必要性,首先是由于目前的蜂窝电话系统的终端多为手持的,这就给司机造成了不便。司机常常要放下手机两只手驾驶,如转弯等,然后在转回谈话。电话交谈的中断很不方便,甚至还会造成经济成本损失,因为移动电信收费相当高。再一个重要因素就是安全性。不妨设想一下只用一只手操纵方向盘、打着手机的司机。既然司机不能双手操纵方向盘,那么再要什么防抱
[安防电子]
UC/OS-II的内存管理OSMemCreate()分析
我们在写应用程序的过程中通常都是采用一个malloc/free系列函数进行内存的管理,这样分配的内存空间是从应用程序的栈空间分配处理,一般而言我们在写程序的过程中要对内存空间进行适时的释放,才不至于导致栈空间的不足,当然这样也会导致内存垃圾的产生,因为不同大小的内存分配因为对齐等原因导致很多的内存不能再使用,进而使得系统的可用内存越来越小,因此在实时操作系统中通常都需要创建自己的内存管理操作。 uc/os-II中的内存管理主要是采用内存分区控制块实现的,具体的实现过程如下: /* 关于内存控制块的结构体, 用来跟踪每一个内存分区 每一个分区可以分成很多个小的内存块 每一个内存块的大小都
[单片机]
基于可配置处理器Xtensa LX的数字音频方案
采用可配置处理器内核可以构建一个音频处理器,该处理器既具有DSP的高性能与低功耗特性,又具有通用处理器的良好控制能力。Tensilica的基于Xtensa的HiFi音频引擎即是该类处理器的范例。HiFi音频处理器基于32位的Xtensa V处理器内核,具有24位音频专用的指令。该处理器内核已经在多种产品中采用,包括移动电话、便携式音频播放器、便携摄像机、数码相机以及个人视频录像(PVR)。 Tensilica公司Xtensa LX可配置处理器的推出可以提高原有的HiFi音频引擎性能,为用户提供被称为Xtensa HiFi 2音频引擎的更加强大的音频处理器。该引擎可以利用更窄的带宽(因而功耗和能量更低)来运行更复杂的数字音频
[模拟电子]
基于可配置<font color='red'>处理</font>器Xtensa LX的数字<font color='red'>音频</font>方案
ucos-ii示例1:新建任务
环境: 主机:WIN8 开发环境:MDK4.72 ucgui版本:3.90 ucos版本:ucos-ii mcu: stm32f103VE 说明: 本示例新建两个任务,并运行。 注意: 1.不同任务的任务优先级必须不一样,否则只运行首先定义的任务 2.从系统时钟设置必须在内核启动后设置,否则会导致OSIntNesting一直为1,从而OS_TaskStat函数因为OSTimeDly函数一直返回0陷入死循环 //系统时钟设置,1ms嘀嗒一次 if (SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC)) { while (1);
[单片机]
<font color='red'>ucos-ii</font>示例1:新建任务
数字音频功放处理芯片设计与实现
  王智韬,王升杨,胡淑花,雷 凯,李 挥   (北京大学深圳研究生院集成微电子重点实验室,广东深圳518055)   1 引言   目前,数字技术在人类文明中发挥着越来越重要的作用,正成为生活中必不可少的部分。"数字功放电路"是指用数字技术对音频信号进行处理,使模拟的音频信号转换为数字信号,并最终以脉冲宽度调制(Pulse Width Modulation,PWM)或脉冲密度调制(PulseDensity Modulation,PDM)的方式,驱动大功率开关晶体管(一般用MOS场效应管),并经一个LC电路进行∑变换后得到模拟的音频信号,并滤除高频脉冲成分,然后驱动扬声器放音。   与传统的模拟功放相比,数字功放的优点有:
[安防电子]
Pulsus推出全数字功率放大器/数字音频处理
Pulsus Technologies日前开发出全数字功率放大器(PA) IC解决方案,并为消费性音响和无线通信设备提供数字音频方案。Pulsus用于无线手持设备和MP3播放器的新Tango系列数位功率放大器采用微小的5×5 QFN封装,具有高功率(800+800mW)扬声器PA、高传真耳机功率放大器与均衡器等功能。 此外,产品还整合了由Qsound公司开发的用于扬声器和耳机的实时3D扩展引擎。PSM711A具有两对数字串行音频接口,支持业界大多数音频数据格式、采样率和位分辨率。该产品包括一个弹性化的混音器和增益调整器,用来处理2路I2S的输入。 Pulsus还为无线手持设备推出了Samba系列的数字音频处理器。Samba是一
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved