您当前的位置:五五电子网电子知识电子知识资料主板-硬盘-存储-插卡基于USB2.0芯片CH372的USB接口声卡的设计方案 正文
基于USB2.0芯片CH372的USB接口声卡的设计方案

基于USB2.0芯片CH372的USB接口声卡的设计方案

点击数:7282 次   录入时间:03-04 12:03:42   整理:http://www.55dianzi.com   主板-硬盘-存储-插卡

    本文介绍一种基于南京沁恒公司USB2.0芯片CH372的USB接口声卡的设计方案,并以实例简述简单的USB接口声卡设计的整个基本过程。设计充分考虑接口通信速率及控制器取样处理能力,提出了有效的实时音频还原处理方案。该设计适用于便携式专用数字音效处理设备的开发应用。

    今年来,随着USB(UniversalSerialBus)技术的不断成熟,PC计算机的外围设备向着便携、即插即用的趋势发展。传统声卡多为ISA和PCI接口,可移植性差,而USB接口技术则弥补了这一缺陷,适用于一些专用数字嵌入式实时音效处理设备,实现其可移植、便携性。声卡设备需要较高的通信速率,以满足音频还原的取样率的要求,否则将导致混叠失真,USB2.0接口最高480Mbps的通信速率足可满足声卡设计要求。本文设计USB接口声卡采用MCU和USB接口芯片分离结构,其特点是开发难度小成本低,USB接口芯片使用南京沁恒公司产兼容USB2.0的CH372。

    硬件总体方案

    硬件设计原理

 USB接口声卡的硬件原理框图

  USB接口声卡的硬件原理框图如上图1示。该设计主要包括USB接口、实时接收存储、音频数字处理译码、D/A转换、滤波功放网络几部分。整个设计原理大致最终实现PC的USB接口声卡功能。主处理控制可根据声卡性能要求选择单片机/MCU/DSP等实现特定的功能,编译码及D/A可为均匀编码或A律、μ律编码。

    简易原理设计实例

    实例设计及其指标

    笔者实际设计中采用AT89S52作为CPU配合CH372A工作,DAC0832实现8位D/A转换,使用简单低通滤波网络,和TDA2822集成音频小功率功放,实现音频实时输出还原的基本USB接口声卡功能。

    声卡设计指标:8位无符号原码44100Hz取样率,352Kbps单声道输出。

    PC计算机端驱动程序将对音频按上述指标编码生成数据包以分块传送至USB端口。

    CH372功能简介

   CH372具有8位数据总线

