首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM9的嵌入式网络语音通信终端(2)

基于ARM9的嵌入式网络语音通信终端(2)

UDA1341TS芯片的初始化工作需要与L3的总线连接,该L3总线是MCU通过GPB2、GPB3、GPB4三个引脚来模拟控制,用于处理器配置UDA1341内部的寄存器。UDA1341有两种模式:地址模式和数据传输模式。地址模式表示传输的是地址信息,它的高6位永远是000101,低两位用来表明模式是状态模式、数据0模式还是数据1模式,其中状态模式主要用于配置UDA1341的各类初始状态:采用频率、ADC、DAC等;数据模式主要用于改善音频输入、输出的效果、音量大小调节等。此外,要初始化S3C2440芯片内部的特殊寄存器,对I2S、DMA、中断相关的各个寄存器进行初始化设置,以及各个引脚功能的设置,如把GPF7引脚设置为EINT7外部中断功能引脚,当以太网网卡接收到数据,此引脚电平就会因中断跳变以使程序进入网卡中断接收处理函数。2.2 语音采集播放模块完成实时语音通话,UDA1341TS芯片在录音同时也必须完成放音功能。数据传输使用两个DMA通道。其录音过程为:音频芯片从麦克风中拾取声音信号进行采样、量化、编码,把采集到的数据通过I2S总线传给DMA1通道,并通过内部总线传到内存缓冲区中,之后送给处理器处理。放音:内存从处理器中获取数据,通过内部总线传给DMA2通道,之后通过I2S总线把数据传给音频芯片送给扬声器播音。通过采用DMA通道数据传输方式,处理器不需要花大量时间参与数据的传输,有充足的时间来处理其他事件。本设计需要实现全双工语音通信功能,本终端采用双缓存的设计方法,缓存处理机制以录音为例,系统在使用缓存2来存放音频设备量化好的数据时,CPU则处理缓存1的数据,当设备填充完缓存2,则转向缓存1进行填充,此时CPU处理缓存2的数据,如此不断循环交替,其处理过程如图4所示。
图4 双缓存处理过程

其录音与播放过程都采用双缓存设计方案,以录音为例,程序流程图如图5所示。
图5 录音程序流程图

2.3 网络通信模块处理器首先将从麦克风采样的数据信号封装成规定格式(其封装步骤如图6所示,封装到14字节以太网层),然后把封装好的数据交给DM 9000CEP驱动部分的发送函数dm_tran_packet(unsigned char*datas,intlength),通过设置TCR的发送请求位将数据发送出去,数据发送过程就是对数据打包的过程。而数据的接收是通过DM9000CEP的网络中断函数DM9000ISR()进行的,网卡每接到一个数据包将会产生一个中断,进入中断处理函数,按规定的格式从数据包中取出其语音数据,之后数据经处理器处理送到扬声器上播放外音。网络各层数据封装如图6所示。
图6 数据封装示意图

语音数据进行封装之后,不管是发送数据帧还是接收数据帧,都需要底层网卡驱动函数提供服务,本文以发送数据帧为例,简述底层网卡驱动原理,在发送数据和接收数据过程中,特别需要注意的是关闭网卡中断,以防打断数据处理过程。DM9000CEP内部有3 KB的SRAM用于发送数据缓存。在发送之前,数据是暂存在这个SRAM中的。当需要连续发送时,需要用DM9000CEP寄存器MWCMD赋予数据端口,这样就指定了SRAM中的某个地址,并且在传输完一个数据后,指针会指向SRAM中的下一个地址,从而达到连续访问数据的目的。如果在此过程中到达发送数据缓冲区末尾,指针将折回缓冲区的开头。发送数据帧的流程图如图7所示。
图7 发送数据帧流程

3 终端语音测试结果使用ADS软件将程序编译成可执行文件,下载到语音终端A和B上。在两个终端分别接上麦克风和耳麦进行话音通信,通过实验验证了系统可以进行清晰的语音对话。另外,可将终端A的麦克风接口与函数信号发生器相接,终端B的扬声器接口与示波器相连。函数信号发生器将正弦信号送给终端A,其频率为1 kHz,幅度为100mVpp。在示波器上可以看到经放大的正弦信号,其输出信号波形如图8所示。测试结果表明,该网络语音终端系统可以应用于远程网络语音通信。
图8 终端B输出信号图

结语本文作者利用嵌入式技术开发的网络语音终端具有可靠性高、控制界面强大以及可扩展性好的特点,使该终端可不通过计算机、直接连上网络进行数据传输,能充分利用现有网络通道实现快捷的语音通话。
继承事业,薪火相传
返回列表