add english readme

This commit is contained in:
sakumisu
2021-12-12 15:21:56 +08:00
parent a8d919fe4d
commit 0d208f350e
5 changed files with 164 additions and 464 deletions

View File

@@ -1,22 +1,10 @@
# USB Stack
USB Stack 是一个小而美的、可移植性高的、用于嵌入式 MCU 的 USB 主从协议栈。
[中文版](./README_zh.md)
## USB 参考手册
USB Stack is a tiny, beautiful and portable USB host and device stack for embedded system.
- USB2.0规格书: <https://www.usb.org/document-library/usb-20-specification>
- CDC: <https://www.usb.org/document-library/class-definitions-communication-devices-12>
- MSC: <https://www.usb.org/document-library/mass-storage-class-specification-overview-14>
<https://www.usb.org/document-library/mass-storage-bulk-only-10>
- HID: <https://www.usb.org/document-library/device-class-definition-hid-111>
<https://www.usb.org/document-library/hid-usage-tables-122>
- AUDIO: <https://www.usb.org/document-library/audiovideo-device-class-v10-spec-and-adopters-agreement>
<https://www.usb.org/document-library/audio-data-formats-10>
- VIDEO: <https://www.usb.org/document-library/video-class-v11-document-set>
- TMC: <https://www.usb.org/document-library/test-measurement-class-specification>
- DFU: <https://www.st.com/resource/zh/application_note/cd00264379-usb-dfu-protocol-used-in-the-stm32-bootloader-stmicroelectronics.pdf>
## USB Stack 目录结构
## USB Stack Directoy Structure
```
.
@@ -42,47 +30,47 @@ USB Stack 是一个小而美的、可移植性高的、用于嵌入式 MCU 的 U
├── bouffalolab
│ └── bl702
├── ch32
├── dw2
├── fsdev
├── mm32
├── stm32
├── synopsys
└── template
```
| 目录名 | 描述 |
|:-------------:|:------------------------------:|
|class | usb class 类主从驱动 |
|common | usb spec 定义和一些常用函数 |
|core | usb 主从核心实现 |
|demo | 示例 |
|docs | 文档 |
|packet capture | 抓包文件(需要使用力科软件打开)|
|port | usb 主从需要实现的 porting接口 |
| Directory | Description |
|:-------------:|:---------------------------:|
|class | usb class driver |
|common | usb spec macros and utils |
|core | usb core implementation |
|demo | different chip demo |
|docs | doc for guiding |
|packet capture | packet caputre file |
|port | usb dcd and hcd porting |
## USB Device 协议栈简介
## USB Device Stack Overview
USB Device 协议栈对标准设备请求、CLASS 请求、VENDOR 请求以及 custom 特殊请求规范了一套统一的函数框架,采用面向对象和链表的方式,能够使得用户快速上手复合设备,不用管底层的逻辑。同时,规范了一套标准的 dcd porting 接口,用于适配不同的 USB IP达到面向 ip 编程
USB Device Stack provides a unified framework of functions for standard device requests, CLASS requests, VENDOR requests and custom special requestsThe object-oriented and chained approach allows the user to quickly get started with composite devices without having to worry about the underlying logic. At the same time, a standard dcd porting interface has been standardised for adapting different USB IPs to achieve ip-oriented programming.
USB Device 协议栈的代码实现过程参考 <https://www.bilibili.com/video/BV1Ef4y1t73d> 。
How USB Device Stack is implemented, this video will tell you: <https://www.bilibili.com/video/BV1Ef4y1t73d> 。
USB Device 协议栈当前实现以下功能
USB Device Stack has the following functions
- 支持 USB2.0 全速和高速设备
- 支持端点中断注册功能porting 给用户自己处理中断里的数据
- 支持复合设备
- 支持 Communication Class (CDC)
- 支持 Human Interface Device (HID)
- 支持 Custom human Interface Device (HID)
- 支持 Mass Storage Class (MSC)
- 支持 USB VIDEO CLASS (UVC)
- 支持 USB AUDIO CLASS (UAC)
- 支持 Device Firmware Upgrade CLASS (DFU)
- 支持 USB MIDI CLASS (MIDI)
- 支持 Test and Measurement CLASS (TMC)
- 支持 Vendor 类 class
- 支持 WINUSB1.0、WINUSB2.0
- Support USB2.0 full and high speed
- Support endpoint irq callback register by users, let users do whatever they wants in endpoint irq callback.
- Support Composite class
- Support Communication Class (CDC)
- Support Human Interface Device (HID)
- Support Custom human Interface Device (HID)
- Support Mass Storage Class (MSC)
- Support USB VIDEO CLASS (UVC)
- Support USB AUDIO CLASS (UAC)
- Support Device Firmware Upgrade CLASS (DFU)
- Support USB MIDI CLASS (MIDI)
- Support Test and Measurement CLASS (TMC)
- Support Vendor 类 class
- Support WINUSB1.0、WINUSB2.0
USB Device 协议栈资源占用说明
USB Device Stack resource usage
| file | FLASH (Byte) | RAM (Byte) |
|:-----------:|:--------------:|:------------:|
@@ -93,19 +81,32 @@ USB Device 协议栈资源占用说明:
|usbd_audio.c | 438 | 14 |
|usbd_video.c | 402 | 4 |
## USB Host 协议栈简介
## USB Host Stack Overview
waiting....
## USB Device API
更详细的设备协议栈 API 请参考: [USB Device API](docs/usb_device.md)
More of USB Device API reference, please visit : [USB Device API](docs/usb_device.md)
## USB Host API
更详细的主机协议栈 API 请参考: [USB Host API](docs/usb_host.md)
More of USB Host API reference, please visit: [USB Host API](docs/usb_host.md)
## RT-Thread 软件包使用
## How To Use In RT-Thread package
如何在 RT-Thread OS 中使用软件包,请参考:[USB Stack 在 RT-Thread package 中的使用](docs/rt-thread_zh.md)
How to use in RT-Thread package, please visit[RT-Thread package Userguide with usb stack](docs/rt-thread.md)
## USB Reference Manual
- USB2.0 spec: <https://www.usb.org/document-library/usb-20-specification>
- CDC: <https://www.usb.org/document-library/class-definitions-communication-devices-12>
- MSC: <https://www.usb.org/document-library/mass-storage-class-specification-overview-14>
<https://www.usb.org/document-library/mass-storage-bulk-only-10>
- HID: <https://www.usb.org/document-library/device-class-definition-hid-111>
<https://www.usb.org/document-library/hid-usage-tables-122>
- AUDIO: <https://www.usb.org/document-library/audiovideo-device-class-v10-spec-and-adopters-agreement>
<https://www.usb.org/document-library/audio-data-formats-10>
- VIDEO: <https://www.usb.org/document-library/video-class-v11-document-set>
- TMC: <https://www.usb.org/document-library/test-measurement-class-specification>
- DFU: <https://www.st.com/resource/zh/application_note/cd00264379-usb-dfu-protocol-used-in-the-stm32-bootloader-stmicroelectronics.pdf>

