STM32
直播中

张虎豹

7年用户 1556经验值
私信 关注
[问答]

STM32接入PC后能枚举出来麦克风设备,开始录音后无数据是怎么回事?

使用STM32F4做USB 麦克风硬件: STM32F411 + MEMS数字麦克风(输出PDM数据)+ USB接口
工作流程:STM32作为USB Aduio Deice 与PC连接,并通过I2S采集MEMS数字麦克风PDM数据,然后调用PDM2PCM库转换为PCM数据,最后把PCM数据通过USB上传给PC实现PC录音
使用的STM32CubeMx生成初始化代码后默认是只有播放设备的,通过对usbd_audio.c和usbd_audio.h修改加入了麦克风设备
现在STM32接入PC后能枚举出来麦克风设备,但是开始录音后无数据,BUSHOUN数据长度一直是0,而且无法进入函数USBD_AUDIO_DataIn

回帖(1)

王玲

2024-7-5 17:27:28
根据您的描述,STM32F4作为USB音频设备与PC连接,通过I2S采集MEMS数字麦克风的PDM数据,然后使用PDM2PCM库将其转换为PCM数据,并通过USB上传给PC实现录音。现在的问题是在开始录音后无数据,BUSHOUN数据长度一直是0,且无法进入函数USBD_AUDIO_DataIn。以下是一些建议和可能的原因:

1. 检查硬件连接:确保STM32F4、MEMS数字麦克风和USB接口之间的连接正确无误。检查电源、地线和数据线是否连接正确。

2. 检查I2S配置:确保I2S配置正确,包括采样率、位宽、时钟设置等。如果I2S配置不正确,可能会导致无法正确采集MEMS麦克风的PDM数据。

3. 检查PDM2PCM库:确保PDM2PCM库正确地将PDM数据转换为PCM数据。如果转换过程中出现问题,可能会导致数据丢失或错误。

4. 检查USBD_AUDIO_DataIn函数:确保USBD_AUDIO_DataIn函数能够正确处理PCM数据。如果函数实现有误,可能会导致数据无法正确上传给PC。

5. 检查PC端设置:确保PC端的录音软件能够正确识别并使用STM32F4作为麦克风设备。检查录音软件的设置,确保它能够接收并处理来自STM32F4的音频数据。

6. 调试和日志:在STM32F4的代码中添加调试信息和日志输出,以便更好地了解程序在运行过程中的状态。这可以帮助您确定问题出在哪个环节。

7. 检查中断和DMA:确保STM32F4的中断和DMA设置正确,以便在采集到音频数据后能够及时处理并上传给PC。如果中断或DMA设置不正确,可能会导致数据丢失或延迟。

8. 检查固件和库文件:确保您使用的STM32CubeMx生成的初始化代码、PDM2PCM库和其他相关库文件是最新版本,以避免因版本问题导致的兼容性问题。

9. 考虑硬件故障:如果以上检查都没有问题,但问题仍然存在,可能是硬件故障。您可以尝试更换MEMS数字麦克风或STM32F4芯片,看看问题是否得到解决。

通过以上步骤,您应该能够找到问题所在并解决录音无数据的问题。如果问题仍然存在,请继续深入调试和分析,以便找到解决方案。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分