亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb_kf.txt

?? 描述帶USB的單片機如何跟PC機通訊的過程,和上位機做USB驅動所需要的步驟
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
        CLR_BUS_RESET_DES_STATE();  /* Request clear */
                     #ifdef Debug
                     test[conters]='$';
                     conters++;
                     #endif

    }

    else if (SOF_INT())
    {   /* SOF interrupt status */
        CLR_B_SOF_STATE();   
               #ifdef Debug
                     test[conters]='%';
                     conters++;
                     #endif
       /* SOF interrupt status clear */
    }   /* SOF interrupt status */

    if (SETUP_RDY_INT())
    {   /* setup ready */
                  #ifdef Debug
                     test[conters]='^';
                     conters++;
                     #endif

        read_Device_Requests();
    }

    else if(EP1_PKTRDY_INT())
    {   /* EP1 packet ready */     
        read_FIFO(EP1);
       }
    else if (EP2_PKTRDY_INT())
    {   /* EP2 packet ready */

        write_FIFO(EP2);
    }

    else if (EP0_RXPKTRDY_INT())
    {   /* EP0 receive packet ready */
        read_FIFO(EP0RX);
    }
    else if (EP0_TXPKTRDY_INT())
    {   /* EP0 transmit packet ready */
        write_FIFO(EP0TX);
    }

}
計錄的結果在變量查看中顯示如下:

首先我解釋一下,這段程序是我在做USB設備時的中斷函數。主控(就是你往里面寫固件程序的那個東西)會在要求設備進行操作時,產生一個相應的中斷(我們可以用中斷的方式,也可以用查詢的方式,中斷的方式的好處就是主機有需要操作的都會叫你,而用查詢你必須不斷的問主機“有事么”,這里采用中斷方式),比如主機給設備設置地址,主機會通過固定的通道(point0)發送一個‘設定地址’包,設備主控接到包后會產生中斷,并且把響應的狀態保存在相應的寄存器中,我們只要在中斷程序判斷各個寄存器就能完成主機的任務。
程序中藍色字是中斷類型的判斷,其對應的宏定義就不列出來了。如果是這個中斷就會執行相應的中斷操作。并且一次中斷只有一種中斷類型,我們在每個中斷響應中加一段紅色字的程序,是為了保存每次中斷的狀態,比如剛插上設備,來了一次BUSRESET總線復位中斷,就會進入相應的中斷操作,完了后記錄狀態test[conters]='!'; conters++;意思是進入了這個中斷就在這一組數的當前位置設成'!',并且位置記錄的變量加一,以便下一次記錄到下一個位置。這樣USB的過程我們就記錄了下來,
     下面看一下記錄結果(其中的數字和字母是響應標準請求時的程序產生的這里不羅列程序了)。
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpg

可以看到,一開始是一次總線復位,然后USB bus reset de-assert,然后再掛起總線。重復了兩次,然后就是上一節的具體配置了。
這節主要是對固件里的USB請求處理有個概念,還有就是調試的方法。
 





對于USB傳輸大體有個概念,下一步就來看看到底USB上傳的什么東西,以什么格式傳數據,先不涉及端點的概念。
各種總線的數據傳輸都是以固定的層次協議進行的,USB當然也不例外。所謂的層次也只是個抽象的概念罷了,就是表達一種依附關系,上層要依賴與底層,上層以底層為基礎,上層只需要關心自己的東西就行了,如果你還不明白,那就繼續看,學習一個東西不可能一兩句話說的明白一個點,需要全面了解后才能清楚各個點。
要實現兩個機器(機器的范圍比較廣,可以是電腦,交換機,單片機)的通信總是要有一個載體才可以,對于機器當然是電平高低為載體,具體的說機器甲要告訴機器乙一件事情(比如說一條指令),那么機器甲可以通過一根線(串行數據總線)連到機器乙的一個IO口上,甲發送一個個的高低電平,乙固定時間檢測自己的這個IO口,然后逐個記錄下放到自己的緩沖里,這樣乙就收到甲送的數據了。上述就是一個簡單的數據鏈路層(計算機網絡里這么叫)的描述,這一層要保證的就是甲發的每一位數據,乙都可以正確及時的接受,并且對在傳輸過程中出錯的數據做出反應。其實比數據連路更底層的還有物理層,這就是真正的物理介質,對于機器就是電線了,數據就是電線上傳輸的電壓,USB是用的四線,兩個電源,兩個數據線。
這里也打個比方,比如人與人進行交流,我們當然是通過說話了,物理層就是空氣和傳輸的聲波,數據鏈路層就是我們說的每一個字,物理層就是空氣,負責把我們說的話轉換成聲波傳給對方,數據鏈路層負責讓對方能正確的聽到每個字,如果聽的不清可以告訴對方重新說一遍。
經過上述的兩個底層,就可以保證每一位數據可以正確的傳到對方那里去。下一步的工作當然是解析數據代表了什么,一般來說,數據都是以一串數為單位,一般稱為一個包,機器間傳輸都是以一個包為單位傳出,就像人們說話都是以一句話為單位輸出一樣。每一個包包含有許多位數據,這些數據又分段表示不同的意義,如圖一,這是一個USB令牌階段的包,Sync是同步數據(相當于說話時先打個招呼,告訴對方要跟他說話了),PID是包標示(告訴對方這個包是干什么用的),ADDR是對方的地址(叫對方的名字),ENDP是用端點幾通訊(先不介紹這個),CRC5是校驗位(判斷這個包是否在傳輸中出錯),EOP是包結束。
|--------------------------------------------------------|
|   Sync  |  PID  |  ADDR  |  ENDP  |  CRC5  |  EOP      |
|________________________________________________________|

                      圖一
