新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于USB通信的多功能智能插座

        基于USB通信的多功能智能插座

        作者: 時間:2013-10-26 來源:網絡 收藏

        3.2 通信硬件電路設計

          本文我們選用89C52單片機作為該系統的微控制器。PDIUSBD12和89C52的電路連接如圖1所示:

        圖1 USB接口通信電路

        3.3 通信系統軟件設計

        3.3.1 USB設備開發

          Windows2000提供了一些常見USB設備的,但是要使D12構成的USB設備正常工作仍需要自己編寫。盡管系統已經提供了很多標準接口函數,但編制驅動程序仍然是USB開發中最困難的,通常采用Windows DDK來實現。

        3.3.2 USB設備固件(firmware)設計

          設備固件是設備運行的核心,采用匯編語言設計。其主要功能是控制芯片PDIUSBD12接受并處理USB驅動程序的請求(如請求設備描述符、請求或設置設備狀態、請求設備設置、請求或設置設備接口等共10種USB1.1標準請求);控制芯片PDIUSBD12接受應用程序的控制指令;控制A/D模塊的數據采集;通過PDIUSBD12存儲數據并實時上傳PC。

          下位機程序主要的工作是初始化D12,通過D12進行數據傳輸以及按協議對數據進行格式轉換。USB單片機控制程序通常由三部分組成:第一,初始化部分,完成單片機和所有的外圍電路(包括D12)的初始化;第二,主循環部分,等待來自數據采集設備或上位機的數據,并啟動數據格式轉換程序,進行數據通信,是固件的主體部分;第三,中斷服務程序,由上位機和數據采集設備觸發,進行一些低工作量的實時處理(如置相應標志位),然后在主循環部分對數據作進一步的處理。

        PDIUSBD12的初始化過程如下:

          (1) 設置地址使能;

          (2) 設置端點(EndPoint)使能(這時候LED亮);

          (3) 軟斷開(Disconnect);

          (4) 延時(1~2s);

          (5) 軟連接(Soft Connect ,用Set Mode命令,此時LED滅);

          (6) 中斷使能,等待中斷。

          (7)響應來自主機的Setup包,完成枚舉。步驟3~5就是利用Soft Connect TM技術,不必進行物理插拔而使主機初始化USB總線。雖然USB協議對枚舉過程作了統一的規定,但是不同公司的芯片實現起來可能有所不同。USB枚舉的過程實際上就是主機和USB設備的一個握手過程:主機發送出包含某個枚舉請求的Setup包,USB設備響應該請求并返回必要的信息。在主機得到所需要的所有USB設備的信息之后,枚舉即告結束。

          D12構成的USB設備的枚舉過程如下:(1)Get Device Descriptor: 主機請求代碼為8006000100004000,然后89C52通過D12發送設備描述符,第一次只需發送設備描述的前8個字節,如:1201000100000010。(2)Set Address: 主機請求代碼為0005020000000000,說明主機設置其地址為0X02,收到該請求后D12只需使能該地址(0X82),并對控制輸入端寫0長度的數據。(3)讀取全部Device Descriptor: 主機請求代碼為8006000100001200,與1不同的是此時是讀取全部設備描述符,一般為18個字節,可以分為多次傳輸,D12發送的前8字節與1相同,后10個字節為:71048888000100000001。其中,前兩個字節是廠商ID(VID),本例中的為0X0471,即分配給Philips公司的ID號。后兩個字節是設備ID(PID),設計定義為0X8888。VID和PID決定了驅動程序的匹配,一定要與最后生成的主機驅動程序一致。(4)Get Config Descriptor: 主機請求代碼為8006000200000900,根據USB協議的定義,第四字節的0X02表明該請求是一配置描述符請求。D12發送9字節的配置描述符給主機,為09022e000101006001。(5)讀取全部Config Descriptor: 主機請求代碼為8006000200001200,此時D12必須把包括配置描述符、接口描述符、各端點(D12為四個)的描述符在內的所有的配置情況分多次發送給主機。(6)如果以上步驟都正確,主機將找到新設備,提示安裝驅動程序,否則找到未知設備,不可用。安裝驅動程序后,以后的每次設備插入,枚舉次序與以上步驟略有不同,之后會有Set Configuration、Get Configuration和Get Interface等調用。

        3.3.3系統應用程序設計

          PC機應用程序是該插座數據采集系統的中心,采用VC++6.0編程。其功能主要有:開啟或關閉USB設備、檢測USB設備、設置USB數據傳輸管道(pipe)、設置A/D狀態和數據采集端口、實時從USB接口采集數據、存儲顯示并分析數據。程序主框圖如圖2所示:

        4.工業用的智能監測插座

        4.1 在工業現場的局限

          USB電纜的最大傳輸距離是5米,因此上述的方案僅適用于家庭用的監測插座。即使增加了中繼或HUB,USB傳輸距離通常也不超過幾十米,這對工業現場而言顯然是太小了。目前,工業現場有大量采用RS-485傳輸數據的采集設備。RS-485總線傳輸距離可以達到1200m以上,并且可以掛接多個設備。不足之處是傳輸速度慢、可靠性差、需要板卡的支持、成本高、安裝麻煩等。RS-485的這些缺點恰好能被USB所彌補,而USB傳輸距離的限制又是RS-485的優勢所在。為此,我們采用一種RS-485和USB的接口轉換卡來解決上述問題。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 林州市| 邮箱| 英超| 德保县| 十堰市| 卓尼县| 福泉市| 萝北县| 名山县| 贵溪市| 砚山县| 南涧| 西平县| 珠海市| 二手房| 安平县| 饶河县| 五河县| 泰顺县| 屏南县| 长兴县| 安平县| 博湖县| 和硕县| 陆良县| 防城港市| 射洪县| 余江县| 金秀| 清水县| 绥阳县| 平乐县| 大安市| 旬邑县| 盖州市| 崇左市| 彭阳县| 锦州市| 洮南市| 龙南县| 临朐县|