原创 用TI的PCM2906做一个USB声卡+红外MIC

2010-2-7 17:36 8329 10 13 分类: 模拟

         之前电脑主板上的集成声卡坏掉了就想做一个USB声卡,自己想的是利用一个带USB的单片机控制ADC采集声音信号完成连接话筒录音的功能,再利用单片机控制DAC将USB传来的音频流解码还原为模拟的声音接功放电路就行了。可是找了很久的资料,却才发现有几个问题很难解决:一是上位机的驱动比较难做到,因为要想让那些音频、视频播放软件能很好地在这样一个声卡上工作需要依照标准的USB音频设备开发上位机的驱动,开发这样的驱动相关的资料太难找到了。二是能完成音频采集处理和传输的单片机不太好找,而且让单片处理机这样大的数据太难,更别提想达到一些诸如AC97的音效等等了----市面上卖的声卡往往都是利用DSP或者专用音效处理芯片来完成这些工作的。后来才发现其实TI挺早就出了相关的专门的USB音频的芯片了的而且性能相当不错,外围电路也很简单。自己就用TI的PCM2906做一个USB声卡+红外MIC,个人感觉效果还可以。下面将介绍具体制作方法:


       首先介绍一下PCM2906,它属于TI的USB 编解码器系列,具有线性输出和 S/PDIF 的、总线供电的立体声USB 编解码器。具体特性如下:


1.片上USB接口


。全速的收发器


。兼容支持USB2.0


。USB适应录音重放模式


。USB适应异步录音模式


。16位的Delta-Sigma ADC和DAC


。采样率:


ADC:8, 11.025, 16, 22.05, 32, 44.1, 48 kHz


DAC:32, 44.1, 48 kHz


。片上时钟有12MHZ的独立的振荡器


。S/PDIF (Sony/Philips Digital Interface Format)输入/输出,即可以连接光纤或同轴音频


。单电源USB 5V供电


。立体声输入和立体声输出


。多媒体功能:支持音量调节和静音控制


。28-Pin SSOP封装


可以应用于:


。USB 扬声器


。USB 耳机


。USB 监听器


。USB音频接口盒


其内部方块图:


点击看大图


其他信息请参见PCM2906 说明书。


下图是TI网站上给出的USB 扬声器的方块图:


点击看大图


        由上面PCM2906的结构和参数可知其完全满足了制作USB声卡的要求,并且还可以制作出立体声MIC实现立体声的录音功能。非常好的一点是,由于其本身就是设计为USB音频设备,所以当它与电脑连接时在XP,VISTA等系统上均不用用户专门安装驱动,操作系统的声卡驱动是支持USB音频设备的,播放器等也可以直接将音频信号传输给PCM2906,也可以完成软件的音量大小调节。


      在硬件电路上先搭建PCM2906的核心电路如下图所示(这里采用的是USB总线电源供电的配置电路,PCM2906的使用手册上还给出了USB总线电源供电的配置的高应用性能电路--需要外加一块稳压电源芯片):


点击看大图


        由图可见,核心电路很简单,只需要若干个电阻和电容,加上三个按钮开关(S1用于静音,S2用于增大音量,S3用于降低音量)一个12M晶振就OK了。左边是双声道音频输入,右边上面是同轴音频输出,下面是双声道音频输出。


        需要注意的是:1.图中C2,C3,C8,C9四个电容取值必须小于2uF,2.晶振的起振电容10-30pF之间取值,3.音频输入和输出的四个耦合电容依据自己的设计选取,这四个电容将决定输入和输出音频的音质,尽量选用品质好的电容,一般发烧级别的爱好者可能会用胆电容。


        PCM2906直接输出的音频声音信号很小,还不足以驱动耳机或者音箱。因而如上面USB 扬声器的方块图所示,在外部还应加一个功放电路,我采用的是低成本的TDA2822做的后级放大,具体电路参见PDF原理图https://static.assets-stash.eet-china.com/album/old-resources/2010/2/7/0882610a-9363-4971-8a28-360b4f0cf260.rar或者我的前一篇中的TDA2822的放大电路设计。个人觉得TDA2822最大的优势是便宜、普遍容易在本地电子市场买到,一两块钱就可以买一个再加上几个电阻电容就可以用了。但是有几个缺电:一是功率很小,二是电路布线不好,很容易自激烧掉了,尤其是双声道之间还有可能干扰,比如出现一个声道很大声而另一个由于干扰自激声音几乎没有了。所以,你要是有更好的双声道放大器,就用更好的。


        为了方便显示看看音量大小,我还在功放后级加了两个高亮LED的音量指示电路。这样的电路在早期流行的TAPE磁带播放机和随身听上很普遍(但往往那时用的是普通的发光二极管,如今我们可以用高亮二极管了)现在很少用了,有些CLASSIC的感觉吧,有兴趣的朋友可以采用。它的原理用模电的知识解释是很简单的,我就不多说了。LED上的压降是一定的,要改变其亮度只有改变流过它的电流大小。调节R10的大小可以改变其在没有音频输出时亮度为0,当然不能过小。


