<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          USB入門總結(jié)——枚舉過程

          共 1778字,需瀏覽 4分鐘

           ·

          2021-09-12 22:35

          前言:

              把最近的學習usb的筆記結(jié)合一些資料來總結(jié)一下,本文僅代表個人觀點,盡可能保證內(nèi)容準確性。

              1.   不但固件程序需要編寫; 

              2.   PC端的驅(qū)動也要編寫;

              3.   而且驅(qū)動寫好了還要寫個上機位才能看出效果;

              這樣調(diào)試起來十分困難,建議從USB的鍵盤,鼠標開始做,了解清楚了,再做自己的協(xié)議就比較簡單了。

           


          (一)設(shè)備插入

                   主機會輪回查詢各個USB端口,主機檢測到D+與D-之間有電壓差,就認為有新的設(shè)置接入。主機等待100ms后發(fā)出復位請求。設(shè)備接到復位請求后將產(chǎn)生一個外部中斷信號。

           

          (二)枚舉過程(檢測到設(shè)備插入以后)

                 主機這時候只是知道有新的設(shè)備插入了,但是不知道插進來個什么東西,所以就開始詢問它是什么設(shè)備,怎么用,負荷能力怎么樣。這個時候就進入了枚舉過程。


          步驟1:(設(shè)備描述符)

               地址:因為剛剛插入的設(shè)備沒有分配地址,就用默認地址0;

               主機:首先發(fā)送一個Get_deor(獲取設(shè)備描述符)指令包;

              設(shè)備:設(shè)備接到包后就開始解析包(其實就是你在固件程序里判斷處理),然后按固定格式返回自己設(shè)備的設(shè)備描述符

               目的:這一步主要是讓主機知道你的USB設(shè)備的基礎(chǔ)屬性,比如支持的傳輸數(shù)據(jù)長度,電流負荷多少,支持那個USB版本,以后方便電腦找驅(qū)動的PID,VID。


          步驟2:(配置描述符)

          分配地址:主機知道設(shè)備的數(shù)據(jù)長度和電流大小后,然后就是給設(shè)備分配一個屬于它的地址;

              主機:給設(shè)備一個地址后,就開始詢問設(shè)備的具體配置(配置描述符)。首先發(fā)送一個試探性的設(shè)備配置請求Get_configuration(要求固定返回9個設(shè)備配置字)指令包;

              設(shè)備:接到指令包后就開始發(fā)送9字節(jié)的設(shè)備配置字,其中包括設(shè)備的配置字的總長度;

              主機:這樣主機就知道設(shè)備的配置到底有多長,然后再發(fā)一次設(shè)備配置請求指令包;

              設(shè)備:這時設(shè)備就開始上傳所有的配置字;

              主機:這個時候主機就已經(jīng)很明白你的工作方式和各種特性,然后就可以正常工作了;

              目的:配置(后面詳細說明)要求說明自己的名字什么的,這里還要上傳字符串描述符;如果是鼠標或者鍵盤還要上傳報告描述符。

           

          三)正常數(shù)據(jù)階段

              這個時候你已經(jīng)被主機正式接受并且注冊了,你可以通過自己寫測試驅(qū)動或通用驅(qū)動與電腦進行通訊了。

          對于USB的工作我這里做個比方:

               主機好比一個公司,你就是USB設(shè)備,要進入公司首先要面試(枚舉),你到了面試現(xiàn)場(第一次插入設(shè)備),面試官首先了解到你的外表,性別已經(jīng)你要應(yīng)聘的崗位(設(shè)備描述符),然后給你一個號,以后就開始按號叫人,當你被叫到就開始問你的專業(yè)知識,性格等(配置描述符),如果你比較合適(通過了枚舉)你就會錄取了,并且注冊一個你的信息到公司(驅(qū)動安裝,并且寫入注冊表)。等你下次來公司,只要把工號(PID,VID)報上,就知道是你來了。




          記錄
          點點滴滴的筆記
          歡迎關(guān)注,共同學習


          小浩筆記

          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本免费三级黄色电影网站 | 播播影院在线特别黄色视频看看你 | 无码黄色电影 | 中文字幕在线观看第二页 | 三级在线看 |