STM32
直播中

贾熹

8年用户 1687经验值
私信 关注
[问答]

STM32F407作USB host驱动声卡,USB就会出错的原因?

我用STM32F407 作USB host,  配置为FS。用它接声卡。如果STM32F407 单向给 声卡传送音频,输出声音正常。或者 407单向接收声卡的音频,工作也正常。但是同时发送和接收声音(即同时作同步IN和OUT),USB就会出错,具体出错中断信号为 未完成周期性传输中断  或  Tx FIFO 空中断。
因为ST 对USB host 提供的 audio class例程只有stream out,  没有stream in。不知道是不是407对于同步双向传输处理速度不够造成?

回帖(1)

贾飞小

2024-7-4 16:45:52
STM32F407作为USB host驱动声卡时,如果出现同时发送和接收声音(即同时作同步IN和OUT)时USB出错,可能有以下几个原因:

1. **资源限制**:STM32F407的USB控制器可能在处理同步IN和OUT时,由于资源限制(如DMA通道、FIFO大小等)导致无法同时处理两个方向的数据传输。

2. **中断处理**:STM32F407的中断处理可能不足以应对同时进行的IN和OUT操作。如果中断处理不当,可能会导致数据传输中断或者FIFO溢出/空中断。

3. **驱动程序问题**:STM32F407的USB host驱动程序可能存在一些问题,导致在处理同步IN和OUT时出现问题。这可能需要检查驱动程序的实现,看看是否有需要优化的地方。

4. **USB协议栈问题**:STM32F407使用的USB协议栈可能在处理音频类设备时存在一些问题,特别是在处理同步IN和OUT时。可以尝试查找是否有更新的协议栈或者是否有其他开发者遇到类似问题并提供了解决方案。

5. **硬件问题**:STM32F407的硬件可能在处理高速数据传输时存在一些问题,导致在同步IN和OUT时出现问题。可以尝试检查硬件连接是否稳定,以及是否有其他硬件故障。

为了解决这个问题,你可以尝试以下方法:

1. **优化中断处理**:检查STM32F407的中断处理代码,确保在处理IN和OUT操作时能够正确地处理中断。

2. **调整DMA设置**:检查STM32F407的DMA设置,确保在处理同步IN和OUT时有足够的DMA通道和FIFO空间。

3. **查找更新的驱动程序或协议栈**:查找是否有更新的STM32F407 USB host驱动程序或USB协议栈,看看是否有针对音频类设备的优化。

4. **分时处理**:如果可能,尝试将IN和OUT操作分时处理,以减轻STM32F407的负担。

5. **寻求社区帮助**:在STM32F407的开发者社区中寻求帮助,看看是否有其他开发者遇到类似问题并提供了解决方案。

6. **硬件检查**:检查STM32F407的硬件连接和稳定性,确保没有硬件故障影响数据传输。
举报

更多回帖

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