<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于ISP1581的USB數據采集系統的實(shí)現

基于ISP1581的USB數據采集系統的實(shí)現

作者: 時(shí)間:2013-09-11 來(lái)源:網(wǎng)絡(luò ) 收藏

  本設計中選用了Philips公司的2.0接口芯片,該芯片屬于純粹的接口芯片。這類(lèi)接口芯片價(jià)格較低,接口方便,靈活性高,針對不同的硬件環(huán)境可以配合多種MCU使用,如單片機、DSP、FPGA。支持2種工作模式:通用處理器模式和斷開(kāi)總線(xiàn)模式。本設計中采用DSP來(lái)控制,連接方式選用通用處理器模式,原理圖如圖3所示。


  2 USB接口軟件開(kāi)發(fā)

  軟件分為USB固件程序開(kāi)發(fā)和USB設備驅動(dòng)程序開(kāi)發(fā)兩大部分。

  2.1 USB固件程序開(kāi)發(fā)

  所有基于微處理器及其外圍電路的功能設備的正常工作都離不開(kāi)固件的參與,固件的作用就是輔助硬件,即控制硬件來(lái)完成預期的功能,如沒(méi)有固件的參與和控制,硬件設備只是芯片簡(jiǎn)單的堆砌,無(wú)法實(shí)現預期的功能,如同一臺沒(méi)有安裝操作系統的計算機,無(wú)法正常工作。因此,用戶(hù)必須編寫(xiě)固件程序來(lái)輔助硬件完成USB通信任務(wù)。具體如下:

  (1)初始化。主要是設置一些特殊寄存器的初值,以實(shí)現所需的設備屬性或功能,例如開(kāi)中斷、使能端點(diǎn)、配置端口等。

  (2)輔助硬件完成設備的重新枚舉(ReNumeration)過(guò)程。包括模擬設備的斷開(kāi)與重新連接,對收到的設置包進(jìn)行分析判斷,從而對主設備請求做出適當的響應,完成對設備的配置任務(wù)。

  (3)對中斷的處理。

  (4)數據的接收和發(fā)送。

  (5)外圍電路的控制。

  固件程序設計成中斷驅動(dòng)模式,采用模塊化設計,其總體結構如圖4所示。


  各模塊的主要功能如下:

  (1)主程序:完成DSP及USB接口芯片的初始化、數據發(fā)送/接收標志位的判斷及中斷請求等待。

  (2)中斷服務(wù)程序:中斷服務(wù)程序是整個(gè)固件程序設計的重點(diǎn)。首先通過(guò)讀取ISP1581中斷寄存器的值判斷所發(fā)生中斷的類(lèi)型,然后根據具體的中斷類(lèi)型進(jìn)入相應的處理子程序或設置相應的標志位。中斷服務(wù)程序中需要處理的有總線(xiàn)復位中斷、高速狀態(tài)變化中斷、SETUP中斷及端點(diǎn)的IN/OUT中斷。在所有的中斷處理程序中,EP0SETUP中斷處理是最重要的,它是USB設備與PC機間建立通信鏈路的基礎。

  (3)請求處理程序:USB標準請求處理程序負責處理枚舉階段主機發(fā)給設備的標準請求,以及正常工作時(shí)主機發(fā)送的廠(chǎng)商請求。USB2.0協(xié)議中規定了11種USB標準請求,對這11種標準請求作出正確的響應是設備成功枚舉的重中之重。當固件接收到第1個(gè)SETUP中斷后,就進(jìn)入USB枚舉過(guò)程,其過(guò)程是由主機發(fā)出一系列USB標準設備請求并要求及時(shí)得到設備響應,如果不需要進(jìn)行操作,也必須指示一個(gè)空響應,使主機能為該設備準備其所請求的資源,建立好兩者之間的信息溝通機制。

  (4)數據接收/發(fā)送程序:當用戶(hù)通過(guò)主機端應用程序向設備索要數據或向設備發(fā)送數據時(shí),DSP調用數據發(fā)送/接收子程序完成數據的發(fā)送/接收。數據的發(fā)送和接收過(guò)程如下:

  發(fā)送數據:選擇端點(diǎn)索引→寫(xiě)發(fā)送緩沖區長(cháng)度寄存器→寫(xiě)發(fā)送數據到數據端口寄存器→等待發(fā)送完畢標志。

  接收數據:選擇端點(diǎn)索引→讀接收緩沖區長(cháng)度寄存器→從數據端口寄存器讀取接收到的數據。

  (5)硬件接口訪(fǎng)問(wèn)程序:硬件接口程序負責完成DSP對ISP1581的讀寫(xiě)操作,它是整個(gè)固件程序中最底層也是使用最頻繁的部分,在這里主要定義了2種類(lèi)型的函數:ISP1581常用寄存器訪(fǎng)問(wèn)函數和數據端口寄存器訪(fǎng)問(wèn)函數。

  常用寄存器訪(fǎng)問(wèn)函數:

  void outport(unsigned int *reg_addr, unsigned short value);

  unsigned short inport(unsigned int *reg_addr);

  數據端口寄存器訪(fǎng)問(wèn)函數:

  void write_ep(unsigned short *addr, unsigned short size);

  unsigned short read_ep(unsigned short *addr);

  write_ep為寫(xiě)端點(diǎn)發(fā)送緩沖區函數,其中參數*addr為指向待發(fā)送緩沖區的起始地址指針,參數size為要發(fā)送數據的字節數;read_ep為讀端點(diǎn)接收緩沖區函數,參數含義與write_ep函數相同,返回值為接收數據的字節數。



關(guān)鍵詞: ISP1581 USB 數據采集系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>