"); //-->
摘要 介绍一种基于通用串行总线(usb)的多路电话录音系统的实现方法。系统采用内部集成usb控制器的高性能的c8051f320微控制器作为控制芯片,硬件实现简单;软件采用silicon laboratories公司提供的usbxpress软件包进行开发设计,方便快捷,录音效果很好。
关键词 通用串行总线(usb) c805lf320 多路电话录音 usbxpress
1概述
现在市场上的录音系统大致可分为电话录音卡和电话录音盒两种。电话录音卡是以板卡的形式插入电脑主板插槽与主机连接的,安装极为不便。大部分的录音卡为pci插槽形式,不仅价格昂贵,而且受计算机插槽数量、地址及中断资源的限制,可扩展性较差。尤其是在电磁干扰较强的环境中,无法专门对其作电磁屏蔽,容易导致数据丢失,使声音失真。电话录音盒一般为外置式设备,通过接口线直接接入计算机外置接口,使用非常方便;但是,计算机提供的接口毕竟有限,传统的串并口都是点对点连接,即一个接口只能支持一个设备,而且串并口一般不能满足系统的实时性要求。在这种情况下,采用usb作为录音系统的接口,是一个相当好的选择。设计一种基于usb接口技术的电话录音系统,不仪充分利用usb规范的各种优越条件,很好地解决了上述问题,而且具有支持即插即用、使用方便的功能,市场前景广阔。
本文阐述一种基于usb总线的多路电话录音系统的实现方法,录音系统采用高性能的混合信号微控制器芯片c8051f320作为控制器内核。该微控制器内部集成有usb控制器来控制usb的传输,简化了系统硬件电路的设计;软什方面利用cygnal/silicon laboratories公司提供的usbxprcss软件开发包进行pc端应用程序和微控制器端固件程序的编程。该方法充分利用已有资源,开发简单,易于实现。录音系统采用外置录音盒的形式,连接在电脑的usb接口上,并连上要管理的电话线,即插即用,无须外接电源,可热插拔,使用方便。录音系统以软硬件相结合的方式对电话进行录音,并将录音文件录制于电脑硬盘,弥补了传统电话录音时问短、不便管理、声卡采集器录音不稳定的缺陷。
2 系统的硬件实现
2.1 usb总线及c8051f320微控制器简介
通用串行总线(usb)是近年来发展起来的一种新的总线接口技术,以其低成本、高速度、易扩展、支持热插拔和即插即用等一系列优点,获得了迅猛发展。usb接口已经和串口/并口一样,成为pc机的标准接口。usb2.0接口的最高传输速度可达480mbps,远远高于传统的串/并接口,可以满足绝大部分情况下大数据最实时传输的要求。usb接口采用树型拓扑结构,一个usb接口可以最多连接127个设备,由于单独使用自己保留的中断,因此基于usb的通信克服了通常串并口通信中遇到的iqr冲突问题。另外,usb接口支持热插拔的特性,极大地方便了系统的开发凋试和实际应用;usb设备不需要单独的电源,只需用计算机或集线器提供电源。
c8051f320是cygnal公司推出的一款具有全速usb功能的混合信号flash微控制器。芯片内部集成有2304字节的ram和16kb的flash存储器;具有较快的处理速度和较大的存储容量,而且具有在系统可编程的功能。实际上,c8051f320是一个完整的小型片上系统(soc)。
c8051f320具有以下特点:
◇全速的usb2.o功能控制器;
◇可支持8个usb端点;
◇带有lkb的usb缓冲存储器;
◇内部集成了usb接口的数据收发器,设计中无需外部上拉电阻;
◇具有高速增强性805lmcu内核,该mcu内核采用流水线式指令结构,处理速度可达25mips(时钟频率为25mhz时)。
基于上述特点,录音系统采用了c8051f320微控制器芯片。
2.2 系统的硬件构成
录音系统实现四路电话同时录音。系统总体框架如图l所示。
录音盒内部为以c8051f320微控制器芯片为核心的单片机系统;通过usb电缆与主机连接;微控制器芯片的p0~p3四个端口用于输入电话线路产生的直流信号,以获取电话线路的状态;p4~p7四个端口用于输入电话线路产生的交流信号,即语音信号,然后通过a/d转换器转换为数宁信号,作为usb传输的录音数据。
系统所采用的a/d转换器为c805lf320微控制器内部集成,具有10位精度,最高采样率可达200ksps。
3 系统的软件实现
系统的软件基于silicon laboratories公司提供的usbxpress软件开发包开发设计,usbxpress通过动态链接库和库函提供应用程序接口。由于usbxpress已提供有设备的驱动程序,因而,开发的主要任务是下位机固件程序和上位机应用程序的开发。
3.1 usbxpress软件开发包
usbxpress软件开发包包括windows公司设备驱动程序、inf驱动安装文件、主机接口函数库(以windowsdll的形式提供)以及设备固件接口函数库。
通过这些主机和设备接口函数,即可方便地进行主机应用程序和设备端固件程序的编制了。
3.2 设备固件程序的实现
系统选择keil c作为固件开发环境,并采用c语言和汇编语言相结合的方式。
固件程序把有关usb功能的固件设计成完全的中断驱动,isr(中断服务程序)和后台主程序的数据交换通过事件标志和数据缓冲区来进行。主循环负责初始化i/o口、定时器和中断以及重新连接到usb总线,然后检测事件标志来对各种事件进行处理。其中后台程序采用c51高级语言编写,a/d转换完成中断子程序采用asm51汇编语言编写。
固件程序调用usbxpress提供的固件接口函数来实现通过usb传输数据的功能,定义一个中断号为16的中断服务函数以响应usb中断。该isr以如下形式调用:
固件程序的主要工作是通过a/d转换使接入的4路电话模拟信号转换为数字信号,以便于传输及存储。程序采用定时器0溢出启动a/d转换的方式,依次以一定的采样速率(11 025 kbps)对交流通道(通道l、2、3、4,语音信号)采样,并每间隔一定时间对直流通道(通道5、6、7、8,电话状态)进行采样。a/d转换完成中断子程序用汇编语言编写,其大致框架为:
3.3 上位机应用程序的设计
系统选用visual c++6.0进行上位机应用程序的开发。程序采用多线程的思想,主线程为用户界面线程,负责应用程序与用户的交互;另外开辟一个工作线程,用于usb数据的传输。应用程序首先通过usbxpress提供的接口函数f32x_getnumdevices()来取得当前连接的usb设备数。然后,根据获得的标识号利用接口函数f32x_open()打开相应设备,并获得设备的句柄作为usb设备的标识。该句柄在程序巾是独一无二的。这样,就可以调用f32x_read()和f32x_write()接口函数来读/写设备,控制数据的传输。为了准确读取录音数据,usbx-press提供了接口函数f32x_checkrxqueue()来返回设备接收队列中的字节数,以确保录音数据的无差错传输。录音数据以pcm的格式存储在电脑硬盘中。
结语
该电话录音系统基于silicon laboratories公司提供的usbxpress软件开发包开发设计。开发调试简单、快捷,实现了四路电话同时录音,录音清晰,并实现了电话监听功能。通过对基于usb的多路电话录音系统的调试测试,证明了它不仅实现了基本的录音功能,达到了很好的录音效果,而且克服了以往传统方法的缺陷,实现了真正意义上的即插即用,极大地方便了用户使用。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。