当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]随着Internet技术和多媒体技术的快速发展,语音通信技术的应用越来越广泛,也越来越受到重视[1]。如今的嵌人式设备日益复杂化,功能比以前更加丰富,性能也越来越高。在多种

随着Internet技术和多媒体技术的快速发展,语音通信技术的应用越来越广泛,也越来越受到重视[1]。如今的嵌人式设备日益复杂化,功能比以前更加丰富,性能也越来越高。在多种嵌人式终端产品中,音频处理功能已成为不可缺少的重要组成部分,高质量的音效是当前发展的重要趋势。

本文利用ATMEL公司的AT91RM9200型微处理器和Philips公司的UDA1341型立体声音频编解码器设计了一种嵌入式音频系统。该嵌入式音频系统硬件部分采用基于IIS总线的音频系统体系结构,其主要硬件电路后文作了详细的介绍。软件上,笔者以嵌入式Linux操作系统作为平台,重点介绍该音频系统在此平台下的驱动程序的实现。

2AT91RM9200处理器简介

AT91RM9200是ATMEL公司针对系统控制以及通信领域推出的基于ARM920T内核的新型微处理器[2],在高性能和低功耗特性方面具有极大的优势,而且具有很高的主频,最高可达到180MHz。该处理器具有独立的16K指令和16K数据cache,全功能的MMU虚拟内存管理单元,以及内部的16KBSRAM和128KBROM,EBI接口控制器。片上集成了丰富的外围接口,包括网络MAC、USB控制器、SDRAM控制器、CF接口、NANDflash接口、IIC接口、JTAG调试器以及支持256MB的地址空间。而且处理器还提供自举模式,供用户写入引导代码,方便Linux等操作系统的移植。

3UDA1341TS音频芯片及IIS总线简介

PHILIPS公司的UDA1341TS是一块功能强大的专用语音处理芯片[3]。该芯片集语音放大、滤波、采样、A/D和D/A转换等功能于一体,并且能进行数字语音处理。本设计使用的AT91RM9200处理器具有一个IIS音频接口,此接口采用DMA方式传输数据。在该方式下,由DMA控制器取代CPU,获得总线控制权,从而实现内存与外设或者内存之间的不同区域之间大量数据的快速传输。用DMA接口传输数据,不仅可以降低CPU负担,还可以节省系统的软件设计时间,降低编程难度。而UDA1341TS支持IIS总线格式,并且具有数字语音处理特性,由此决定了UDA1341TS与AT91RM9200处理器的电路连接比较简单,并且能实现语音的A/D和D/A等预处理,而不需要再额外增加专门的A/D和D/A器件。

需要说明的是,数字音频系统需要多种多样的集成电路,因此,为这些电路提供一个标准的通信协议非常重要。IIS总线是由SONY和PHILIPS公司等电子巨头共同提出的数字音频总线协议,全称是内部集成电路声音总线(InterICSoundBus),它是一种串行的数字音频总线协议,该总线专门用于音频设备之间的数据传输,为数字立体声提供一个序列连接至标准编解码器[4],目前很多音频芯片和处理器都提供了对IIS总线的支持。笔者根据IIS总线的原理,结合AT91RM9200处理器和数字音频输入/输出接口芯片UDA1341TS的结构特点,设计的嵌入式音频系统可以运用到很多类似的音频系统中。

4系统硬件设计方案

由于IIS总线只处理音频数据,而其他的信号如编码、控制等信号单独传送。为了使必需的引脚数最小并且保持连线简单,IIS总线由3条信号线组成:时分复用的数据通道线、字段选择线和时钟信号线。本系统由系统主控制器提供时钟信号,控制数字音频数据在各个IC之间的流向。此时,发送器在外部时钟信号的控制下产生数据,处于从模式。

本设计硬件连接图比较简单,如图1所示。图中的处理器采用了AT91RM9200处理器,其内置IIS音频总线,内置的IIS接口能读取IIS总线上的数据,并由UDA1341TS芯片外扩,通过总线和系统连接,需要处理器提供系统时钟和3根控制线。

 

