微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于USB总线的多路电话录音系统的设计

基于USB总线的多路电话录音系统的设计

时间:12-28 来源:互联网 点击:

 录音系统使用到的设备固件接口函数:

USB_init()使能USB接口
Block_Write()写缓冲区数据,通过USB送入主机
Block_Read()读主机通过USB送至设备的缓冲区数据
Get_Interrupt_Source()返回主机API中断源以进行相应的处理
USB_Int_Enable()API中断使能
USB_Int_Disable()禁止API中断
USB_Disable()禁止USB接口使能
USB_Suspend()暂停USB接口

  通过这些主机和设备接口函数,即可方便地进行主机应用程序和设备端固件程序的编制了。

  3.2 设备固件程序的实现

  系统选择 Keil C作为固件开发环境,并采用C语言和汇编语言相结合的方式。

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

  固件程序调用USBXpress提供的固件接口函数来实现通过USB传输数据的功能,定义一个中断号为16的中断服务函数以响应USB中断。该 ISR以如下形式调用:

void USB_API_ISR(void) interrupt 16 {
BYTEINTVAL=Get_Interrupt_Source();
if(INTVALTX_COMPLETE) {
Block_Write(In_Packet, …);
}
if(INTVALRX_COMPLETE) {
Block_Read(Out_Packet, …);
}
if(INTVALDEV_CONFIGURED) {
}
if(INTVALDEV_SUSPEND) {
USB_Suspend();
}
}

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

ADC_INT: CLRAD0INT;清ADC中断位
PUSHACC
PUSHPSW
PUSHB
PUSHDPH
PUSHDPL
MOVA,ADC_COUNTER
MOVB, #3
MULAB
MOV DPTR,#ADC_TAB
JMP @A+DPTR
ADC_TAB:
LJMP ADC_0
LJMP ADC_1
LJMP ADC_2
LJMP ADC_3
ADC_4:;查询电话状态
MOV ADC_COUNTER,#1
;将ADC切换至通道4
JMP ADC_INT_END
ADC_0:;读取电话1语音信号
;将ADC切换至通道5
JMP ADC_INT_END
ADC_1:;读取电话2语音信号
;将ADC切换到通道6
JMP ADC_INT_END
ADC_2:;读取电话3语音信号
;将ADC切换到通道7
JMP ADC_INT_END
ADC_3:;读取电话4语音信号
;将ADC切换至通道8
ADC_3_1:DEC A
JNZ ADC_3_2
;将ADC切换至通道1
JMP ADC_INT_END
ADC_3_2:DEC A
JNZADC_3_3
;将ADC切换至通道2
JMP ADC_INT_END
ADC_3_3:;将ADC切换至通道3
ADC_INT_END:INCADC_COUNTER
POPDPL
POPDPH
POPB
POPPSW
POPACC
RETI

  3.3 上位机应用程序的设计

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

 结语

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top