Parcourir la source

Deploying to gh-pages from @ cherry-embedded/CherryUSB@832e4c45fb659214d9ab9f8edee71e248f8aa96b 🚀

sakumisu il y a 6 mois
Parent
commit
b5d7bc8b77
5 fichiers modifiés avec 38 ajouts et 24 suppressions
  1. 25 22
      _sources/api/api_port.rst.txt
  2. 5 1
      _sources/demo/usbh_hid.rst.txt
  3. 3 0
      api/api_port.html
  4. 5 1
      demo/usbh_hid.html
  5. 0 0
      searchindex.js

+ 25 - 22
_sources/api/api_port.rst.txt

@@ -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** 传输长度

+ 5 - 1
_sources/demo/usbh_hid.rst.txt

@@ -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 的不需要使用定时器。

+ 3 - 0
api/api_port.html

@@ -354,10 +354,12 @@
 </ul>
 <p>其中, <cite>urb</cite> 结构体信息如下:</p>
 <div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">usbh_urb</span><span class="w"> </span><span class="p">{</span>
+<span class="w">    </span><span class="n">usb_slist_t</span><span class="w"> </span><span class="n">list</span><span class="p">;</span>
 <span class="w">    </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">hcpriv</span><span class="p">;</span>
 <span class="w">    </span><span class="k">struct</span><span class="w"> </span><span class="nc">usbh_hubport</span><span class="w"> </span><span class="o">*</span><span class="n">hport</span><span class="p">;</span>
 <span class="w">    </span><span class="k">struct</span><span class="w"> </span><span class="nc">usb_endpoint_descriptor</span><span class="w"> </span><span class="o">*</span><span class="n">ep</span><span class="p">;</span>
 <span class="w">    </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">data_toggle</span><span class="p">;</span>
+<span class="w">    </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">interval</span><span class="p">;</span>
 <span class="w">    </span><span class="k">struct</span><span class="w"> </span><span class="nc">usb_setup_packet</span><span class="w"> </span><span class="o">*</span><span class="n">setup</span><span class="p">;</span>
 <span class="w">    </span><span class="kt">uint8_t</span><span class="w"> </span><span class="o">*</span><span class="n">transfer_buffer</span><span class="p">;</span>
 <span class="w">    </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">transfer_buffer_length</span><span class="p">;</span>
@@ -382,6 +384,7 @@
 <li><p><strong>hport</strong> 当前 urb 使用的 hport</p></li>
 <li><p><strong>ep</strong> 当前 urb 使用的 ep</p></li>
 <li><p><strong>data_toggle</strong> 当前 data toggle</p></li>
+<li><p><strong>interval</strong> urb 传输间隔,单位 us,如果 interval 大于 1000us,则需要使用软件定时器来维护</p></li>
 <li><p><strong>setup</strong> setup 请求缓冲区,端点0使用</p></li>
 <li><p><strong>transfer_buffer</strong> 传输的数据缓冲区</p></li>
 <li><p><strong>transfer_buffer_length</strong> 传输长度</p></li>

+ 5 - 1
demo/usbh_hid.html

@@ -202,9 +202,13 @@
 <li><p>HID 使用的是中断传输,因此正常来说,我们需要根据 <strong>bInterval</strong> 来设置定时器,定时触发中断传输,demo 这里没有使用,如果对时间有精确要求,可以选择使用定时器来触发异步发送。</p></li>
 <li><p>以 hub 通信为例,采用的是一次性定时器,也可以使用周期性定时器。</p></li>
 </ul>
-<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="n">hub</span><span class="o">-&gt;</span><span class="n">int_timer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">usb_osal_timer_create</span><span class="p">(</span><span class="s">&quot;hubint_tim&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">USBH_GET_URB_INTERVAL</span><span class="p">(</span><span class="n">hub</span><span class="o">-&gt;</span><span class="n">intin</span><span class="o">-&gt;</span><span class="n">bInterval</span><span class="p">,</span><span class="w"> </span><span class="n">hport</span><span class="o">-&gt;</span><span class="n">speed</span><span class="p">),</span><span class="w"> </span><span class="n">hub_int_timeout</span><span class="p">,</span><span class="w"> </span><span class="n">hub</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
+<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="n">hub</span><span class="o">-&gt;</span><span class="n">int_timer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">usb_osal_timer_create</span><span class="p">(</span><span class="s">&quot;hubint_tim&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">USBH_GET_URB_INTERVAL</span><span class="p">(</span><span class="n">hub</span><span class="o">-&gt;</span><span class="n">intin</span><span class="o">-&gt;</span><span class="n">bInterval</span><span class="p">,</span><span class="w"> </span><span class="n">hport</span><span class="o">-&gt;</span><span class="n">speed</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">1000</span><span class="p">,</span><span class="w"> </span><span class="n">hub_int_timeout</span><span class="p">,</span><span class="w"> </span><span class="n">hub</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
 </pre></div>
 </div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>这里的 <cite>USBH_GET_URB_INTERVAL</cite> 是一个宏定义,用于根据 binterval 计算 URB 的传输间隔时间, 单位是 us,而定时器最低是 ms ,因此需要除以 1000。对于小于等于 1ms 的不需要使用定时器。</p>
+</div>
 </section>
 
 

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
searchindex.js


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff