国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ISP1581的USB數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)

基于ISP1581的USB數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)

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

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


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

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

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

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

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

  (2)輔助硬件完成設(shè)備的重新枚舉(ReNumeration)過(guò)程。包括模擬設(shè)備的斷開與重新連接,對(duì)收到的設(shè)置包進(jìn)行分析判斷,從而對(duì)主設(shè)備請(qǐng)求做出適當(dāng)?shù)捻憫?yīng),完成對(duì)設(shè)備的配置任務(wù)。

  (3)對(duì)中斷的處理。

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

  (5)外圍電路的控制。

  固件程序設(shè)計(jì)成中斷驅(qū)動(dòng)模式,采用模塊化設(shè)計(jì),其總體結(jié)構(gòu)如圖4所示。


  各模塊的主要功能如下:

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

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

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

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

  發(fā)送數(shù)據(jù):選擇端點(diǎn)索引→寫發(fā)送緩沖區(qū)長(zhǎng)度寄存器→寫發(fā)送數(shù)據(jù)到數(shù)據(jù)端口寄存器→等待發(fā)送完畢標(biāo)志。

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

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

  常用寄存器訪問(wèn)函數(shù):

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

  unsigned short inport(unsigned int *reg_addr);

  數(shù)據(jù)端口寄存器訪問(wèn)函數(shù):

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

  unsigned short read_ep(unsigned short *addr);

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



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