AT91RM9200的IIS控制器由5个引脚与外部的音频编解码器相连。这些引脚分别是:系统时钟;位速率时钟(可使用内部或外部时钟源);字段选择;串行声音输入;串行声音输出。本设计中,UDA1341TS使用的是L3接口,该接口用来控制音频信号的音量大小以及低音等。L3接口有3个信号:L3MODE,L3CLK,L3DATA,将字节写入L3总线寄存器。IIS总线控制器通过软件控制AT91RM9200的通用I/O引脚(笔者选用的是PA0、PA1、PA2三个通用I/O口)来支持L3接口。下图是本嵌入式音频系统的硬件电路连接图,见图2。

 

各个引脚的连接说明如下:

SYSCLK:IIS总线的基本时钟源,AT91RM9200处理器的TCLK3引脚与UDA1341TS芯片的系统时钟相连接。由于UDA1341TS芯片仅支持从模式,因此在所有的应用中系统设备必须提供系统时钟。系统时钟频率是可编程的,其分频率可以是256、384或512倍的采样频率。系统时钟必须在频率上与数字接口信号一致。在设计中笔者用的是256fs的时钟。

WS:字段选择引脚,用于指出现行串行数据采样值为左声道还是右声道数据,AT91RM9200处理器的TK0引脚与WS相连接。

BCK:向UDA1341TS提供用作采样逻辑的串行声音位速率时钟,AT91RM9200处理器的TD0引脚与UDA1341TS芯片的BCK引脚相连接。

DATAI,DATAO:用于从UDA1341TS接收、发送串行声音数据,AT91RM9200处理器的RD0,RK0引脚分别对应UDA1341TS的音频输入、输出引脚。

L3M0DE,L3CLOCK,L3DATA:UDA1341TS的L3接口引脚,分别与AT91RM9200的3个通用数据输出引脚PA0、PA1、PA2连接。

5系统软件设计方案

嵌入式Linux是一种完全开放且免费的操作系统,其支持多种硬件体系结构,运行稳定,拥有完善的开发工具,为开发人员提供了优良的开发环境[5]。在嵌入式Linux系统中,设备驱动程序提供了应用程序和实际设备之间的一个软件层(接口),为应用程序屏蔽了硬件细节。本设计中,音频设备驱动程序主要通过对硬件的控制实现音频流的传输,同时向上层提供标准的音频接口。整个音频驱动程序包括设备初始化、打开设备、数字音频处理(DSP)驱动、混频器(MIXER)驱动和释放设备等部分。本文由于篇幅的限制,仅介绍设备初始化及打开设备的实现。

设备初始化是整个音频驱动程序的开始部分,主要完成对UDA1341TS音量、采样频率、L3接口等的初始化,并且注册设备。通过函数audio_init(void)完成以下具体功能:AT91RM9200控制端口(PA0、PA1、PA2)的初始化;为UDA1341TS分配DMA通道;初始化UDA1341TS芯片;注册音频audio设备和混频器设备。[!--empirenews.page--]

以下给出的是该函数总体框架:

audio_init(void)

{

Set_gpio_CTRl(GPIO_L3CLOCK);/*CPU控制端口的初始化*/

……/*“……”表示省略部分代码,以下同*/

Input_stream.dma_ch=DMA_CH1;/*输入DMA通道的选择*/

Output_stream.dma_ch=DMA_CH2;/*输出DMA通道的选择*/

Local_IRQ_restore(flags);

Init_UDA1341();/*初始化UDA1341*/

……

/*下面两个函数用来注册音频audio设备和混频器设备*/

Audio_dev_dsp=register_sound_dsp(&at91rm9200_audio_fops,-1);

Audio_dev_mixer=register_ound_mixer(&at91rm9200_mixer_fops,-1);

}