USB的數據包又分為三種,一個是令牌包,一個是數據包,另一個是握手包。每一次的USB通訊事務處理都是以令牌包開頭,告訴對方要跟誰說話,這句話是用來干嘛的。如果要求有數據傳輸,則下一步就是數據包,另外如果要求對方要有反饋,則會發出握手包。令牌包又簡單的包括OUT,IN,STEP三種類型,OUT是用于主機告訴設備主機要向USB設備發送數據,IN是用于主機告訴設備要上傳數據,而STEUP是用于主機向USB設備發送配置信息,在枚舉過程中會用到。另外數據包和握手包的具體格式什么的,可以參照詳細的協議。
可以看到在所以的通訊過程中,主機都是發起者,不管是主機發送數據到USB設備還是USB設備發送數據到主機,都必須收主機控制。圖二為一次事務的過程
   
        令牌階段   ——》        數據階段     ——》     握手階段

                                圖二
這個過程可以這樣描述,甲和乙對話,甲是老板,乙是職員。第一節已經講過了,乙面試就是枚舉,在這個過程中,甲多段的發送STEP令牌包給乙,乙收到后如果要反饋數據,就發數據包給甲,甲正確接收后,跟甲握握手,表示這次對話成功。
乙被正式錄取后,甲會分派任務(OUT),這時甲對乙說有任務給你(令牌階段),然后乙就開始聽,甲說你的任務就是記錄數據并且上報(這段話就是數據包),乙說好的(握手包)。
乙開始正式工作,并且記錄數據。過了一段時間,甲開始要求提交數據(IN),乙把數據報告給甲(數據階段),甲說好(握手成功)。這里乙不能主動的去向老板匯報,只能被動的干活。
上面已經講USB主機和設備間數據傳輸的過程,都是我個人理解,有不正確和不到位的大家提出,方便初學者理解,謝謝··

 





經過上述三節的描述,對USB應該已經有了初步的認識,其中具體的協議(比如各個描述符的定義什么的)這里不做描述了,網上一搜一大堆。下面我以一個實例來詳細說明快速開發USB設備的步驟,
一,設定規劃
凡事預則立,不預則費,所以開發一個小小的USB也要稍微規劃一下,比如想象要實現什么功能,傳輸的數據協議什么的。
二,固件編程,
固件編程說白了就是寫單片機程序,要實現USB一般可以使用帶USB功能的單片機,再個就是加一個專用的USB芯片。這里以內部集成USB功能單片機為例
固件的USB開發一般就是先使能USB,使能USB時鐘,使能各個USB控制中斷(掛起,復位,標準請求,寫入,寫出等)然后USB就能正常工作了,這時候不如不寫別的東西,電腦就可以檢測出有USB設備插入了,具體的反應是在設備管理器里會發現閃了一下說明發現了新的USB設備,接下來電腦會發送各種標準請求,因為這個時候你的程序還沒寫完整,對這些請求不會有反應,所以電腦不可能識別出是什么東西。
接下來的工作就是在中斷中響應電腦傳來的各種標準請求。當必要的請求都被正確的響應的話,這個時候如果電腦里有正確的驅動,電腦就會去加載這個驅動,如果是第一次插入這個設備,還要把驅動安裝一下,然后設備就進入正常工作了,電腦會顯示“這個USB已經成功安裝并可以應用了”。
這里捎帶著說一下端點(endpoint)的概念,一般一個USB設備都會有數個端點,端點就是一個數據緩沖控制區(FIFO),每個緩沖區相當于有一個出口一個進口的池子,數據通過進口進入到池子,然后你再在固件里去用這些數據。固件往電腦寫數據,也是把數據先放到池子里,然后打開出口,就可以干自己的事情,不用一個個的把數據發出了,池子的出口自動把數據流出。
一般的端口0是用來做標準請求響應用的,也就是在枚舉階段用到。我一般把端口1定義為出(OUT),端口2定義為入(IN)(注意,這個OUT和IN是相對與電腦的,也就是說OUT是數據從電腦出去到設備,IN是設備的數據進入電腦)。這些定義也是在標準請求中去告訴電腦的。
接下來就可以實現與電腦的通訊了,你把數據放到相應的池子里就行了。下面就可以自己定義通訊的數據格式了。比如控制開發板上的8個LED的第一個燈亮,那么上位機發送數據0x55,0x01,0x80,0xaa。我們就可以規定第一個數據是啟示位,遇到這個表明開始一次控制指令,0x01表示這個是控制燈亮暗的指令,0x80表示LED的控制數據,最高位是1,表示第一個亮,其他位是0,表示都暗。最后一個數據是0xaa,表示這是結束。其實所謂的數據協議不過就是自己定義的一套讓通訊雙方都能正確理解對方的數據格式。電腦比較是電腦,什么都要規定好了,它才能正確的工作。
三,驅動程序
    對于快速開發用Driverstudio就可以了,我先裝了VC6.0,然后裝了DDK2600,最后裝了Driverstudio,網上有說這個順序不容易出問題,我也沒時間去試別的順序會出怎么樣的特效,姑且不管他是否在忽悠,先這樣按了沒壞處。
    我一開始比較新潮的裝了DriverStudio3.2版本,然后按網上的方法破解了,生成了驅動是能打開設備,但是就是傳輸不了數據,搞了兩天還是不行,后來想到是不是3.2版本太新了?或者破解沒完整?然后卸載了3.2裝了3.1,果然可以了,真不知道是Compuware做了手腳故意玩我還是本人愚笨弄錯了哪里。
