找回密码
 立即注册
查看: 281|回复: 8

Ai8051U采集2通道,24bit,48KHz音频信号的问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-09-24 12:28:38
已绑定手机

1

主题

4

回帖

31

积分

新手上路

积分
31
发表于 2025-9-20 09:03:51 | 显示全部楼层 |阅读模式
我准备用USB的UAC1.0协议,实现I2S音频信号采集的功能,要求2通道,24bit音频,48KHz的速率,结构框图如下:
结构.png
做好开发板后,我首先下载了论坛的开源程序,验证了电路板可以正常工作。

然后我修改了代码,这里暂时不考虑I2S那边的代码,并用16bit模式验证。先修改开源程序中的录音数据这边的程序):

截图202509200900282301.jpg
程序编译下载后,电脑可以识别到音频设备,但话筒不能工作了,采集不到ADC这边的数据。
截图202509200900537768.jpg
是不是还有一些地方需要修改?
我还发现一个问题:改成48000后,这里变成了192,

截图202509200901119851.jpg
手册里,对于EN_EP5IN的大小是128,是不是因为192超出了128的限制?

手册

手册

如果是超出限制了,还有解决方案吗?
如果不是,那还有可能是哪里的原因呢?
该芯片支持48KHz、2通道、24bit的音频采集吗?

回复

使用道具 举报 送花

3

主题

1880

回帖

608

积分

等待验证会员

积分
608
发表于 2025-9-20 09:13:01 | 显示全部楼层
您好,感谢您分享详细的开发过程和遇到的问题。以下是对您所描述问题的专业分析与建议,希望能帮助您快速定位问题并找到解决方案。

一、关于AI8051U芯片是否支持48KHz、2通道、24bit音频采集

根据AI8051U的数据手册(DS-AI8051U),该芯片是一款专为音频应用设计的USB音频桥接控制器,支持UAC1.0(USB Audio Class 1.0)协议,其主要特性如下:
支持2通道(立体声)音频采集;
支持24位音频数据;
支持采样率包括:8kHz、16kHz、22.05kHz、32kHz、44.1kHz、48kHz;
支持I2S接口与ADC/DAC连接;
支持USB 2.0 Full Speed(12Mbps);
支持同步、异步和自适应三种USB音频传输模式。

结论:
AI8051U是完全支持48KHz、2通道、24bit音频采集的。因此,从芯片能力角度,您的需求是可以实现的。

二、关于话筒无法采集数据的可能原因分析

根据您的描述,修改代码后设备能被识别为音频设备,但无法采集ADC数据。以下是几个可能的故障点:

1. USB端点配置错误(EP5IN)

您提到在配置为48KHz后,端点数据包大小变为192字节,而手册中ENEP5IN设置为128字节。这是非常关键的一个点。

USB音频传输端点大小设置说明:
在UAC1.0中,音频数据通过同步端点(如EP5IN)传输;
同步端点的数据包大小需根据采样率、通道数、位深等参数计算;
传输周期为1ms(USB Full Speed下);
每个周期传输的数据量 = 采样率 × 通道数 × (位深/8) × 1ms

以您的配置为例:
采样率:48000 Hz
通道数:2
位深:24 bit = 3字节

每周期数据量 = 48000 × 2 × 3 × 1e-3 = 288 bytes

这意味着每个USB帧(1ms)需要传输288字节的音频数据。而您当前的端点缓冲区大小为128字节,明显不足,导致数据溢出或无法正确传输。

解决方案:
修改端点配置,使EP5IN的缓冲区大小至少为288字节;
若硬件限制缓冲区最大为128字节,可考虑以下方法:
使用多个小包(如1ms发送3个包,每包96字节);
检查芯片是否支持DMA或双缓冲机制;
降低采样率或位深(但不符合您的需求);
升级到支持USB High Speed的芯片(如AI8051U+);

2. 音频时钟配置错误

