新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于P89C61x2/ISP1581的USB接口電路的設計

        基于P89C61x2/ISP1581的USB接口電路的設計

        作者: 時間:2012-03-09 來源:網絡 收藏

          本設計采用控制芯片和接口芯片實現電路的設計。

          包含1024B RAM、64KB Flash存儲器、32個I/O口、3個16位定位/計數器、6個中斷源-4個中斷優先級-嵌套的中斷結構、1個增強型UART、片內振蕩器和時鐘電路。此外,器件的靜態設計使其具有非常寬的頻率范圍,可選擇1MHz~12MHz的 晶體振蕩器。具有兩個軟件可選的節電模式-空閑模式和掉電模式。

          芯片是一種價格低、功能強的器件,符合USB2.0規范,并為基于微控制器或微處理器的系統提供了高速USB通信能力;具有7個IN端點,7個OUT端點和1個固定的控制IN/OUT端點;可以通過軟件控制與USB總線的連接;內部集成了帶PLL的12MHz晶體振蕩器;可通過內部上電復位、低電壓復位電路和軟件復位。

          系統硬件設計

          系統的連接框圖如圖1所示。

        系統的連接框圖


          有兩種工作模式:通用處理器工作模式和斷開總線工作模式。本文的硬件設計中通過設置BUS-CONF=0實現斷開總線 的工作模式。AD[7:0]為8位的多路復用地址/數據,與單片機的P0口連接;DATA[15:0]為16位的數據總線。MODE0接高電平,表示讀或寫信號工作在8051類型;ALE與單片機的ALE相連,實現地址鎖存;RPU為USB D+線的外部上拉電阻連接端,通過一個1.5kΩ電阻與Vcc(3.3v)相連;RREF連接外部偏置電阻,通過一個12.0kΩ電阻同地端相連,使高速收發器得到一個精確的鏡電源。為了實現良好的EMC特性,所有的電源引腳均連接到由0.01μF和0.1μF電容并聯后的網絡中。

          系統的固件設計

          單片機的固件是USB設備運行的核心。主要包括以下幾個部分:

          Kerne1.c:循環掃描USB事件;啟動設備和系統的工作;

          Isr.c:中斷服務程序;

          Chap9.c.包含標準USB命令,用于在設備和主機之間建立一個基本連接;

          Vendor.c:包含廠商定義命令,處理廠商請求;

          Init.c:初始化單片機和ISP1581芯片。

          初始化程序主要初始化各種狀態變量,包括單片機的初始化以及設置ISP1581寄存器。主要包括地址寄存器、模式寄存器、中斷配置寄存器,中斷使能寄存器以及端點寄存器等。

          USB設備采用控制傳輸完成枚舉,從而判斷出設備的狀況。

          數據傳輸過程采用中斷方式,單片機通過讀取中斷寄存器的狀態判斷中斷源,并進入相應的中斷處理程序。ISP1581主要有SETUP中斷、總線掛起中斷以及端點輸入/輸出中斷等,控制端點設置64B的緩沖區,每次只能傳輸64B,傳輸的數據量由單片機控制。若傳輸的字節數大于64B,將先傳輸64B,然后判斷剩下的字節數,同時確定是否為空包或短包。如果沒有數據傳送到單片機,將發送一個空包表明數據發送完畢。

          固件主要完成設備初始化、USB協議標準請求處理以及其它應用程序如數據交換功能。程序采用C51語言編寫,使用 Keil公司的uVision2編譯器進行編譯。

          固件的主循環流程見圖2。

        固件的主循環流程

          設備驅動程序和應用程序的設計

          USB設備驅動程序的開發,可采用Drivel Works和Microsoft公司的2000DDK,并以VC++6.0作為開發環境。為了方便用戶開發USB接口,在DP-1581的開發包中提供了一個通用驅動程序,該程序可不加修改,直接使用。在本電路設計中,采用的是開發版自帶的驅動程序。

          結語

          本系統將原有的并口改進為USB接口,支持即插即用和熱插拔.經實際試驗驗證,本系統性能穩定可靠,具有一定的實際應用價值。



        關鍵詞: USB接口 P89C61x2 ISP1581

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 通江县| 金门县| 蓬溪县| 龙山县| 诏安县| 普陀区| 台北市| 诸城市| 五原县| 武宁县| 侯马市| 甘南县| 灵武市| 东乌| 维西| 新竹市| 芷江| 凤冈县| 额济纳旗| 敖汉旗| 垣曲县| 紫阳县| 马关县| 潢川县| 山西省| 五指山市| 沂水县| 邢台市| 略阳县| 安仁县| 高雄市| 陆河县| 宜兰县| 永顺县| 班玛县| 固安县| 汤原县| 天台县| 建宁县| 长泰县| 田阳县|