驅動生成的步驟可以在百度,Google里搜“10分鐘完成一個USB驅動程序”能出來一


大堆,要是你嫌搜索麻煩就直接點這個算了http://www.4oa.com/Article/html/6/33/482/2005/17317.html按那個步驟操作就可以了,根據向導操作完了以后,VC就會出來一個驅動程序框架了,如果你在這個時候編譯一下就可你會碰到很多問題,我的操作是這樣的。首先把DDK的庫編譯一下,操作網上有, 網上有云:
1.啟動Visual C++ 。
2.選擇菜單 File|Open Workspace。打開位于DriverStudio/DriverWorks/Source/vdwlibs.dsw的工作空間文件。
3.選擇菜單 Build|Batch Build,在彈出的對話框中選擇你想編譯的庫。
4.點擊Build編譯你選擇的庫。
然后在VC的Driverstudio的工具條點擊“change environment variables”,在第一個選型卡把DDK的路堆∩希

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影一区二区| 亚洲一区影音先锋| 亚洲一线二线三线视频| 精品制服美女丁香| 欧美日韩亚洲另类| 国产精品久久久久四虎| 国产一区二区精品久久| 欧美日本在线一区| 一区二区三区.www| 99久久精品国产毛片| 久久九九99视频| 麻豆精品一二三| 56国语精品自产拍在线观看| 亚洲色图欧洲色图| 成人精品一区二区三区四区| 欧美成人福利视频| 美女一区二区久久| 欧美电影一区二区| 天天色 色综合| 欧美无人高清视频在线观看| 亚洲色图欧美偷拍| av资源站一区| 国产精品乱码久久久久久| 国产一区二区三区免费播放| 日韩欧美一区二区三区在线| 天天综合天天做天天综合| 欧美在线视频不卡| 亚洲一区在线观看免费| 欧美少妇xxx| 亚洲午夜久久久久中文字幕久| 91亚洲男人天堂| 最新日韩av在线| heyzo一本久久综合| 中文字幕欧美国产| www.亚洲色图.com| 亚洲日本一区二区| 成人免费看视频| 国产精品萝li| 在线观看www91| 亚洲va欧美va人人爽午夜 | 亚洲蜜臀av乱码久久精品| 不卡电影一区二区三区| 国产精品久久福利| 91色|porny| 亚洲香蕉伊在人在线观| 欧美日韩久久久久久| 美女视频网站黄色亚洲| 欧美一级免费观看| 极品销魂美女一区二区三区| 久久亚洲影视婷婷| 99热精品国产| 亚洲va欧美va人人爽午夜 | 国内精品久久久久影院色 | 欧美一卡在线观看| 韩国v欧美v日本v亚洲v| 国产精品亲子乱子伦xxxx裸| 色吊一区二区三区| 青青青伊人色综合久久| 久久嫩草精品久久久精品一| 91亚洲精华国产精华精华液| 亚洲不卡在线观看| 国产亚洲精品资源在线26u| 99久久精品免费看| 毛片av一区二区三区| 国产精品视频一二三区| 欧美日韩国产高清一区| 国产不卡在线视频| 经典三级在线一区| 国产精品久久久久影院| 69av一区二区三区| 国产宾馆实践打屁股91| 首页综合国产亚洲丝袜| 久久久久久久综合色一本| 91官网在线观看| 国内精品视频一区二区三区八戒| 一区在线观看视频| 日韩精品一区二区三区老鸭窝| 91丨九色丨尤物| 国内精品视频666| 亚洲福利视频三区| 成人欧美一区二区三区视频网页| 欧美日韩三级一区| 99在线精品免费| 紧缚捆绑精品一区二区| 亚洲高清视频在线| 亚洲同性gay激情无套| 精品蜜桃在线看| 欧美日韩高清一区二区三区| 波多野结衣亚洲一区| 久久99精品国产麻豆婷婷洗澡| 亚洲综合丝袜美腿| 国产精品福利影院| 日本一区二区综合亚洲| 日韩一区二区麻豆国产| 精品视频在线视频| 色综合久久九月婷婷色综合| 国产成人h网站| 狠狠色综合色综合网络| 日本麻豆一区二区三区视频| 亚洲一区二区四区蜜桃| 中文字幕日本乱码精品影院| 国产女人水真多18毛片18精品视频| 69成人精品免费视频| 欧美肥妇毛茸茸| 欧美日韩一区高清| 欧美亚洲一区三区| 欧洲国内综合视频| 欧美在线观看视频一区二区| 91视频xxxx| 91成人在线精品| 99视频有精品| 91免费观看视频| 99久久婷婷国产精品综合| 懂色av一区二区三区免费看| 国产成人综合网| 国产一区二区不卡在线| 国产成人欧美日韩在线电影| 福利视频网站一区二区三区| 高清不卡一区二区在线| 不卡区在线中文字幕| 91影视在线播放| 在线观看亚洲一区| 91精品国产色综合久久久蜜香臀| 91精品国产免费久久综合| 777色狠狠一区二区三区| 3d动漫精品啪啪1区2区免费 | 成人动漫中文字幕| 99精品视频一区二区三区| 91蝌蚪porny| 欧美区视频在线观看| 日韩亚洲国产中文字幕欧美| 久久一区二区三区四区| 中文字幕第一区二区| 一区二区三区欧美| 日韩精品亚洲一区二区三区免费| 裸体在线国模精品偷拍| 国产高清不卡一区| 色婷婷激情综合| 91精品国产黑色紧身裤美女| 久久人人爽爽爽人久久久| 专区另类欧美日韩| 天天色综合天天| 福利一区福利二区| 欧美日韩精品免费观看视频| 日韩一卡二卡三卡四卡| 国产区在线观看成人精品| 亚洲精品你懂的| 精品一区二区久久久| 一本大道久久a久久综合| 欧美一区二区三区精品| 欧美激情一区二区三区在线| 一区二区三区日韩精品视频| 久久电影网电视剧免费观看| av中文字幕在线不卡| 日韩一区二区中文字幕| 1000部国产精品成人观看| 美女免费视频一区二区| 99久久99精品久久久久久 | 欧美日韩一区二区三区在线 | 综合中文字幕亚洲| 免费在线观看日韩欧美| 91天堂素人约啪| 精品va天堂亚洲国产| 亚洲永久免费视频| 国产aⅴ综合色| 日韩一级完整毛片| 亚洲视频1区2区| 国产剧情在线观看一区二区| 欧美日韩一区在线观看| 国产精品天美传媒| 精品综合免费视频观看| 欧美日韩久久不卡| 亚洲欧美激情插| 国产成人啪免费观看软件| 日韩欧美国产一区二区在线播放| 自拍偷在线精品自拍偷无码专区| 久久精品国产成人一区二区三区 | 欧美成人乱码一区二区三区| 一区二区三区美女视频| www.66久久| 国产精品免费视频网站| 国产成人亚洲综合a∨婷婷 | 亚洲精品视频一区| 成人听书哪个软件好| 精品久久一区二区| 久久99精品国产.久久久久久| 欧美久久高跟鞋激| 亚洲成人在线网站| 欧美亚日韩国产aⅴ精品中极品| 亚洲欧洲国产日韩| 成人自拍视频在线观看| 精品成人一区二区三区| 麻豆成人av在线| 3d成人h动漫网站入口| 婷婷亚洲久悠悠色悠在线播放| 色悠悠亚洲一区二区| 亚洲精选视频免费看| 在线一区二区视频| 亚洲超丰满肉感bbw| 欧美精品国产精品|