记一次USB声卡设计开发
目前笔者从事音频开发工作,借助公司硬件资源,给自己做了个迷你声卡,接下来让笔者介绍一下相关开发过程。
USB声卡,这里借助度娘的解释:USB声卡是插在USB口的声卡,通过USB总线与计算机系统链接。。。。。。
那么怎么DIY声卡需要些什么硬件资源呢?
1.具有USB和音频相关外设(I2S/TDM等等)的MCU 2.AD/DA芯片,也叫Codec(编码解码器) 3.输出输入接口及相关模电电路
如下简图:
笔者这里直接选用的MCU资源为NXP的RT1052,当然MCU大可不必选这么好的,选用STM32F1系列基本就可以,笔者主要为了可玩性,加一些算法效果所以选择了这款比较火的跨界处理器。Codec的选择根据自己想做到什么级别的吧,市面上的几块十几块几十块的都可以,我们主要需要了解的一些基本参数:动态范围,信噪比等等。另外模拟运放部分也很关键,总之音质的影响是方方面面的,如:USB Audio 同步问题,Codec选型配置问题,运放设计问题,电源问题都会影响声卡的参数。
如下实物图:
硬件配套全了,接下来开搞软件了,核心部分当然是USB Audio啦。这里笔者采用比较古老的Audio1.0标准开发的,主要原因是免驱,开发难度不会很大。对于USB Audio 的开发这里说比较关键的几点:
1.设备接口数量:如果要实现扬声器和录音功能,那么接口数量为3个分别为: Control+Recoder+Speaker
2.音频流同步问题(缓冲区的处理方案,反馈端点的使用策略)具体可以参考我之前写的一个博客
USB Audio 音频流同步问题_L_17的博客-CSDN博客
3.采样率,采样精度,格式等等
4.每次修改usb audio配置后必须卸载之前的驱动,让PC重新配置相关驱动
下面分享其关键的配置描述符:
uint8_t g_UsbDeviceConfigurationDescriptor[] =
{0x09, 0x02, 0xD4, 0x00, 0x03, 0x01, 0x00, 0xC0, USB_DEVICE_MAX_POWER, //ctrl0x09, 0x04, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x0A, 0x24, 0x01, 0x00, 0x01, 0x48, 0x00, 0x02, 0x01, 0x02, 0x0C, 0x24, 0x02, 0x01, 0x04, 0x02, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x24, 0x06, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x00, 0x09, 0x24, 0x03, 0x03, 0x01, 0x01, 0x00, 0x02, 0x00, 0x0C, 0x24, 0x02, 0x04, 0x01, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x24, 0x06, 0x05, 0x04, 0x01, 0x01, 0x02, 0x02, 0x00, 0x09, 0x24, 0x03, 0x06, 0x02, 0x03, 0x00, 0x05, 0x00, 0x09, 0x05, 0x81, 0x03, 0x08, 0x00, 0x08, 0x00, 0x00, //Recoder0x09, 0x04, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x09, 0x04, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, 0x07, 0x24, 0x01, 0x03, 0x00, 0x01, 0x00, 0x0B, 0x24, 0x02, 0x01, 0x02, 0x03, 0x18, 0x01, 0x44, 0xAC, 0x00, 0x09, 0x05, 0x83, 0x25, 0x0E, 0x01, 0x04, 0x00, 0x00,0x07, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00, //Speaker0x09, 0x04, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,0x09, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x07, 0x24, 0x01, 0x04, 0x01, 0x01, 0x00,0x0B, 0x24, 0x02, 0x01, 0x02, 0x03, 0x18, 0x01, 0x44, 0xAC, 0x00, 0x09, 0x05, 0x02, 0x05, 0x66, 0x01, 0x04, 0x00, 0x82, 0x07, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0x05, 0x82, 0x15, 0x04, 0x00, 0x04, 0x05, 0x00,
};
戴上我的耳机试试,呦有点意思!!!大功告成
记一次USB声卡设计开发相关推荐
- USB 声卡 (转载)
引言 近年来USB产品层出不穷,USB音频类在USB开发者论坛的努力下,成为一种标准的规范,USB声卡也开始在市场上悄然出现.因为USB声卡内置了DAC和有源功放,音频数据以数字方式进入USB ...
- 在树莓派上使用自制的USB声卡
若想知道USB声卡的制作过程,请看本人的另一篇博文:[基于PCM2912a的USB声卡设计] 基础条件: raspbian系统,我用的版本是2014-12-24-wheezy-raspbian.img ...
- 基于STM32的USB CAN收发器开发与设计
基于STM32的USB CAN收发器开发与设计 一.文章适合人群: 小型化企业,节约设备的购买投入: 有特殊功能需求的个人或企业(例如离线升级,数据抓包盒等): 技术开发爱好者. 二.USB CAN开 ...
- 高品质USB声卡/音频芯片SSS1700|SSS1700设计96 KHz 24位采样率USB耳机麦克风方案|SSS1700中文设计方案讲解
高品质USB声卡/音频芯片SSS1700|SSS1700设计96 KHz 24位采样率USB耳机麦克风方案|SSS1700中文设计方案讲解 台湾鑫创在2021年新推的一款SSS1700,是一款高品质U ...
- ADI Blackfin DSP处理器-BF533的开发详解25:USB接口设计(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 跟网口一样,USB这 ...
- Hi3516A开发--USB PCB 设计建议
USB PCB 设计建议 为了保证良好的信号质量, USB 2.0 端口数据信号线按照差分线方式走线.为了达到USB 2.0 高速 480MHz 的速度要求,建议 PCB 布线设计采用以下原则: 差分 ...
- USB开发基础:USB设备的开发流程
USB设备的开发一般包括主机端(上位机)驱动程序的开发(如果您的USB设备符合某一标准设备类且主机端已经提供了此类设备的驱动程序的话,则可以省掉此步骤)和USB设备端驱动程序的开发,有时还可能包括主机 ...
- 蚂蚁区块链投票案例(二)---投票合约设计开发
文章目录 摘要 背景 案例场景 用例分析 系统管理员注册 添加小区.添加房屋 编辑房屋 发起投票 统计投票 业主注册 业主实名认证 客房关系认证 投票 合约设计 设计原则 合约设计 合约开发 命名规则 ...
- USB声卡噪音问题,USB声卡中文名设置,基于STM32F411
目录 1.USB声卡噪音问题 1.1USB声卡噪音问题解决 1.2USB消除噪声测试 2.USB声卡中文名设置 2.1USB想要中文名,咋整 3.晒晒板子 1.USB声卡噪音问题 使用STM32F41 ...
最新文章
- 【UML建模】机房中的UML图
- Swift 圆环进度条
- Java双刃剑之Unsafe类详解
- golang-china
- Spring boot默认日志配置
- php5.6.16,OSX 10.11 中重新编译PHP5.6.16问题
- Java AOP研究之How is beforeMethodAdvice called
- 【算法系列之二】反波兰式
- Java数组在内存中的分配
- java 解析tgw_给Java新手的一些建议——Java知识点归纳(Java基础部分)
- [高级操作系统课程] 各大名校 ppt,pdf 课件整理(course materials)
- 基于VHDL语言的多人表决器的设计
- 使用 Lvs + Nginx 集群搭建高并发架构
- dfuse API 添加新分类查询,为您提供更多细化的搜索
- CSS制作的32种图形效果 梯形 | 三角 | 椭圆 | 平行四边形 | 菱形 | 四分之一圆 | 旗帜
- ROS2+nav2+激光雷达导航(上)
- 兆骑科创高层次人才引进双创平台,双创服务,赛事路演
- Flash Builder4.7极其简单破解方法-三步搞定
- python 小说分析_Python自然语言用金庸的武侠小说做分析和处理
- C++实现一个有理数类,包括大小比较,有理数的加减乘除。测试你的类。