打开设备由函数open()来实现,该函数可以完成以下功能:配置IIS总线接口;设置UDA1341TS声道及采样频率等参数;计算缓冲区大小;为UDA1341TS分配DMA缓冲区。

该音频模块经过正确的配置可以实现录音、放音及循环放音等功能。本文给出初始化IIS接口、测试IIS接口以及运用IIS接口来播放一段音乐的程序设计基本流程,流程图如图3所示。录该音频模块经过正确的配置可以实现录音、放音及循环放音等功能。本文给出初始化IIS接口、测试IIS接口以及运用IIS接口来播放一段音乐的程序设计基本流程,流程图如图3所示。录音和循环播放功能的设计流程与放音类似,这里不再赘述。

图3IIS接口功能测试软件设计流程图

 

6结论

本文介绍了一种基于IIS总线的嵌入式音频系统,该系统简洁实用,可以实现音频的采集和播放,文章具体讲述了基于ATMEL公司AT91RM9200型微处理器与音频编解码芯片UDA1341TS的硬件连接及嵌入式Linux下音频驱动的实现。当然,这只是本系统的主要组成部分,至于其他相关组成部分如FLASH和SDRAM等,笔者在实际设计中已经完成,由于篇幅关系,文中没有详细介绍。该系统已经在AT91RM9200的开发平台上得到了实现,可以顺利进行音频的采集和播放,并取得了良好的效果。另外,当今实时视频处理和传输技术发展迅速,应用也日益广泛,如视频会议、VOIP电话等等,本设计适当加以扩展,特别是与视频模块结合,即可应用于更多相关的复杂系统中。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

今年是5G元年,全球各个通讯公司都使出来毕生的经历,为了在未来5G市场上抢占一块好的地方,他们之间的竞争也催生了一大批新技术。工信部发放4张5G牌照,标志着中国正式进入

关键字: 5G mimo 总线与接口

在5G通讯领域,目前做的比较好的当属华为,但是其他几家公司也不甘示弱,就在最近,三星电子成功开发支持28GHz频段的“5G综合型基站”(Access Unit),是目前5G商

关键字: 5g通讯 三星 华为 总线与接口

广告商与受众之间必不可少的沟通媒介最核心的恐怕属于数字标牌,它已演变为交互式个性化通讯工具,为用户提供了更直观的的参与感与体验。研华基于云数字标牌解决方案一应俱

关键字: 总线与接口 数字标牌 研华

通常情况下在工业现场经常需要用两个隔离DC-DC搭配单独的信号隔离电路的方法去隔离RS-232与RS-485,但隔离的性能存在差异性,并且占板面积较大。本文将为你介绍一种稳定可靠、应用简便的全隔离解决方案。

关键字: rs-232 rs-485 多协议接口模块 总线与接口

近年来,第五代移动通信系统5G已经成为通信业和学术界探讨的热点。5G的发展主要有两个驱动力。一方面以长期演进技术为代表的第四代移动通信系统4G已全面商用,对下一代技术

关键字: 5G 总线与接口 数据分析

在工业实现当中,需要降低总线接口的宽度,这里专门有一种设备叫工业用串行/解串器(SerDes),它可以降低高带宽数据接口总线宽度。使用一个串行器就可以把数据从一个宽并行数

关键字: serdes 总线与接口 高带宽数据接口总线

在当前虽然在嵌入式系统中有许多连接元件的方法,但最主要的还是以太网、PCI Express和RapidIO这三种高速串行标准。所有这三种标准都使用相似的串行解串器(SerDes)技术,它

关键字: 串行总线 差分走线 总线与接口

对于现在的嵌入式工程师,一般都知道CAN总线广泛应用到汽车中,但是CAN总线不仅运用到汽车上,在船舰电子设备通信也广泛使用CAN,随着国家对海防的越来越重视,对CAN的需求

关键字: can总线 总线与接口 接口

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线...

关键字: can 总线与接口 自动化 位流检测

UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。

关键字: CPU uart 总线与接口 rs-232c接口
关闭
关闭