STM32F4 USB Speaker代码分析

本文主要分析STM32F411搭配PCM5102的USB音箱项目的代码,涵盖HAL层、协议层和应用层。通过CubeMX配置生成的工程,涉及USB设备描述符、配置描述符、接口描述符和端点的详细解释,旨在作为个人备忘。
摘要由CSDN通过智能技术生成

主机:WIN10 64位

设备:STM32F411+PCM5102

STM32CubeMX版本:V6.0.1   

JAVA:JDK 11

--------------------------------------------------------

       写这篇文章主要是给自己备忘,因对USB协议规范没有系统的了解,可能有些地方理解不是很正确。

       配置CubeMX生成的工程项目,目录结构如下,主要划分为HAL层(包含了驱动层),协议层和应用层,

驱动层:stm32f4xx_ii_usb.c,提供USB硬件寄存器的配置

HAL层:stm32f4xx_hal_pcd.c,对驱动进行封装,给上层提供统一接口

协议层:usbd_core.c  usbd_ctlreq.c  usbd_ioreq.c,USB基础协议解析

              usbd_audio.c,audio class协议解析,提供功能接口

应用层:应用功能的实现

代码文件层次结构及调用关系:

设备描述符层次结构:

1、一个USB设备只有一个设备描述符和一个配置描述符,而接口描述符可以有多个

2、从上图可以看出usb speaker有两个接口描述符,I/F 0为音频控制接口,描述了一个输入终端IT,特征单元FU和一个输出终端OT;输入终端IT为音频流类型,是一个逻辑通道,数据来源于音频流接口;输出终端OT为speaker类型,即表明数据是输出到一个实际的speaker上面;特征单元FU描述了该音频流所支持的能力,如支持mute和调节volume。I/F 1为音频流接口,该接口通过描述符指定与IT进行关联,即该音频流为指定的IT提供数据。

3、音频控制接口I/F 0没有端点,所有控制信息都是通过默认端点0进行通讯

4、音频流接口I/F 1定义了两个setting,第一个为setting 0,没有任何端点,当USB枚举完成后,会默认使用这个setting;第二个为setting 1,有实际的物理端点,当电脑选择该USB Speaker作为音频输出时,会选择该setting。

配置描述符:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值