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

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

?? usb_kf.txt

?? 描述帶USB的單片機如何跟PC機通訊的過程,和上位機做USB驅動所需要的步驟
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
一,概述
現在很多的主控上都帶有USB的功能,但是對于初學者來說,這方面應用還是比較棘手,因為usb的不但固件程序需要編寫,PC端的驅動也要編寫,而且驅動寫好了還要寫個上位機才能看出效果。這樣調試起來十分困難,建議從USB的鍵盤,鼠標開始做,了解清楚了,再做自己的協議就比較簡單了。
USB的概念歷史啥的這里就不說了。我們先不管具體的數據包格式,這一節先從整個包的層面上簡單的說,過程是這樣的,
---------------------------------------設備插入-------------------------------------------------------------
1)    主機會輪回查詢各個USB端口,主機檢測到D+與D-之間有電壓差,就認為有新的設置接入。主機等待100ms后發出復位請求。設備接到復位請求后將產生一個外部中斷信號。
---------------------------------------枚舉過程------------------------------------------------------------
2)    主機這時候只是知道有新的設備插入了,但是不知道插進來個什么東西,所以就開始詢問它是什么設備,怎么用,負荷能力怎么樣。這個時侯就進入了枚舉過程。因為剛剛插入的設備沒有分配地址,就用默認地址0,首先發送一個Get_descriptor(獲取設備描述符)指令包,設備接到包后就開始解析包(其實就是你在固件程序里判斷處理) ,然后按固定格式返回自己設備的設備描述符,這一步主要是主機知道你的USB設備的基礎屬性,比如支持的傳輸數據長度,電流負荷多少,支持那個USB版本,以及以后方便電腦找驅動的PID,VID。
3)    這時候主機知道你(你做的設備,簡稱你吧)的數據長度還有電流大小后,下一步就是給你分配一個屬于你的地址。
4)    給你一個地址后就開始詢問你的具體配置。首先發送一個試探性的設備配置請求Get_configuration(要求固定返回9個設備配置字),你接到后就開始發送9字節的設備配置字,其中包括你的配置字的總長度,這樣主機就知道你的配置到底有多長,然后再發一次設備配置請求,這時你就開始上傳所有的配置字。這個時侯主機就已經很明白你的工作方式就各種特性,然后就可以正常工作了
5)    如果你在前面的某些配置(以后章節詳細說明)要求要說明自己的名字什么的,這里還要上傳字符串描述符。
6)    如果是鼠標或者鍵盤還要上傳報告描述符
---------------------------------------正常數據階段------------------------------------------------------
7)    這個時侯你已經被主機正式接受并且注冊了,你可以通過自己寫測驅動或通用驅動與電腦進行通訊了。

以上是簡單的描述,詳細的后面章節再做介紹,學習一個東西關鍵是首先要知道這個東西是什么,簡單的工作原理。對于USB的工作我這里做個比方,
     主機好比一個公司,你就是USB設備,要進入公司首先要面試(枚舉),你到了面試現場(第一次插入設備),面試官首先了解到你的外表,性別已經你要應聘的崗位(設備描述符),然后給你一個號,以后就開始按號叫人,當你被叫到就開始問你的專業知識,性格等(配置描述符),如果你比較合適(通過了枚舉)你就會錄取了,并且注冊一個你的信息到公司(驅動安裝,并且寫入注冊表)。等你下次來公司,只要把工號(PID,VID)報上,就知道是你來了。










