|
|
看到标题大家是不是都感觉到“该来的总会来的”  关于异步声卡的各类介绍,请看我的上一篇帖子:使用TAS1020制作的异步声卡(http://bbs.mydigit.cn/job.php?action=topost&tid=2594841&pid=tpc),大家很少有条件购买TAS1020进行实验,Rush将程序移植到大家最熟悉的STM32平台,即付宝蓝牙开发板上。楼主看了上次的回帖,大量的朋友说根本听不懂原理。。。那这次就不谈原理,以制作为主,手把手教大家如何搭建可以出声的硬件,有了硬件大家才能开始学习和魔♂改。毕竟没有实物的话谈那么多原理也没有意义。开源是种乐趣以及对强迫症的满足,以及接受超级强迫症的监督,一如既往在帖子最后附上源代码,方便想学习和魔♂改的同学。
声卡参数 USB1.1/usb2.0 全速,UAC1.0 测试支持win8.1,理论支持win7/8/10全系列,WinXP兼容性未知。 测试支持WASAPI event,逻辑分析仪实测精密播放。 16bit/44.1 CD音质(由于stm32硬件限制无法支持更大的数据包。) USB是异步带反馈方式;DAC播放使用stm32内部时钟,不受USB影响
POS板子硬件上需要修改的地方不多,难度都不大,大家需要购买的只有一个PCM5102A的I2s DAC模块,大概30元,这样才能将数字信号转换为高品质的声音。
PCM5102A是一种带PLL的DAC,由于stm32内部PLL性能过差,输出主时钟直接导致播放忽快忽慢,所以使用这种DAC进行弥补是必须的。将DAC板子上面的SCK接地,就可以打开PCM5102A内部的PLL功能。(图上已经通过板子自带的焊点接地,在SCK字样下方)。另外值得一提的是这种DAC声音居然还不错,完全不像7块钱一片的东西,令人深感物超所值。
这个I2s可能有的同学不是很熟悉,其实他差不多就是一种特殊的SPI接口。
即-付-宝是一款令人感觉Amazing!的“被”开源硬件(感谢初期研究的坛友!),只需要一块钱就能体验到编程的美(cao)好(dan),其配置大容量STM32F103或同级别GD32 CPU,内部硬件足够大家做LED,KEY,UART等入门实验,是居家旅行的必备佳品
这次拿一个“豪华版”带PMIC未缩水即付宝做演示。板子正面主要是调试接口,刷写程序需要用到,大家如果拿到的单片机,内部程序加密了,清不掉,需要把BOOT0接到3.3V上面,再通电,就能清除掉了,清楚以后就能正常通过JLINK或者STLINK下载程序。 另外很多同学手上的板子是“阉割版”没有PMIC,是一堆三极管那种,那也可以用,只是如果拆除了电池,需要把VBUS点上的5V电压飞线引到电池端上面,板子才可以通电工作。
板子背面的蓝牙模块需要拆除,因为占用了两个I2S端口。
板子正面飞线完成示例
板子背面飞线完成示例
JTAG连接示例
编译源码,并烧录
断电,将USB插入pos主板,不出意外可以得到图上所示的设备
到播放软件中选择此设备,设置16位格式,即可听到音乐。
源码(感谢正点原子ALIENTEK开源的例程): 商业用途就免了,一大波山寨正在靠近!
这是一个WAV文件,内部是0000-FFFF顺序增加的数据,懂得人自然懂做什么用,请不要用耳机听。在正常的使用下,本人声卡程序能做到比特级精确,任何最低端的逻辑分析仪都能观察CD音质的i2s数据流。欢迎各大强迫症人士下载使用。 感谢坛友买猪蹄帮忙写程序生成数据段。
|