点击看大图


        曾经红外传输信号很流行,尤其是红外耳机,在很多关于电子爱好者制作的书上都有,现在不多见了。现在使用更多更时髦的是射频、蓝牙等等,无线话筒用的也多是调频。自己想起做个红外的MIC主要是觉得像蓝牙是超高频的或许某天大家都不会再用了,因为像手机这样的高频设备对人体是否有害至今还是真论之中,从实际生活经历来看,它们对孕妇、对婴儿有很大的副作用,对长期打电话的人的大脑也有副作用。它们的辐射对人体的害处肯定要大于像无线广播这样低频对人体的危害(因为至少无线广播的出现到现在也有一个世纪左右了还没有听说有人听听广播就出现了头晕等疾病的)。红外对人体的伤害应该更小一些,毕竟太阳光甚至所有的物体都在辐射红外线,人体是可以适应,无多大害处的。红外线传输的低频信号多是近距离直线传播,较之于无线调频电磁波的干扰要小得多,尤其是像教学用的无线话筒,很多时候会出现相邻几个教室的声音互相干扰的现象。


       不过实现红外传输音频的方案也不是很容易,通常的方案都是像我做的电路这样调幅的(很类似中波),就是把音频直接用红外搭载没有加调制的,发射电路如下图:


点击看大图


接收电路如下图:


e9222073-d6b0-4c27-b33c-2b329490ced0.jpg


        图中的二极管为红外收发对管,为了保证能在一个适当的空间内能够接收到发送的红外信号,在发射和接收上都采用了冗余的方法,即发送用多组,接收用多个。但是实际的效果不是特别好,或许是我的发射功率太小,只能在一米左右范围内能收到清晰的声音,超出这个距离就太小声了,模糊了,只能怪接收电路太简单了^.^


        若是接收电路能做到调幅/调频收音机的质量,接收效果会更好一些的。曾经在《无线电》上看到介绍过一个外国公司出过一款专门的红外调频音频收发的芯片TSH512/511(红外HIFI立体声收发器0.4-11MHZ),2002年11版的《世界电子元器件》上也有介绍。感觉那方案挺好,就是芯片自己本地买不着只好作罢了。另外南方也有一些小企业在做红外耳机和会议用的红外设备出售,他们的产品往往是用那种像音乐芯片的碳黑封装的,不知用的什么解决方案,卖价有些贵。


       提到红外电路,有一点应该注意的就是红外发射管的工作电流比普通发光二极管的电流要大得多,因而给它串的限流电阻的功率和阻值需要按红外发射管的参数来选择。另外一点就是不少的人在用红外电路时都有些迷惑------有时电路搭好了却不知通电了红外管(它并不像普通发光二极管通电就亮了,让人很觉得安心了-----电路好使了)有没有在工作,因为红外线我们肉眼看不见,这里有个好的检测办法:找一个相机或者摄像头(现在的很多手机也带了摄像头的,也可以用上)进入拍摄状态去拍你搭好的红外管,看其是否发光,如下面两图所示:


