原创 基于USB总线的多路电话录音系统

2009-8-13 19:32 2250 4 4 分类: MCU/ 嵌入式

摘要介绍一种基于通用串行总线(USB)的多路电话录音系统的实现方法。系统采用内部集成USB控制器的高性能的C8051F320微控制器作为控制芯片,硬件实现简单;软件采用Silicon Laboratories公司提供的 USBXpress软件包进行开发设计,方便快捷,录音效果很好。

7R8Y-ubNC"|44606

,y$K9E b9B&O Pj5m44606关键词通用串行总线(USB) C8051F320 多路电话录音 USBXpress电子园51单片机学习网i7P^"u6uq

电子园51单片机学习网,hD"j&E#\V/Fs

1 概述电子园51单片机学习网RZ~D!q4jX} s+j3q

电子园51单片机学习网}'a0X-V_?2V z

  现在市场上的录音系统大致可分为电话录音卡和电话录音盒两种。电话录音卡是以板卡的形式插入电脑主板插槽与主机连接的,安装极为不便。大部分的录音卡为PCI插槽形式,不仅价格昂贵,而且受计算机插槽数量、地址及中断资源的限制,可扩展性较差。尤其是在电磁干扰较强的环境中,无法专门对其作电磁屏蔽,容易导致数据丢失,使声音失真。电话录音盒一般为外置式设备,通过接口线直接接入计算机外置接口,使用非常方便;但是,计算机提供的接口毕竟有限,传统的串并口都是点对点连接,即一个接口只能支持一个设备,而且串并口一般不能满足系统的实时性要求。在这种情况下,采用USB作为录音系统的接口,是一个相当好的选择。设计一种基于USB接口技术的电话录音系统,不仅充分利用USB规范的各种优越条件,很好地解决了上述问题,而且具有支持即插即用、使用方便的功能,市场前景广阔。

m*MCi.h/Z#bY?44606电子园51单片机学习网"c _SgXz q'^_*w

  本文阐述一种基于USB总线的多路电话录音系统的实现方法,录音系统采用高性能的混合信号微控制器芯片C8051F320作为控制器内核。该微控制器内部集成有USB控制器来控制USB的传输,简化了系统硬件电路的设计;软件方面利用Cygnal/Silicon Laboratories公司提供的USBXpress软件开发包进行PC端应用程序和微控制器端固件程序的编程。该方法充分利用已有资源,开发简单,易于实现。录音系统采用外置录音盒的形式,连接在电脑的USB接口上,并连上要管理的电话线,即插即用,无须外接电源,可热插拔,使用方便。录音系统以软硬件相结合的方式对电话进行录音,并将录音文件录制于电脑硬盘,弥补了传统电话录音时间短、不便管理、声卡采集器录音不稳定的缺陷。电子园51单片机学习网KY)LQ6HO*K


9YZnz9V-\#]'H!W446062  系统的硬件实现电子园51单片机学习网ego1q)~

电子园51单片机学习网%n&@I hTu4|$q

2.1  USB总线及C8051F320微控制器简介

&_A/c}1M0K_(I,_44606电子园51单片机学习网vDS;[ q?

  通用串行总线(USB)是近年来发展起来的一种新的总线接口技术,以其低成本、高速度、易扩展、支持热插拔和即插即用等一系列优点,获得了迅猛发展。USB接口已经和串口/并口一样,成为PC机的标准接口。USB2.0接口的最高传输速度可达480 Mbps,远远高于传统的串/并接口,可以满足绝大部分情况下大数据量实时传输的要求。USB接口采用树型拓扑结构,一个USB接口可以最多连接127个设备,由于单独使用自己保留的中断,因此基于USB的通信克服了通常串并口通信中遇到的IQR冲突问题。另外,USB接口支持热插拔的特性,极大地方便了系统的开发调试和实际应用;USB设备不需要单独的电源,只需用计算机或集线器提供电源。

zS z7y y&fu0x44606

FE1JCv6\5t44606  C8051F320是Cygnal公司推出的一款具有全速USB功能的混合信号Flash微控制器。芯片内部集成有2 304字节的RAM和16 KB的Flash存储器;具有较快的处理速度和较大的存储容量,而且具有在系统可编程的功能。实际上,C8051F320是一个完整的小型片上系统(SoC)。C8051F320具有以下特点:

]?Q KT"e e\@44606

*C"|'\~ cGa44606  全速的USB2.0功能控制器;
_6pc)a\M;D1r6e c44606  可支持8个USB端点;
4?qb@L5B~:{44606  带有1 KB的USB缓冲存储器;电子园51单片机学习网*Kl0S)@![ L \\-v
  内部集成了USB接口的数据收发器,设计中无需外部上拉电阻;电子园51单片机学习网/IEUK,Rg @'r@
  具有高速增强性8051 MCU内核,该MCU内核采用流水线式指令结构,处理速度可达25 MIPS(时钟频率为25 MHz时)。电子园51单片机学习网;W|0Y,l7c |d e

电子园51单片机学习网sb})k9B!_

  基于上述特点,录音系统采用了C8051F320微控制器芯片。电子园51单片机学习网Z"Hl ]I7[g x

