基于ARM9处理器的嵌人式音频系统设计

时间:2012-11-26来源:网络



  图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设备和混频器设备。

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

  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);

  }

1 2 3

关键词: ARM9 音频系统 AT91RM9200

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版