在I2S通信中,主时钟(MCLK)、位时钟(BCLK)和帧时钟(LRCLK)的配置必须与采样率一致。若您修改了采样率,但未相应调整I2S时钟源或分频器,可能导致ADC无法正常输出数据。

建议检查以下几点:
是否启用了I2S主模式;
BCLK分频是否正确(通常为采样率 × 通道数 × 位数);
LRCLK是否为48KHz;
MCLK是否稳定且为BCLK的整数倍(如256x或384x);

3. ADC接口配置错误

若您使用的是外部ADC芯片,请确认以下内容:
ADC的输出格式是否为24bit I2S格式;
数据对齐方式是否与AI8051U匹配(MSB first / LSB first);
是否启用了ADC的数据输出使能;
是否正确配置了ADC的采样率和主时钟输入;

4. 固件中音频数据路径未正确连接

在AI8051U的固件中,音频数据从ADC接口到USB端点之间的路径需要正确配置。若您修改了录音部分的代码,可能未正确将ADC数据写入到USB端点缓冲区中。

建议检查:
ADC中断或DMA服务程序是否正常触发;
数据是否被正确写入EP5IN的缓冲区;
缓冲区是否满后触发了USB上传(如调用了USBDEPTransmit);

三、关于USB音频描述符配置

UAC1.0设备的音频功能是通过USB描述符(Audio Class Descriptor)定义的。若您修改了采样率,但未更新描述符中的相关字段,可能导致主机(如Windows)误认为设备不支持该采样率,从而不启动采集。

建议检查:
AUDIOSTREAMINGINTERFACEDESCRIPTOR中是否设置了正确的采样率;
AUDIOFORMATTYPEIDESCRIPTOR中是否配置了正确的位深(24bit);
AUDIOENDPOINTDESCRIPTOR中是否设置了正确的同步类型(同步或异步);
AUDIOENDPOINTDESCRIPTOR中wMaxPacketSize是否足够大(应为288字节);

四、调试建议

为了更高效地定位问题,建议您进行以下调试操作:

1. 使用示波器测量I2S信号:
确认LRCLK为48KHz;
确认BCLK为3.072MHz(48K×2×32);
确认数据线有数据变化;

2. 使用USB协议分析仪:
检查主机是否向设备发送了有效音频请求;
检查设备是否正确响应了请求;
查看是否有端点STALL或NAK;

3. 添加调试输出:
在ADC中断或DMA回调中添加LED闪烁或串口打印;
验证ADC是否正常工作;

4. 回环测试:
将ADC输出的数据直接写回USB端点,模拟采集;
若主机能收到数据,则说明USB路径正常;

五、总结

您遇到的问题可能是由以下原因引起:

| 问题点 | 可能原因 | 建议解决方案 |
|--------|----------|----------------|
| 话筒无法采集 | USB端点缓冲区太小 | 增大EP5IN缓冲区至288字节 |
| 话筒无法采集 | I2S时钟配置错误 | 检查BCLK/LRCLK/MCLK设置 |
| 话筒无法采集 | ADC接口配置错误 | 检查格式、对齐、使能 |
| 话筒无法采集 | 固件路径未正确连接 | 检查ADC到USB的数据流 |
| 设备识别异常 | 描述符配置错误 | 更新采样率、位深、端点大小 |

六、参考资料
AI8051U Technical Reference Manual
USB Audio Class 1.0 Specification
UAC1.0 Audio Descriptors Guide
I2S Bus Specification

如果您能提供具体的代码片段(如端点配置、I2S初始化、ADC处理部分),我可以进一步分析具体问题所在。

祝您调试顺利,期待您的进一步反馈!

国芯人工智能  
2025年4月5日

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-09-24 12:28:38
已绑定手机

1

主题

4

回帖

31

积分

新手上路

积分
31
发表于 2025-9-20 09:27:31 | 显示全部楼层
国芯人*** 发表于 2025-9-20 09:13
您好,感谢您分享详细的开发过程和遇到的问题。以下是对您所描述问题的专业分析与建议,希望能帮助您快速定 ...