二,實際數據過程測試
(圖片顏色顯示不出,可以到我博客http://blog.csdn.net/arthur05611/archive/2009/02/23/3929778.aspx)
這節主要是對固件里的USB請求處理有個概念,還有就是調試的方法。大篇幅的程序配合,如果不關心這一塊的話可以跳過,呵呵。
為了更好的說明整個USB啟動過程,我們可以用串口實時的跟蹤各個USB中斷。不過這里先不用串口進行測試,只是簡單的用一組變量記錄過程。測試程序如下(以下會有程序的說明):

uchar test[100];//100長度的變量,記錄過程
uchar conters=0;//記錄計數值,
/*------------------------------------------------------------
        高校電子聯盟--肖繼達
     QQ:258347765    
-------------------------------------------------------------*/

void EXT_int(void)//USB中斷響應函數
{
    /*------------------------------------------------------------
          Check interrupt status register to know interrupt
       source.
    ------------------------------------------------------------*/

    if (USB_BUSRESET_ASS_INT())
    {   /* USB bus reset */
        /*  for USB Rev.1.1
                     After USB bus reset released, 10msec recoverly time we have.
                     Follwing request must be processed normally.
        */

        CLR_BUS_RESET_STATE();  /* USB bus reset status clear */

        /*------------------------------------------------------------
           Endpoint0 setting
        ------------------------------------------------------------*/
        /* Tx/Rx payload size setting */ 
        /* Rx payload is fixed as 8-byte or 32-byte, therefor the 
           setting has no meaninig */

        SET_PAYLOAD_EPn(EP0RX, device_descriptor.bMaxPacketSize0);
        SET_PAYLOAD_EPn(EP0TX, device_descriptor.bMaxPacketSize0);
        /* Stall bit, the value undefined after reset, cleared */
        CLR_STALL_EPn(EP0);
              
        /*------------------------------------------------------------
           Misceronous status variable initialization
        ------------------------------------------------------------*/
        usb_status.configuration = NULL;
        usb_status.remote_wakeup = 0;
        usb_status.address = 0;
        usb_status.dvcstate = DEFAULT_STATE;    /* Device state :DEFAULT */
        usb_status.stall_req = 0;
               #ifdef Debug
                     test[conters]='!';
                     conters++;
                     #endif

        /*------------------------------------------------------------
           Callback to application layer
        ------------------------------------------------------------*/
        (*usb_status.callback)();
    }
    else if (SUSPENDED_INT())
    {   /* suspended state */
        /* for USB Rev.1.1
                     Transit to suspended state after detect the USB line has kept idle over 3msec.
                     After resume detected, end suspend state in 3msec to be able to respond
                     the host request.
        */
              CLR_SUSPENDED_STATE();
                     #ifdef Debug
                     test[conters]='@';
                     conters++;
                     #endif

    }

    else if (AWAKE_INT())
    {   /* Deveice awake state */
        /* AWAKE procedure */

        CLR_AWAKE_STATE();          /* Request clear */
                     #ifdef Debug
                     test[conters]='#';
                     conters++;
                     #endif

    }
    else if (USB_BUSRESET_DES_INT())
    {   /* USB bus reset deassert */
        /* Procedure for USB bus reset de-assert */
        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费在线播放| 国产精品久久久久久户外露出| 日韩天堂在线观看| 亚洲丝袜自拍清纯另类| 六月丁香婷婷色狠狠久久| 99国产精品久久| 久久婷婷国产综合国色天香| 丝袜脚交一区二区| 欧美在线你懂得| 亚洲欧美综合色| 国产精品亚洲一区二区三区妖精| 欧美日韩国产免费| 综合久久国产九一剧情麻豆| 懂色中文一区二区在线播放| 精品国产青草久久久久福利| 日韩国产精品91| 欧美日韩三级一区| 亚洲一线二线三线久久久| av成人动漫在线观看| 国产亚洲成av人在线观看导航| 老司机免费视频一区二区三区| 欧美视频在线一区二区三区 | 亚洲午夜一区二区| 97久久精品人人澡人人爽| 国产精品人人做人人爽人人添| 国产一区二区看久久| 久久这里只精品最新地址| 久久黄色级2电影| 精品日韩99亚洲| 国产伦精品一区二区三区视频青涩 | 欧美日韩久久久一区| 亚洲视频免费在线| 色噜噜狠狠成人中文综合 | 一区二区三区在线视频观看58| www.一区二区| 亚洲男女一区二区三区| 在线观看网站黄不卡| 一个色妞综合视频在线观看| 欧美在线免费观看视频| 首页综合国产亚洲丝袜| 91精品欧美综合在线观看最新| 日韩精品一二三区| 久久综合狠狠综合久久综合88 | 三级一区在线视频先锋| 欧美精品精品一区| 久久成人免费电影| 国产日韩精品一区二区浪潮av| 不卡的av网站| 午夜婷婷国产麻豆精品| 91精品国产乱| 国产精品系列在线播放| 亚洲欧洲av在线| 宅男噜噜噜66一区二区66| 国产一区不卡视频| 国产精品视频一二三区| 欧美色国产精品| 国产在线日韩欧美| 成人欧美一区二区三区在线播放| 在线免费av一区| 精彩视频一区二区| 亚洲欧洲日本在线| 91精品国产综合久久福利| 国产乱妇无码大片在线观看| 亚洲免费观看高清完整版在线观看 | 国产精品 欧美精品| 亚洲精品久久嫩草网站秘色| 日韩三级av在线播放| 不卡一区二区在线| 男人的天堂亚洲一区| 亚洲欧美一区二区视频| 欧美成人video| 在线观看欧美日本| 国产aⅴ综合色| 日本欧美加勒比视频| 中文字幕一区二区三区乱码在线| 欧美一区二区三区免费观看视频 | 国产69精品久久久久毛片| 五月天久久比比资源色| 国产精品私人影院| 精品免费视频一区二区| 欧美专区在线观看一区| 风流少妇一区二区| 日本三级亚洲精品| 亚洲综合色区另类av| 国产日韩精品久久久| 日韩欧美一区电影| 欧美视频一区在线| fc2成人免费人成在线观看播放| 日本不卡视频一二三区| 亚洲天天做日日做天天谢日日欢| 26uuu欧美| 欧美一区二区大片| 欧美三级在线看| 一本到一区二区三区| www..com久久爱| 国产成人亚洲综合a∨婷婷| 日本不卡高清视频| 日韩专区中文字幕一区二区| 亚洲激情一二三区| 亚洲视频每日更新| 国产精品免费aⅴ片在线观看| 亚洲色图欧美激情| 中文字幕不卡在线| 久久久久高清精品| 日韩欧美国产精品| 欧美一区永久视频免费观看| 欧美在线观看一区| 91福利在线导航| 欧美性大战久久| 91传媒视频在线播放| 色婷婷亚洲精品| 在线亚洲欧美专区二区| 91亚洲精品乱码久久久久久蜜桃| 99这里只有精品| 波多野结衣在线aⅴ中文字幕不卡| 国产一区二区三区观看| 国产v综合v亚洲欧| 成人精品一区二区三区中文字幕 | 欧美高清视频www夜色资源网| 欧美日韩国产小视频| 91精品黄色片免费大全| 制服丝袜一区二区三区| 欧美xxxxxxxxx| 国产午夜一区二区三区| 日本一区二区三区高清不卡| 国产精品女人毛片| 亚洲老妇xxxxxx| 图片区小说区国产精品视频| 香蕉乱码成人久久天堂爱免费| 婷婷综合另类小说色区| 美女看a上一区| 粉嫩一区二区三区性色av| 成人av网站在线观看免费| 色哟哟在线观看一区二区三区| 欧美日韩免费高清一区色橹橹| 91精品国产综合久久福利| 久久久久久久久岛国免费| 中文字幕日韩一区二区| 亚洲成a天堂v人片| 精品一区二区三区免费观看| a级精品国产片在线观看| 一本到三区不卡视频| 69精品人人人人| 国产人妖乱国产精品人妖| 亚洲美女区一区| 久久99久久精品| 99re视频精品| 日韩精品一区二区在线| 中文字幕亚洲一区二区av在线 | 色综合久久中文字幕| 91精品国产高清一区二区三区| 国产日韩欧美高清| 天堂在线亚洲视频| 成人夜色视频网站在线观看| 欧美日本一区二区在线观看| 亚洲国产精品ⅴa在线观看| 五月天激情综合| 成人精品视频网站| 日韩亚洲欧美中文三级| 亚洲欧美日韩电影| 国产一区二区三区精品视频| 色八戒一区二区三区| 久久先锋影音av鲁色资源| 亚洲第一狼人社区| 成人小视频在线观看| 日韩欧美在线观看一区二区三区| 中文字幕人成不卡一区| 国产主播一区二区三区| 91超碰这里只有精品国产| 国产精品久久久久久久浪潮网站| 青青青爽久久午夜综合久久午夜| 99久久综合国产精品| 久久综合久久鬼色中文字| 性做久久久久久免费观看| 99re成人精品视频| 中文乱码免费一区二区 | 亚洲a一区二区| 91亚洲国产成人精品一区二三 | 日本欧美一区二区三区| 日本道色综合久久| 国产精品午夜久久| 国产经典欧美精品| 久久免费视频色| 久久国产精品一区二区| 欧美日韩成人综合在线一区二区| 亚洲欧美偷拍卡通变态| 成人免费av资源| 亚洲国产精品精华液ab| 国产麻豆精品视频| 日韩三级伦理片妻子的秘密按摩| 日韩成人免费电影| 欧美一区二区成人| 日本欧美久久久久免费播放网| 欧美精品成人一区二区三区四区| 亚洲成人免费在线观看| 欧美日韩久久不卡| 日韩高清在线不卡| 日韩三级在线观看| 狠狠色狠狠色综合日日91app| 日韩精品自拍偷拍|