038de551-d53c-4503-b038-eea7142e9823.jpgb6a7a942-e7f5-41c6-b507-6b273379f062.jpg


         左边一幅图就是未通电时的红外发射管,右图是通电后的红外发射管,很明显它是能够正常工作的。


        有兴趣的朋友可以继续研究一下,相信随着人们对于健康的关注越来越多,那些日常生活中常用的存在对人体有伤害的高频传输方案应该会被更为安全的解决办法所替代,而红外应该是个合适的选择。


        下面继续介绍我做的USB声卡电路,为了将从红外接收到的音频信号输入到PCM2906中还需要将其进行放大和滤波处理(红外信号很容易受到日光灯和太阳光的干扰)并且还需要和话筒插口切换,以备使用立体声录音用。电路图如下:


8f9c1b7e-4905-43d3-ab2b-fbd9d3748c21.jpg


     这样整个电路就搭建好了,主要是硬件上仔细焊接就应该问题不大,调试过程中我遇到的问题是USB数据线屏蔽不够好,而且由于自己用的是将贴片的PCM2906焊在一小块转接板上再通过插接件连接,最终造成不是特别稳定。另外由于没有做板而用通用的电路板手工焊接的,音质只能算凑合,要是专门做一块电路板效果会好得多,因为会少很多布线、飞线带来的干扰。TI的PCM29XX系列都是USB编解码器即带音频输入的,而PCM27XX系列为USB 音频DAC均不带音频输入并且可以被其他控制器通过IIC或者SPI控制,如果你只想做个像单片机或者DSP等控制的音箱是可以选择的。

文章评论3条评论)

登录后参与讨论

用户377235 2012-10-1 14:05

目前单片机的速度还不足以处理音频数据,除非是DSP又另当别论,最好的选择就是用PCM290X或者CM118/119之类的芯片来实现。

用户377235 2012-5-11 22:47

资料很好,一块芯片解决所有的模拟数字转换。

用户1547065 2010-2-7 16:54

不才认为这样做法虽然简单但用专用IC的话就没有灵活性可言啦。如果用单片机就可以做的好很多但又复杂啦不少。可惜本人对对这方面没有研究。但希望可以多和楼主一起探讨一下。
相关推荐阅读
用户571671 2011-12-14 21:33
关于“自制简单方便的51/avr单片机USB ISP下载线”的一些说明
   之前自己写的“自制简单方便的51/avr单片机USB ISP 下载线(硬件/软件部分)”得到了很多朋友的关注,大家也提出了一些问题。在这里我系统地说明一下:         1.用沁恒公...
用户571671 2010-06-14 20:28
完全解决Protel 99SE汉化版的菜单和功能丢失问题
Protel 99SE是一款极其优秀的PCB设计软件,小巧而又功能丰富,对于电脑的硬件的要求很低,那些凡能跑WINDOW98的电脑也可以运行。可惜有两个典型的不足:1.没有官方的汉化版,这对于懂英语的...
用户571671 2010-06-04 17:07
让Ubuntu10.04中的YAMAHA声卡发声
自己的电脑上已经装了Ubuntu10.04好久了,最近才发现它居然还是个“哑巴“,一直没有声音,不管是启动还是用各种播放器播放MP3歌曲均不能听到声音。都说Ubuntu对于设备的驱动已经做的很好了的,...
用户571671 2010-03-27 12:04
INTERL BUS和MOTOROLA BUS及其区别
在实际应用中用到的很多带并行总线的芯片的硬件连接、读写操作都分为INTERL BUS和MOTOROLA BUS(某些文献上又叫INTERL 模式和MOTOROLA 模式)这可以在相应的芯片手册上看到,...
用户571671 2010-02-27 13:57
LCD BackLight Control for utulinux 2440 LCD 背光控制
LCD BackLight Control for utulinux 2440 LCD 背光控制                     注解:borlittle仅供学习参考,源代码版权归原著者所有 ...
用户571671 2010-02-27 13:55
LED Example for utulinux 2440 LED测试示例
LED Example for utulinux 2440 LED测试示例注解:borlittle仅供学习参考,源代码版权归原著者所有<?xml:namespace prefix = o ns ...
我要评论
3
10
关闭 站长推荐上一条 /2 下一条