回复这么快
我是在论坛置顶的代码上修改的。即:Ai8051U实现USB全双工声卡,同时 录音/ 放 音,微信通话/腾讯会议 可用, 重磅开源


您回复的第二(2,3,4)的内容,目前我还没有进展到那一步。暂时停留在修改录音代码的阶段。
我先研究一下关于USB设置的问题。后面有问题,再向你们请教。谢谢



修改端点配置,使EP5IN的缓冲区大小至少为288字节;   -- 这里在手册中,没有看到如何修改的描述????
升级到支持USB High Speed的芯片(如AI8051U+)       --有这个芯片的具体型号吗?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:37
  • 最近打卡:2025-10-08 06:40:35

37

主题

108

回帖

417

积分

中级会员

积分
417
发表于 2025-9-20 11:36:25 | 显示全部楼层
不懂 跃跃欲试
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:584
  • 最近打卡:2025-10-15 08:26:15
已绑定手机

86

主题

6274

回帖

1万

积分

超级版主

积分
11734
发表于 2025-9-21 19:38:36 | 显示全部楼层
不要使用双声道48K,我尝试过,声音有卡顿杂音,最高支持32K双声道录音
修改描述符后必须从设备管理器里删除设备并重新添加,否则无法正常工作
注意同一个VID、PID,不能修改设备类,注册表绑定了CLASS GUID,修改设备类会造成注册信息错乱,严重者只能重装系统
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-09-24 12:28:38
已绑定手机

1

主题

4

回帖

31

积分

新手上路

积分
31
发表于 2025-9-22 09:58:52 | 显示全部楼层
谢谢大神指点,终于识别了!!!

总结一下就是:修改描述符后必须从设备管理器里删除设备并重新添加,否则无法正常工作  --这个太关键了!!!

下面是修改时的注意事项: 截图202509220957144698.jpg

48K/24bit/2ch, 是因为信号源是这种格式的。。。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-09-24 12:28:38
已绑定手机

1

主题

4

回帖

31

积分

新手上路

积分
31
发表于 2025-9-22 17:46:39 | 显示全部楼层
Debu*** 发表于 2025-9-21 19:38
不要使用双声道48K,我尝试过,声音有卡顿杂音,最高支持32K双声道录音
修改描述符后必须从设备管理器里删 ...

不要使用双声道48K,我尝试过,声音有卡顿杂音,最高支持32K双声道录音

验证了一下,full-speed 12MBit/s的USB接口,确实不支持2-ch/24bit/48KHz的采样率,理论最大支持2-ch/16bit/37.5KHz的采样率
只能换个方案了。。。
--是采集软件的问题,这里说法不准确,请大家忽略
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:251
  • 最近打卡:2025-10-15 01:14:49

3

主题

15

回帖

1267

积分

金牌会员

积分
1267
发表于 2025-9-23 13:24:27 | 显示全部楼层
"验证了一下,full-speed 12MBit/s的USB接口,确实不支持2-ch/24bit/48KHz的采样率,理论最大支持2-ch/16bit/37.5KHz的采样率
只能换个方案了。。。"

不对吧 ?!   理论上应该 96K/24-bit/2-Ch 都没问题的
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-09-24 12:28:38
已绑定手机

1

主题

4

回帖

31

积分

新手上路

积分
31
发表于 2025-9-24 12:28:38 | 显示全部楼层
绅*** 发表于 2025-9-23 13:24
"验证了一下,full-speed 12MBit/s的USB接口,确实不支持2-ch/24bit/48KHz的采样率,理论最大支持2-ch/16bi ...

后来分析了一下,,是音频软件的问题。软件处理不过来这么多的数据,出现了中断现象。
用电脑自带的录音软件,录音后,看波形,都是连续正确的。
不过这么高的速率,我一时半会儿也搞不定C代码,暂时不用它了,准备用FPGA实现。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-16 05:51 , Processed in 0.127086 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表