目录
链接快速定位
源码下载请参考链接:USB -- STM32-FS-USB-Device驱动代码简述(二)
USB -- STM32F103虚拟串口bulk传输讲解(三)
USB -- STM32F103自定义HID设备及HID上位机中断传输讲解(四)
USB -- STM32F103 U盘(MassStorage)SDIO接口SCSI协议Bulk传输讲解(五)
USB -- STM32F103 USB DFU设备固件升级(IAP)控制传输讲解(六)
USB -- STM32F103 USB AUDIO(音频)Speak同步传输(Out传输)讲解(七)
前沿
前面两节主要是对USB的基本概念做了简单讲解,学习USB的最本质目的还是要回到USB的应用方向,接下来的几章主要讲解USB的各类应用,包括:
- 虚拟串口(环回测试)-- bulk传输(USB -- STM32F103虚拟串口bulk传输讲解(三))
- 自定义HID -- 中断传输(USB -- STM32F103自定义HID设备及HID上位机中断传输讲解(四))
- U盘 -- bulk传输(USB -- STM32F103 U盘(MassStorage)SDIO接口SCSI协议Bulk传输讲解(五))
- 在线固件升级(DFU)-- 控制传输(USB -- STM32F103 USB DFU设备固件升级(IAP)控制传输讲解(六))
- 语音录制及播放 -- 同步Out传输(USB -- STM32F103 USB AUDIO(音频)Speak同步传输(Out传输)讲解(七))
- 语音录制及播放 -- 同步In传输(本章讲解)
- 照相机 -- 同步传输
- 复合设备 -- 中断+bulk传输
这里只讲怎么修改描述符和关键函数,具体的讲解可以查看:USB -- STM32F103 USB AUDIO(音频)Speak同步传输(Out传输)讲解(七)
我们这里使用《Audio_Speaker》例程进行修改。
1 描述符修改
usb_desc.h文件的描述符宏定义如下:
#define MICROPHONE_SIZ_DEVICE_DESC 18
#define MICROPHONE_SIZ_CONFIG_DESC 109
#define MICROPHONE_SIZ_INTERFACE_DESC_SIZE 9
#define MICROPHONE_SIZ_STRING_LANGID 0x04
#define MICROPHONE_SIZ_STRING_VENDOR 0x26
#define MICROPHONE_SIZ_STRING_PRODUCT 0x22
#define MICROPHONE_SIZ_STRING_SERIAL 0x1A
#define AUDIO_STANDARD_ENDPOINT_DESC_SIZE 0x09
#define AUDIO_STREAMING_ENDPOINT_DESC_SIZE 0x07
/* USB Descriptor Types */
#define USB_DEVICE_DESCRIPTOR_TYPE 0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
#define USB_STRING_DESCRIPTOR_TYPE 0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05
#define USB_DEVICE_CLASS_AUDIO 0x01
#define AUDIO_SUBCLASS_AUDIOCONTROL 0x01
#define AUDIO_SUBCLASS_AUDIOSTREAMING 0x02
#define AUDIO_PROTOCOL_UNDEFINED 0x00
#define AUDIO_STREAMING_GENERAL 0x01
#define AUDIO_STREAMING_FORMAT_TYPE 0x02
/* Audio Descriptor Types */
#define AUDIO_INTERFACE_DESCRIPTOR_TYPE 0x24
#define AUDIO_ENDPOINT_DESCRIPTOR_TYPE 0x25
/* Audio Control I