未知usb设备(设定地址失败)_正点原子【STM32-F407探索者】第五十七章 USB 声卡(Slave)实验...

本文档介绍了如何利用STM32F4开发板上的WM8978 CODEC芯片制作USB声卡。作者详细讲解了从USB设备(设定地址失败)问题的解决到USB声卡硬件设计、软件设计的全过程,包括配置WM8978,使用USB同步传输音频数据,以及如何通过STM32F4的IIS接口播放音乐。通过建立类似FIFO的缓冲区来处理USB传输与STM32 IIS播放速度的差异,确保音频播放质量。
摘要由CSDN通过智能技术生成

1)资料下载:点击资料即可下载

2)对正点原子Linux感兴趣的同学可以加群讨论:935446741

3)关注正点原子公众号,获取最新资料更新

e43ab076512c9be36d665c3aee75ac58.png

上一章我们向大家介绍了如何利用 STM32F4 的 USB 接口来做一个 USB 读卡器,本章我们

将利用 STM32F4 的 USB 来做一个声卡。本章分为如下几个部分:

57.1 USB 声卡简介

57.2 硬件设计

57.3 软件设计

57.4 下载验证

57.1 USB 声卡简介

ALIENTEK 探索者 STM32F4 开发板板载了一颗高性能 CODEC 芯片:WM8978,我们可

以利用 STM32F4 的 IIS,控制 WM8978 播放音乐,同样,如果结合 STM32F4 的 USB 功

能,就 可以实现一个 USB 声卡。

同上一章一样,我们直接移植官方的 USB AUDIO 例程,官方例程路径:8,STM32 参考

资料→STM32 USB 学习资料→STM32_USB-Host-Device_Lib_V2.1.0→Project→USB_De

vice_Examples→AUDIO,该例程采用 USB 同步传输来传输音频数据流并且支持某些控制命

令 (比如静音控制),例程仅支持 USB FS 模式(不支持 HS),同时例程不需要特殊的驱动支

持, 大多数操作系统直接就可以识别。

57.2 硬件设计

本节实验功能简介:开机的时候先显示一些提示信息,之后开始 USB 配置,在配置成功

之后就可以在电脑上发现多出一个 USB 声卡。我们用 DS1 来指示 USB 是否连接成功,并在

液晶上显示 USB 连接状况,如果成功连接,我们可以将耳机插入开发板的 PHONE 端口(或

者喇叭接 P1(SPK)端子也行),听到来自电脑的音频信号。同样我们还是用 DS0 来指示程

序正在运行。

所要用到的硬件资源如下:

1) 指示灯 DS0 、DS1

2) 串口

3) TFTLCD 模块

4) USB SLAVE 接口

5) WM8978

这几个部分,在之前的实例中都已经介绍过了,我们在此就不多说了。这里再次提醒大家,

P11 的连接,要通过跳线帽连接 PA11 和 D-以及 PA12 和 D+。

57.3 软件设计

本章,我们在第四十八章实验 (实验 43 )的基础上修改,先打开实验 43 的工程,在

HARDWARE 文件夹所在文件夹下新建一个 USB 的文件夹,同上一章一样,对照官方

AUDIO 例子,将相关文件拷贝到 USB 文件夹下。

然后,我们在工程里面去掉一些不必要的代码,并添加 USB 相关代码,最终得到如图 57.3.1

所示的工程:

e1a3e5ac960e8a682907565a101a60bb.png
图 57.3.1 USB 声卡工程截图

可以看到,USB 部分代码,同上一章的在结构上是一模一样的,只是.c 文件稍微有些变化。

同样,我们移植需要修改的代码,就是 USB_APP 里面的这四个.c 文件了。

其中 usb_bsp.c 和 usbd_usr.c 的代码,和上一章基本一样,可以用上一章的代码直接替换即

可正常使用。

usb_desc.c 代码,同上一章不一样,上一章描述符是大容量存储设备,本章变成了 USB 声

卡了,所以直接用 ST 官方的就行。

最后 stm324xg_usb_audio_codec.c,这里面的代码,是重点要修改的,该文件是配合 USB

声卡的 CS43L22 底层驱动相关代码,官方 STM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值