summaryrefslogtreecommitdiff
path: root/docs/source
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2025-07-01 21:21:53 +0800
committersakumisu <[email protected]>2025-07-01 21:21:59 +0800
commit832e4c45fb659214d9ab9f8edee71e248f8aa96b (patch)
treea185d2734e95bb5becf85f9004da6016e5c6977a /docs/source
parent52ea7e8dcfb96d01a1fade18ea29a15685eda5ca (diff)
fix(class/hub): change urb interval unit to us
Signed-off-by: sakumisu <[email protected]>
Diffstat (limited to 'docs/source')
-rw-r--r--docs/source/api/api_port.rst47
-rw-r--r--docs/source/demo/usbh_hid.rst6
2 files changed, 30 insertions, 23 deletions
diff --git a/docs/source/api/api_port.rst b/docs/source/api/api_port.rst
index daed52e7..c214daa7 100644
--- a/docs/source/api/api_port.rst
+++ b/docs/source/api/api_port.rst
@@ -186,33 +186,36 @@ usbh_submit_urb
.. code-block:: C
- struct usbh_urb {
- void *hcpriv;
- struct usbh_hubport *hport;
- struct usb_endpoint_descriptor *ep;
- uint8_t data_toggle;
- struct usb_setup_packet *setup;
- uint8_t *transfer_buffer;
- uint32_t transfer_buffer_length;
- int transfer_flags;
- uint32_t actual_length;
- uint32_t timeout;
- int errorcode;
- uint32_t num_of_iso_packets;
- uint32_t start_frame;
- usbh_complete_callback_t complete;
- void *arg;
- #if defined(__ICCARM__) || defined(__ICCRISCV__) || defined(__ICCRX__)
- struct usbh_iso_frame_packet *iso_packet;
- #else
- struct usbh_iso_frame_packet iso_packet[0];
- #endif
- };
+ struct usbh_urb {
+ usb_slist_t list;
+ void *hcpriv;
+ struct usbh_hubport *hport;
+ struct usb_endpoint_descriptor *ep;
+ uint8_t data_toggle;
+ uint8_t interval;
+ struct usb_setup_packet *setup;
+ uint8_t *transfer_buffer;
+ uint32_t transfer_buffer_length;
+ int transfer_flags;
+ uint32_t actual_length;
+ uint32_t timeout;
+ int errorcode;
+ uint32_t num_of_iso_packets;
+ uint32_t start_frame;
+ usbh_complete_callback_t complete;
+ void *arg;
+ #if defined(__ICCARM__) || defined(__ICCRISCV__) || defined(__ICCRX__)
+ struct usbh_iso_frame_packet *iso_packet;
+ #else
+ struct usbh_iso_frame_packet iso_packet[0];
+ #endif
+ };
- **hcpriv** 主机控制器驱动私有成员
- **hport** 当前 urb 使用的 hport
- **ep** 当前 urb 使用的 ep
- **data_toggle** 当前 data toggle
+- **interval** urb 传输间隔,单位 us,如果 interval 大于 1000us,则需要使用软件定时器来维护
- **setup** setup 请求缓冲区,端点0使用
- **transfer_buffer** 传输的数据缓冲区
- **transfer_buffer_length** 传输长度
diff --git a/docs/source/demo/usbh_hid.rst b/docs/source/demo/usbh_hid.rst
index 79a5f247..6d519319 100644
--- a/docs/source/demo/usbh_hid.rst
+++ b/docs/source/demo/usbh_hid.rst
@@ -48,4 +48,8 @@ usbh_hid
.. code-block:: C
- hub->int_timer = usb_osal_timer_create("hubint_tim", USBH_GET_URB_INTERVAL(hub->intin->bInterval, hport->speed), hub_int_timeout, hub, 0);
+ hub->int_timer = usb_osal_timer_create("hubint_tim", USBH_GET_URB_INTERVAL(hub->intin->bInterval, hport->speed) / 1000, hub_int_timeout, hub, 0);
+
+.. note::
+
+ 这里的 `USBH_GET_URB_INTERVAL` 是一个宏定义,用于根据 binterval 计算 URB 的传输间隔时间, 单位是 us,而定时器最低是 ms ,因此需要除以 1000。对于小于等于 1ms 的不需要使用定时器。 \ No newline at end of file