电子园51单片机学习网,Rkn"z:V&C e ~

2.2  系统的硬件构成电子园51单片机学习网V'bdUy'R

电子园51单片机学习网#m ni)@U1Nx

  录音系统实现四路电话同时录音。系统总体框架如图1所示。

/v I4YS.Dn}W7K44606

按此在新窗口浏览图片
+y DF.b!n D w44606图1  系统总体框架电子园51单片机学习网+zs!v@,H'~0Ln

电子园51单片机学习网 d!Y6_,w[/O ].vmz(g zT

  录音盒内部为以C8051F320微控制器芯片为核心的单片机系统;通过USB电缆与主机连接;微控制器芯片的P0~P3四个端口用于输入电话线路产生的直流信号,以获取电话线路的状态;P4~P7四个端口用于输入电话线路产生的交流信号,即语音信号,然后通过A/D转换器转换为数字信号,作为 USB传输的录音数据。

+?:BH6A,O44606电子园51单片机学习网Gn!i8T m

  系统所采用的A/D转换器为C8051F320微控制器内部集成,具有10位精度,最高采样率可达200 ksps。电子园51单片机学习网"[ZQ-D;v5{iR{6y

电子园51单片机学习网P*A!jX ?'jMj

3  系统的软件实现

)J l,U+K(E9Rd44606

OY2gV"BEv L7M(s44606  系统的软件基于Silicon Laboratories公司提供的USBXpress软件开发包开发设计,USBXpress通过动态链接库和库函数提供应用程序接口。由于 USBXpress已提供有设备的驱动程序,因而,开发的主要任务是下位机固件程序和上位机应用程序的开发。

O6dU;hA9B']o44606

as&s.B.A/{+sM446063.1  USBXpress软件开发包电子园51单片机学习网H9ge\Y/GM k,H


@#L'Z"M.E}9G(y(j44606  USBXpress软件开发包包括Windows公司设备驱动程序、INF驱动安装文件、主机接口函数库(以Windows DLL的形式提供)以及设备固件接口函数库。电子园51单片机学习网2Q(CG)zBv3@|+BD


gOkC s"[f`44606  录音系统使用到的主机接口函数为:

LX8b1Q9K(Cx44606

(R!Z$M6p/{'cT44606  F32x_GetNumDevices( )返回主机所连接的USB设备的个数电子园51单片机学习网!c?b I%B
  F32x_GetProductString( )返回所连USB设备的描述符
^ h4`[6\0`(v44606  F32x_Open( )打开USB设备
;a7| Q@$Z u$sF44606  F32x_Close( )关闭USB设备电子园51单片机学习网x_a5EBj&d
  F32x_Read( )读设备电子园51单片机学习网BP,J`i2HD e,wb
  F32x_Write( )写设备电子园51单片机学习网&Y h _hG%q6a,k1f
  F32x_SetTimeouts()设置读/写超时值
@ Gc0X8O;g44606  F32x_GetTimeouts()获取读/写超时值
8~%B/|3Z;@[Az44606  F32x_CheckRXQueue()返回设备接收队列的字节数

6y/r.JcvOy m'D1X44606

8d$^|$TJ$n6?5N44606  录音系统使用到的设备固件接口函数:

]6g8D-|[44606电子园51单片机学习网:NNtk&f#{;}l"K`;ze8fN

  USB_init()使能USB接口电子园51单片机学习网 [ {9s:C&DJ
  Block_Write()写缓冲区数据,通过USB送入主机
l ?2p~8|yVai44606  Block_Read()读主机通过USB送至设备的缓冲区数据
1A;RXanH44606  Get_Interrupt_Source()返回主机API中断源以进行相应的处理
&B'b5T1UI vf44606  USB_Int_Enable()API中断使能电子园51单片机学习网Zz'hq1f [
  USB_Int_Disable()禁止API中断电子园51单片机学习网3@7@RO;z:d7M j ?\v
  USB_Disable()禁止USB接口使能
*^#g9Q!` iS0Q\2H;Ho0T44606  USB_Suspend()暂停USB接口电子园51单片机学习网Y.Nq2h0n[2C0]


t h2E9]d#},C \44606  通过这些主机和设备接口函数,即可方便地进行主机应用程序和设备端固件程序的编制了。

]e#fN9TY(O44606

6}'|~LZ,\"k446063.2  设备固件程序的实现电子园51单片机学习网&m(JG*y.G i

电子园51单片机学习网r\ ^f4\;G3b}\

  系统选择 Keil C作为固件开发环境,并采用C语言和汇编语言相结合的方式。电子园51单片机学习网-^%t,\+u6V8z&k3M

电子园51单片机学习网 W:G6@1k @h

  固件程序把有关USB功能的固件设计成完全的中断驱动,ISR(中断服务程序)和后台主程序的数据交换通过事件标志和数据缓冲区来进行。主循环负责初始化I/O口、定时器和中断以及重新连接到USB总线,然后检测事件标志来对各种事件进行处理。其中后台程序采用C51高级语言编写,A/D转换完成中断子程序采用ASM51汇编语言编写。

p~6~ y I U#N(zEi44606

z*w2S E%O'L} R-x$C44606  固件程序调用USBXpress提供的固件接口函数来实现通过USB传输数据的功能,定义一个中断号为16的中断服务函数以响应USB中断。该ISR以如下形式调用:电子园51单片机学习网3vwh$xWK&Wt(f

电子园51单片机学习网U\eBi?'c

void USB_API_ISR(void) interrupt 16 {电子园51单片机学习网8DRc.Ex:eI](X
  BYTEINTVAL=Get_Interrupt_Source();
l t.FE iI5]1q44606  if(INTVAL&TX_COMPLETE) {电子园51单片机学习网&Pvw]+M)mz
    Block_Write(In_Packet, …);
X1G!Ks&?` H44606  }
(_'iHO!TZ/T&O44606  if(INTVAL&RX_COMPLETE) {
E7?e F(q(@44606    Block_Read(Out_Packet, …);电子园51单片机学习网;y"U$qQ,i6l5uC sH
  }电子园51单片机学习网0az6w;rY?
  if(INTVAL&DEV_CONFIGURED) {电子园51单片机学习网mC Kt$i
  }
l7n.Wg&X V44606  if(INTVAL&DEV_SUSPEND) {电子园51单片机学习网l}z }B.q
    USB_Suspend();电子园51单片机学习网7C2V#hJa m
  }
E B^-XF7q+wt2~Z2g44606}

*[#POM Ma.A44606

uEY6y,cg+z&`PC44606  固件程序的主要工作是通过A/D转换使接入的4路电话模拟信号转换为数字信号,以便于传输及存储。程序采用定时器0溢出启动A/D转换的方式,依次以一定的采样速率(11 025 kbps)对交流通道(通道1、2、3、4,语音信号)采样,并每间隔一定时间对直流通道(通道5、6、7、8,电话状态)进行采样。A/D转换完成中断子程序用汇编语言编写,其大致框架为:电子园51单片机学习网!SDB4dh%W*a;B

电子园51单片机学习网_+G S(_`lU

ADC_INT: CLRAD0INT;清ADC中断位
y#z(B&R4QxI%G44606  PUSHACC
b y \] oB44606  PUSHPSW
\)go7Mei6?&lLz44606  PUSHB电子园51单片机学习网xi0o,J2T_
  PUSHDPH电子园51单片机学习网lPTu0D M
  PUSHDPL
;E3t$`,C~1E^44606  MOVA,ADC_COUNTER电子园51单片机学习网H7y7M4| N2Ua(z?
  MOVB, #3电子园51单片机学习网9}dpO]?
  MULAB
V s7e'jI mNk44606  MOV DPTR,#ADC_TAB
x^i9k_A44606  JMP @A+DPTR电子园51单片机学习网U^'e} |6S-L
ADC_TAB:
m*rZ?S*u,e44606  LJMP ADC_0电子园51单片机学习网0w:Ds$hcC5y
  LJMP ADC_1电子园51单片机学习网u e V'y1Z
  LJMP ADC_2电子园51单片机学习网'q%HX G-j/AE2U E$o
  LJMP ADC_3电子园51单片机学习网p#@)V8f&YS1X?1|9B
ADC_4:;查询电话状态
JX&Q3v_'B(sp44606  MOV ADC_COUNTER,#1电子园51单片机学习网]o4@?Q0c[T
  ;将ADC切换至通道4电子园51单片机学习网 o[ dLb#b6A
  JMP ADC_INT_END
F(tA wP\i a ]44606ADC_0:;读取电话1语音信号
HN6l1M D44606  ;将ADC切换至通道5电子园51单片机学习网Q5Qzt h(yFV
  JMP ADC_INT_END电子园51单片机学习网A;O'|n6a.k@
ADC_1:;读取电话2语音信号
-iq6|j!X7y|t2W44606  ;将ADC切换到通道6电子园51单片机学习网4UpOA*Difm
  JMP ADC_INT_END
D+^n{M)Xww44606ADC_2:;读取电话3语音信号
4u8Mm,t'f9c#h7E&r;Z44606  ;将ADC切换到通道7
s0n s3qW'?;J44606  JMP ADC_INT_END电子园51单片机学习网X lZ1e&X5v#\
ADC_3:;读取电话4语音信号
q%k*I6A%_8]d44606  ;将ADC切换至通道8电子园51单片机学习网NM:` w.n#Z
ADC_3_1:DEC A电子园51单片机学习网 Jh.IjIL
  JNZ ADC_3_2电子园51单片机学习网:F+Il{,naD7Q
  ;将ADC切换至通道1
1Y+EHEm@6g44606  JMP ADC_INT_END电子园51单片机学习网l5Rt_D9^u j
ADC_3_2:DEC A电子园51单片机学习网 M-SI!S#_P
  JNZADC_3_3
4X#[A&j!a3E1tw44606  ;将ADC切换至通道2
Z(v2z,~4w+F:Y:L]-Qk44606  JMP ADC_INT_END电子园51单片机学习网uz#M4c?
ADC_3_3:;将ADC切换至通道3电子园51单片机学习网DJ/oh} L*Kv
ADC_INT_END:INCADC_COUNTER电子园51单片机学习网.u!RnW/Z$gT
  POPDPL电子园51单片机学习网 m2g-w2w"MYn
  POPDPH电子园51单片机学习网"r.N"K;~8q,b
  POPB
eQE#P6@6JC;wU44606  POPPSW
0Rp9g/Z)Y*d;[!|m44606  POPACC
m_H4S~%zkC44606  RETI电子园51单片机学习网'Vm!b6]b

电子园51单片机学习网AOz6_ cwt"n

3.3  上位机应用程序的设计

T9b6nU&f!OLm44606电子园51单片机学习网;L _0XLO!pZ4gujG

  系统选用 Visual C++ 6.0进行上位机应用程序的开发。程序采用多线程的思想,主线程为用户界面线程,负责应用程序与用户的交互;另外开辟一个工作线程,用于USB数据的传输。应用程序首先通过USBXpress提供的接口函数F32x_GetNumDevices()来取得当前连接的USB设备数。然后,根据获得的标识号利用接口函数F32x_Open()打开相应设备,并获得设备的句柄作为USB设备的标识。该句柄在程序中是独一无二的。这样,就可以调用 F32x_Read()和F32x_Write()接口函数来读/写设备,控制数据的传输。为了准确读取录音数据,USBXpress提供了接口函数 F32x_CheckRXQueue()来返回设备接收队列中的字节数,以确保录音数据的无差错传输。录音数据以PCM的格式存储在电脑硬盘中。电子园51单片机学习网$d(mu9[e$U^l'n


3NAc$uT5o:P,~44606结语电子园51单片机学习网2?WMs!u%O5i

电子园51单片机学习网Lnn+B!d/w[

  该电话录音系统基于Silicon Laboratories公司提供的USBXpress软件开发包开发设计。开发调试简单、快捷,实现了四路电话同时录音,录音清晰,并实现了电话监听功能。通过对基于USB的多路电话录音系统的调试测试,证明了它不仅实现了基本的录音功能,达到了很好的录音效果,而且克服了以往传统方法的缺陷,实现了真正意义上的即插即用,极大地方便了用户使用。

7O2H;C5ZJ?wg44606

参考文献

#]F^'i ZuW b4j44606电子园51单片机学习网SA X]p

[1]  何立民.单片机应用技术选编⑩.北京:北京航空航天大学出版社,2004.
3l?:\ C9Eue#j44606[2]  陶楚良.数据采集系统及其部件.北京:北京工业学院出版社,1999.电子园51单片机学习网R b` Dv4~
[3]  马忠梅.单片机的C语言应用程序设计.北京:北京航空航天大学出版社,2004.
q8B9s+t2v7L*Ir44606[4]  陈连坤.嵌入式系统的设计与开发.北京:清华大学出版社,北京交通大学出版社,2005.电子园51单片机学习网o[2p/t2TF HM6tO

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条