View File

@@ -1,411 +0,0 @@
USB Stack
=======================
USB Stack 是一个小而美的、可移植性高的、用于嵌入式 MCU 的 USB 主从协议栈。
USB 参考手册
-------------------------------
- USB2.0规格书: `<https://www.usb.org/document-library/usb-20-specification>`_
- CDC: `<https://www.usb.org/document-library/class-definitions-communication-devices-12>`_
- MSC: `<https://www.usb.org/document-library/mass-storage-class-specification-overview-14>`_
`<https://www.usb.org/document-library/mass-storage-bulk-only-10>`_
- HID: `<https://www.usb.org/document-library/device-class-definition-hid-111>`_
`<https://www.usb.org/document-library/hid-usage-tables-122>`_
- AUDIO: `<https://www.usb.org/document-library/audiovideo-device-class-v10-spec-and-adopters-agreement>`_
`<https://www.usb.org/document-library/audio-data-formats-10>`_
- VIDEO: `<https://www.usb.org/document-library/video-class-v11-document-set>`_
- TMC: `<https://www.usb.org/document-library/test-measurement-class-specification>`_
- DFU: `<https://www.st.com/resource/zh/application_note/cd00264379-usb-dfu-protocol-used-in-the-stm32-bootloader-stmicroelectronics.pdf>`_
USB Device 协议栈简介
-------------------------------
USB Device 协议栈对标准设备请求、CLASS 请求、VENDOR 请求以及 custom 特殊请求规范了一套统一的函数框架,采用面向对象和链表的方式,能够使得用户快速上手复合设备,不用管底层的逻辑。同时,规范了一套标准的 dcd porting 接口,用于适配不通的 USB IP达到面向 ip 编程。
USB Device 协议栈的代码实现过程参考 `<https://www.bilibili.com/video/BV1Ef4y1t73d>`_
USB Device 协议栈当前实现以下功能:
- 支持 USB2.0 全速和高速设备
- 支持端点中断注册功能porting 给用户自己处理中断里的数据
- 支持复合设备
- 支持 Communication Class (CDC)
- 支持 Human Interface Device (HID)
- 支持 Custom human Interface Device (HID)
- 支持 Mass Storage Class (MSC)
- 支持 USB VIDEO CLASS (UVC)
- 支持 USB AUDIO CLASS (UAC)
- 支持 Device Firmware Upgrade CLASS (DFU)
- 支持 USB MIDI CLASS (MIDI)
- 支持 Test and Measurement CLASS (TMC)
- 支持 Vendor 类 class
- 支持 WINUSB1.0、WINUSB2.0
USB Device 协议栈资源占用说明:
.. list-table::
:widths: 15 10 10
:header-rows: 1
* - file
- FLASH (Byte)
- RAM (Byte)
* - usbd_core.c
- 3045
- 373
* - usbd_cdc.c
- 302
- 20
* - usbd_msc.c
- 2452
- 132
* - usbd_hid.c
- 784
- 201
* - usbd_audio.c
- 438
- 14
* - usbd_video.c
- 402
- 4
USB Host 协议栈简介
-------------------------------
waiting....
USB Device Controller Porting 接口
------------------------------------
USB Device controller porting 接口在 ``usb_stack/common/usb_dc.h`` 文件中声明,用户根据自己的 MCU 实现以下接口:
- ``usbd_set_address``
- ``usbd_ep_open``
- ``usbd_ep_close``
- ``usbd_ep_set_stall``
- ``usbd_ep_clear_stall``
- ``usbd_ep_is_stalled``
- ``usbd_ep_write``
- ``usbd_ep_read``
USB Device Controller 其他接口
--------------------------------
用户需要实现 usb device controller 相关寄存器初始化的函数(可以命名为 ``usb_dc_init`` ,以及在 USB 中断函数中根据不同的中断标志调用 ``usbd_event_notify_handler``
USB Device 应用层接口
------------------------
USB Device 通用接口
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**usbd_desc_register**
""""""""""""""""""""""""""""""""""""
``usbd_desc_register`` 用来注册 USB 描述符,描述符种类包括:设备描述符、配置描述符、接口描述符、字符串描述符、设备限定描述符。
.. code-block:: C
void usbd_desc_register(const uint8_t *desc);
- **desc** 描述符的句柄
**usbd_msosv1_desc_register**
""""""""""""""""""""""""""""""""""""
``usbd_msosv1_desc_register`` 用来注册一个 WINUSB 描述符,格式按照 ``struct usb_msosv1_descriptor``
.. code-block:: C
void usbd_msosv1_desc_register(struct usb_msosv1_descriptor *desc);
- **desc** 描述符句柄
**usbd_class_add_interface**
""""""""""""""""""""""""""""""""""""
``usbd_class_add_interface`` 用来给 USB 设备类增加接口,并将接口信息挂载在类的链表上。
.. code-block:: C
void usbd_class_add_interface(usbd_class_t *class, usbd_interface_t *intf);
- **class** USB 设备类的句柄
- **intf** USB 设备接口的句柄
``usbd_class_t`` 定义如下
.. code-block:: C
typedef struct usbd_class {
usb_slist_t list;
const char *name;
usb_slist_t intf_list;
} usbd_class_t;
- **list** 类的链表节点
- **name** 类的名称
- **intf_list** 接口的链表节点
``usbd_interface_t`` 定义如下
.. code-block:: C
typedef struct usbd_interface {
usb_slist_t list;
/** Handler for USB Class specific commands */
usbd_request_handler class_handler;
/** Handler for USB Vendor specific commands */
usbd_request_handler vendor_handler;
/** Handler for USB custom specific commands */
usbd_request_handler custom_handler;
/** Handler for USB event notify commands */
usbd_notify_handler notify_handler;
uint8_t intf_num;
usb_slist_t ep_list;
} usbd_interface_t;
- **list** 接口的链表节点
- **class_handler** class setup 请求回调函数
- **vendor_handler** vendor setup 请求回调函数
- **custom_handler** custom setup 请求回调函数
- **notify_handler** 中断标志、协议栈相关状态回调函数
- **intf_num** 当前接口偏移
- **ep_list** 端点的链表节点
**usbd_interface_add_endpoint**
""""""""""""""""""""""""""""""""""""
``usbd_interface_add_endpoint`` 用来给 USB 接口增加端点,并将端点信息挂载在接口的链表上。
.. code-block:: C
void usbd_interface_add_endpoint(usbd_interface_t *intf, usbd_endpoint_t *ep);
- **intf** USB 设备接口的句柄
- **ep** USB 设备端点的句柄
``usbd_endpoint_t`` 定义如下
.. code-block:: C
typedef struct usbd_endpoint {
usb_slist_t list;
uint8_t ep_addr;
usbd_endpoint_callback ep_cb;
} usbd_endpoint_t;
- **list** 端点的链表节点
- **ep_addr** 端点地址
- **ep_cb** 端点中断回调函数
**usb_device_is_configured**
""""""""""""""""""""""""""""""""""""
``usb_device_is_configured`` 用来检查 USB 设备是否被配置(枚举)。
.. code-block:: C
bool usb_device_is_configured(void);
- **return** 配置状态, 0 表示未配置, 1 表示配置成功
USB Device CDC 类接口
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**usbd_cdc_add_acm_interface**
""""""""""""""""""""""""""""""""""""
``usbd_cdc_add_acm_interface`` 用来给 USB CDC ACM 类添加接口,并重写该接口相关的函数。重写的函数包括 ``cdc_acm_class_request_handler````cdc_notify_handler``
其中 ``cdc_acm_class_request_handler`` 用于处理 USB CDC ACM Setup 中断请求, ``cdc_notify_handler`` 用于实现 USB CDC 其他中断回调函数。
.. code-block:: C
void usbd_cdc_add_acm_interface(usbd_class_t *class, usbd_interface_t *intf);
- **class** 类的句柄
- **intf** 接口句柄
**usbd_cdc_acm_set_line_coding**
""""""""""""""""""""""""""""""""""""
``usbd_cdc_acm_set_line_coding`` 用来对串口进行配置。该接口由用户实现,默认为空。
.. code-block:: C
void usbd_cdc_acm_set_line_coding(uint32_t baudrate, uint8_t databits, uint8_t parity, uint8_t stopbits);
- **baudrate** 波特率
- **databits** 数据位
- **parity** 校验位
- **stopbits** 停止位
**usbd_cdc_acm_set_dtr**
""""""""""""""""""""""""""""""""""""
``usbd_cdc_acm_set_line_coding`` 用来控制串口 DTR。该接口由用户实现默认为空。
.. code-block:: C
void usbd_cdc_acm_set_dtr(bool dtr);
- **dtr** dtr 为1表示拉低电平为0表示拉高电平
**usbd_cdc_acm_set_rts**
""""""""""""""""""""""""""""""""""""
``usbd_cdc_acm_set_line_coding`` 用来控制串口 RTS。该接口由用户实现默认为空。
.. code-block:: C
void usbd_cdc_acm_set_rts(bool rts);
- **rts** rts 为1表示拉低电平为0表示拉高电平
USB Device MSC 类接口
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**usbd_msc_class_init**
""""""""""""""""""""""""""""""""""""
``usbd_msc_class_init`` 用于初始化 USB MSC 类,注册 USB CDC ACM 设备并为其添加接口,且为接口添加 BLUK OUT 、BULK IN 端点及其回调函数。
.. code-block:: C
void usbd_msc_class_init(uint8_t out_ep, uint8_t in_ep);
- **out_ep** 输出端点的地址
- **in_ep** 输入端点的地址
**usbd_msc_get_cap**
""""""""""""""""""""""""""""""""""""
``usbd_msc_get_cap`` 用来获取存储器的信息。该接口由用户实现,默认为空。
.. code-block:: C
void usbd_msc_get_cap(uint8_t lun, uint32_t *block_num, uint16_t *block_size);
- **lun** 存储逻辑单元,暂时无用
- **block_num** 存储扇区个数的指针
- **block_size** 存储扇区大小的指针
**usbd_msc_sector_read**
""""""""""""""""""""""""""""""""""""
``usbd_msc_sector_read`` 用来对存储器某个扇区开始进行数据读取。该接口由用户实现,默认为空。
.. code-block:: C
int usbd_msc_sector_read(uint32_t sector, uint8_t *buffer, uint32_t length);
- **sector** 扇区偏移
- **buffer** 存储读取的数据的指针
- **length** 读取长度
**usbd_msc_sector_write**
""""""""""""""""""""""""""""""""""""
``usbd_msc_sector_write`` 用来对存储器某个扇区开始写入数据。该接口由用户实现,默认为空。
.. code-block:: C
int usbd_msc_sector_write(uint32_t sector, uint8_t *buffer, uint32_t length);
- **sector** 扇区偏移
- **buffer** 写入数据指针
- **length** 写入长度
USB Device HID 类接口
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**usbd_hid_add_interface**
""""""""""""""""""""""""""""""""""""
``usbd_hid_add_interface`` 用来给 USB HID 类添加接口,并重写该接口相关的函数。重写的函数包括 ``hid_class_request_handler````hid_custom_request_handler``
``hid_notify_handler``,其中 ``hid_class_request_handler`` 用来处理 USB HID 类的 Setup 中断请求, ``hid_custom_request_handler`` 用来处理 USB HID 获取描述符请求,
``hid_notify_handler`` 用来处理 USB HID 类的其他中断回调函数。
.. code-block:: C
void usbd_hid_add_interface(usbd_class_t *class, usbd_interface_t *intf);
- **class** 类的句柄
- **intf** 接口句柄
**usbd_hid_report_descriptor_register**
""""""""""""""""""""""""""""""""""""""""""""
``usbd_hid_report_descriptor_register`` 用来对存储器某个扇区开始写入数据。该接口由用户实现,默认为空。
.. code-block:: C
void usbd_hid_report_descriptor_register(uint8_t intf_num, const uint8_t *desc, uint32_t desc_len);
- **intf_num** 当前 hid 报告描述符所在接口偏移
- **desc** 报告描述符
- **desc_len** 报告描述符长度
**usbd_hid_set_request_callback**
""""""""""""""""""""""""""""""""""""
``usbd_hid_set_request_callback`` 用来对存储器某个扇区开始写入数据。该接口由用户实现,默认为空。
.. code-block:: C
void usbd_hid_set_request_callback( uint8_t intf_num,
uint8_t (*get_report_callback)(uint8_t report_id, uint8_t report_type),
void (*set_report_callback)(uint8_t report_id, uint8_t report_type, uint8_t *report, uint8_t report_len),
uint8_t (*get_idle_callback)(uint8_t report_id),
void (*set_idle_callback)(uint8_t report_id, uint8_t duration),
void (*set_protocol_callback)(uint8_t protocol),
uint8_t (*get_protocol_callback)(void));
- **intf_num** 当前 hid 报告描述符所在接口偏移
- **get_report_callback** get report命令处理回调函数
- **set_report_callback** set report命令处理回调函数
- **get_idle_callback** get idle命令处理回调函数
- **set_idle_callback** set idle命令处理回调函数
- **set_protocol_callback** set protocol命令处理回调函数
- **get_protocol_callback** get protocol命令处理回调函数
USB Device Audio 类接口
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**usbd_audio_add_interface**
""""""""""""""""""""""""""""""""""""
``usbd_audio_add_interface`` 用来给 USB Audio 类添加接口,并重写该接口相关的函数。重写的函数包括 ``audio_class_request_handler````audio_notify_handler``
.. code-block:: C
void usbd_audio_add_interface(usbd_class_t *class, usbd_interface_t *intf);
- **class** 类的句柄
- **intf** 接口句柄
USB Device Video 类接口
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**usbd_video_add_interface**
""""""""""""""""""""""""""""""""""""
``usbd_video_add_interface`` 用来给 USB Video 类添加接口,并重写该接口相关的函数。重写的函数包括 ``video_class_request_handler````video_notify_handler``
.. code-block:: C
void usbd_video_add_interface(usbd_class_t *class, usbd_interface_t *intf);
- **class** 类的句柄
- **intf** 接口句柄
USB Device DFU 类接口
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

112
README_zh.md Normal file
View File

@@ -0,0 +1,112 @@
# USB Stack
[English](./README.md)
USB Stack 是一个小而美的、可移植性高的、用于嵌入式系统的 USB 主从协议栈。
## USB Stack 目录结构
```
.
├── class
│ ├── audio
│ ├── cdc
│ ├── dfu
│ ├── hid
│ ├── hub
│ ├── midi
│ ├── msc
│ ├── tmc
│ └── video
├── common
├── core
├── demo
│ ├── bouffalolab
│ └── stm32
│ └── mm32
├── docs
├── packet capture
└── port
├── bouffalolab
│ └── bl702
├── ch32
├── fsdev
├── mm32
├── stm32
├── synopsys
└── template
```
| 目录名 | 描述 |
|:-------------:|:------------------------------:|
|class | usb class 类主从驱动 |
|common | usb spec 定义和一些常用函数 |
|core | usb 主从核心实现 |
|demo | 示例 |
|docs | 文档 |
|packet capture | 抓包文件(需要使用力科软件打开)|
|port | usb 主从需要实现的 porting 接口 |
## USB Device 协议栈简介
USB Device 协议栈对标准设备请求、CLASS 请求、VENDOR 请求以及 custom 特殊请求规范了一套统一的函数框架,采用面向对象和链表的方式,能够使得用户快速上手复合设备,不用管底层的逻辑。同时,规范了一套标准的 dcd porting 接口,用于适配不同的 USB IP达到面向 ip 编程。
USB Device 协议栈的代码实现过程参考 <https://www.bilibili.com/video/BV1Ef4y1t73d> 。
USB Device 协议栈当前实现以下功能:
- 支持 USB2.0 全速和高速设备
- 支持端点中断注册功能porting 给用户自己处理中断里的数据
- 支持复合设备
- 支持 Communication Class (CDC)
- 支持 Human Interface Device (HID)
- 支持 Custom human Interface Device (HID)
- 支持 Mass Storage Class (MSC)
- 支持 USB VIDEO CLASS (UVC)
- 支持 USB AUDIO CLASS (UAC)
- 支持 Device Firmware Upgrade CLASS (DFU)
- 支持 USB MIDI CLASS (MIDI)
- 支持 Test and Measurement CLASS (TMC)
- 支持 Vendor 类 class
- 支持 WINUSB1.0、WINUSB2.0
USB Device 协议栈资源占用说明:
| file | FLASH (Byte) | RAM (Byte) |
|:-----------:|:--------------:|:------------:|
|usbd_core.c | 3045 | 373 |
|usbd_cdc.c | 302 | 20 |
|usbd_msc.c | 2452 | 132 |
|usbd_hid.c | 784 | 201 |
|usbd_audio.c | 438 | 14 |
|usbd_video.c | 402 | 4 |
## USB Host 协议栈简介
waiting....
## USB Device API
更详细的设备协议栈 API 请参考: [USB Device API](docs/usb_device.md)
## USB Host API
更详细的主机协议栈 API 请参考: [USB Host API](docs/usb_host.md)
## RT-Thread 软件包使用
如何在 RT-Thread OS 中使用软件包,请参考:[USB Stack 在 RT-Thread package 中的使用](docs/rt-thread_zh.md)
## USB 参考手册
- USB2.0 spec: <https://www.usb.org/document-library/usb-20-specification>
- CDC: <https://www.usb.org/document-library/class-definitions-communication-devices-12>
- MSC: <https://www.usb.org/document-library/mass-storage-class-specification-overview-14>
<https://www.usb.org/document-library/mass-storage-bulk-only-10>
- HID: <https://www.usb.org/document-library/device-class-definition-hid-111>
<https://www.usb.org/document-library/hid-usage-tables-122>
- AUDIO: <https://www.usb.org/document-library/audiovideo-device-class-v10-spec-and-adopters-agreement>
<https://www.usb.org/document-library/audio-data-formats-10>
- VIDEO: <https://www.usb.org/document-library/video-class-v11-document-set>
- TMC: <https://www.usb.org/document-library/test-measurement-class-specification>
- DFU: <https://www.st.com/resource/zh/application_note/cd00264379-usb-dfu-protocol-used-in-the-stm32-bootloader-stmicroelectronics.pdf>

View File

@@ -280,11 +280,9 @@ int main(void)
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
uint8_t data_buffer[10] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35 };
uint8_t data_buffer[10] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x31, 0x32, 0x33, 0x34, 0x35 };
usbd_ep_write(CDC_IN_EP, data_buffer, 10, NULL);
printf("start\r\n");
HAL_Delay(500);
printf("end\r\n");
}
/* USER CODE END 3 */
}

View File

@@ -92,7 +92,7 @@
#endif
#ifndef CONFIG_USB_TURNAROUND_TIME
#define CONFIG_USB_TURNAROUND_TIME 9
#define CONFIG_USB_TURNAROUND_TIME 6
#endif
/* Endpoint state */