From 0d208f350e762668a76b89b035a67c1adf30a2aa Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Sun, 12 Dec 2021 15:21:56 +0800 Subject: add english readme --- README.md | 111 ++++----- README.rst | 411 ------------------------------- README_zh.md | 112 +++++++++ demo/stm32/stm32h743vbt6/Core/Src/main.c | 4 +- port/synopsys/usb_dc_synopsys.c | 2 +- 5 files changed, 170 insertions(+), 470 deletions(-) delete mode 100644 README.rst create mode 100644 README_zh.md diff --git a/README.md b/README.md index f8645a95..8175c003 100644 --- a/README.md +++ b/README.md @@ -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规格书: -- CDC: -- MSC: - -- HID: - -- AUDIO: - -- VIDEO: -- TMC: -- DFU: - -## 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接口 | - -## USB Device 协议栈简介 - -USB Device 协议栈对标准设备请求、CLASS 请求、VENDOR 请求以及 custom 特殊请求规范了一套统一的函数框架,采用面向对象和链表的方式,能够使得用户快速上手复合设备,不用管底层的逻辑。同时,规范了一套标准的 dcd porting 接口,用于适配不同的 USB IP,达到面向 ip 编程。 - -USB Device 协议栈的代码实现过程参考 。 - -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 协议栈资源占用说明: +| 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 Stack Overview + +USB Device Stack provides a unified framework of functions for standard device requests, CLASS requests, VENDOR requests and custom special requests,The 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.。 + +How USB Device Stack is implemented, this video will tell you: 。 + +USB Device Stack has the following functions: + +- 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 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: +- CDC: +- MSC: + +- HID: + +- AUDIO: + +- VIDEO: +- TMC: +- DFU: diff --git a/README.rst b/README.rst deleted file mode 100644 index 85acd65a..00000000 --- a/README.rst +++ /dev/null @@ -1,411 +0,0 @@ -USB Stack -======================= - -USB Stack 是一个小而美的、可移植性高的、用于嵌入式 MCU 的 USB 主从协议栈。 - -USB 参考手册 -------------------------------- - -- USB2.0规格书: ``_ -- CDC: ``_ -- MSC: ``_ - ``_ -- HID: ``_ - ``_ -- AUDIO: ``_ - ``_ -- VIDEO: ``_ -- TMC: ``_ -- DFU: ``_ - -USB Device 协议栈简介 -------------------------------- - -USB Device 协议栈对标准设备请求、CLASS 请求、VENDOR 请求以及 custom 特殊请求规范了一套统一的函数框架,采用面向对象和链表的方式,能够使得用户快速上手复合设备,不用管底层的逻辑。同时,规范了一套标准的 dcd porting 接口,用于适配不通的 USB IP,达到面向 ip 编程。 - -USB Device 协议栈的代码实现过程参考 ``_。 - -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 类接口 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 00000000..c2ba2a89 --- /dev/null +++ b/README_zh.md @@ -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 协议栈的代码实现过程参考 。 + +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: +- CDC: +- MSC: + +- HID: + +- AUDIO: + +- VIDEO: +- TMC: +- DFU: diff --git a/demo/stm32/stm32h743vbt6/Core/Src/main.c b/demo/stm32/stm32h743vbt6/Core/Src/main.c index fc8f07f1..6d90f9ad 100644 --- a/demo/stm32/stm32h743vbt6/Core/Src/main.c +++ b/demo/stm32/stm32h743vbt6/Core/Src/main.c @@ -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 */ } diff --git a/port/synopsys/usb_dc_synopsys.c b/port/synopsys/usb_dc_synopsys.c index 0768cc62..baaaad50 100644 --- a/port/synopsys/usb_dc_synopsys.c +++ b/port/synopsys/usb_dc_synopsys.c @@ -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 */ -- cgit v1.3.1