关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 基于USB总线的多路电话录音系统

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

作者: 时间:2010-05-19 来源:网络 收藏

  系统所采用的A/D转换器为C8051F320微控制器内部集成,具有10位精度,最高采样率可达200 ksps。

3 系统的软件实现

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

3.1 USBXpress软件开发包

  USBXpress软件开发包包括Windows公司设备驱动程序、INF驱动安装文件、主机接口函数库(以Windows DLL的形式提供)以及设备固件接口函数库。

  录音系统使用到的主机接口函数为:

  F32x_GetNumDevices( )返回主机所连接的USB设备的个数
  F32x_GetProductString( )返回所连USB设备的描述符
  F32x_Open( )打开USB设备
  F32x_Close( )关闭USB设备
  F32x_Read( )读设备
  F32x_Write( )写设备
  F32x_SetTimeouts()设置读/写超时值
  F32x_GetTimeouts()获取读/写超时值
  F32x_CheckRXQueue()返回设备接收队列的字节数

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

  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转换完成中断子程序用汇编语言编写,其大致框架为:



评论


相关推荐

技术专区

关闭