CH372是一个USB总线的通用设备接口芯片。如上图所示在本地端,CH372具有8位数据总线(DO~D7)和读(RD#)、写(WR#)控制线、命令/数据选择线(A0)以及中断输出(INT#),可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;在计算机系统中,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件oCH372内置了USB通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH372自动处理默认端点0的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。图2中UD+/UD-分别为USB连接主机的通信口,CS#为片选控制线。

   单片机与CH372的通信设计

    CH372与AT89S52的电路接口分别对应为:DO~D7连接PO.0~P0.7,INT#连接P3.2,WR#连接P3.6,RD#连接P3.7,AO连接P2.0。

    CH372芯片占用两个地址位,当AO引脚为高电平时选择命令端口,可以写入命令:当AO引脚为低电平时选择数据端口,可以读写数据。单片机通过8位并口对CH372芯片进行读写。命令操作步骤如下:

    ①、在AO=1时向命令端口写入命令代码:

    ②、如果该命令具有输入数据,则在如下:PC主机端将音频数据编码后分块通过USB端输出,设备端硬件通过CH372实现与单片机/MCU/DSP的实时数据通信,经CPU对接收的数据块进行存储、数字化处理,译码后从I/O输出至D/A模块,通过模数转换成量化电平并经低通滤波处理至功放电路音频波形输出,AO=O时依次写入输入数据,每次一个字节:

    ③、如果该命令具有输出数据,则在AO=O时依次读取输出数据,每次一个字节:

    ④、命令完成,可以暂停或者转到①继续执行下一个命令。

    CH372芯片专门用于处理USB通讯,在接收到音频编码包数据后或者发送完校验返回数据后,CH372以中断方式通知单片机进行处理。单片机通过CH372芯片接收PC端的音频编码数据的处理步骤如下:

    ①、当CH372接收到USB主机发来的数据后,首先锁定当前USB缓冲区,防止被后续数据覆盖,然后将INT#引脚设置为低电平,向单片机请求中断:

    ②、单片机进入中断服务程序,首先执行GET_STATUS命令获取中断状态:

    ③、CH372在GET_STATUS命令完成后将INT#引脚恢复为高电平,取消中断请求:

    ④、由于通过上述GET_STATUS命令获取的中断状态是“下传成功”,所以单片机执行RD_USB_DATA命令从CH372读取接收到的数据:

    ⑤、CH372在RD_USB_DATA命令完成后释放当前缓冲区,从而可以继续USB通讯:

    ⑥、单片机退出中断服务程序。

    音频数据包被下载到缓冲区等待后续处理。

    单片机接收处理输出音频数据的设计单片机通过CH372与PC机进行USB通信的速率足够满足音频数据传输要求,可以实现无混叠的取样还原,当AT89C51使用24MHz晶振时钟时,进行批量的最简通信模式传输测试上行和下行速率均可以达到300Kbyte/s。对于44100Hz的取样率,每一字节音频码需持续输出约22.5μs的时长即可保证还朦效果。单片机通过USB获取每一字节数据的平均指令时钟周期为12个,即耗时6μs,因而剩余的17μs可用于其余处理。由于编码数据包采用8位无符号原码,下传至单片机的数据可不经过处理直接传至D/A转换。也就是说,单片机每隔22.5μs从USB接收缓冲区取一字节音频数据通过I/O口送至8位D/A通道即可。但要注意,如果需要对接收数据进行如数字滤波或幅度调节等处理,则须保证每字节数据所有处理周期小于取样周期,否则就得以损失取样率为代价。下图为本系统的单片机外围电路。

单片机外围电路

    数—模转换模块设计

    为达到设计的数据传输转换速率的要求,转换选用8位D/A的DAC0832芯片(数模转换电路如下图所示),其最高可达到1μs每次的转换速率,完全满足音频352Kbps位速转换率的设计要求。基准电压取2.5V,经译码处理后的数据由单片机8位I/O口输出,转换成模拟量至低通及功放。

数模转换电路

   低通滤波器及音频功放的设计

    为消除D/A转换出模拟信号的不连续掺入的高频分量,后端应加入低通滤波电路将输出变为平滑连续的信号,设计采用简单的阻容网络实现滤波要求,如下图。因D/A输出功率不足以驱动扬声器发声,滤波后的信号应输入功率放大器进行音频放大。音频功放使用TDA2822小功率音频放大器,采用BTL推挽放大电路连接,可实现最大3W的输出功率。

采用简单的阻容网络实现滤波

    软件设计和实现

    PC端程序软件

    PC主机端使用设备需安装CH372接口驱动,之后根据原厂配带的动态链接库文件,使用VC语言设计声卡设备适配程序,实现如下图所示流程。

使用VC语言设计声卡设备适配程序

    设备端软件流程

    USB接口声卡设备实现通信及处理流程如下图所示。本设计的设备端程序源代码可从《电子世界》杂志网站下载。

USB接口声卡设备实现通信及处理流程

    结语

    本设计从原理出发,使用独立的USB2.0接口芯片CH372结合处理控制器,一方面减小了软件开发工作量,另一方面便于根据声卡设备的性能需要修改设计以兼容各类处理器,如单片机/DSP/MCU等,最终经过D/A实现USB声卡功能。笔者设计的实例电路经过大量测试,参数达到设计指标,实际应用效果理想。此外对于更高的应用需求,USB接口声卡可使用数字信号处理器DSP如TI公司的TMS320VC5402配合低电压型的CH372接口芯片,并结合非均匀量化D/A转换芯片TMS320AD50,以实现强大的USB接口声卡音效处理功能。




本文关键字:接口  主板-硬盘-存储-插卡电子知识资料 - 主板-硬盘-存储-插卡