<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > USB-HOST實(shí)時(shí)數據采集嵌入式模塊的實(shí)現

USB-HOST實(shí)時(shí)數據采集嵌入式模塊的實(shí)現

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

摘要:提出利用SL811HS和8位單片機實(shí)現USB-Host。該系統的數據傳輸,遵守大規模存儲協(xié)議和USB 1.1協(xié)議規范,可作為嵌入式設備的數據輸入輸出模塊。它以文件的形式,與Slave端的USB移動(dòng)存儲器進(jìn)行數據傳輸。

關(guān)鍵詞:SL811HS 大規模存儲協(xié)議 USB1.1

引言

隨著(zhù)數據采集系統、工控行業(yè)和嵌入式用戶(hù)對移動(dòng)存儲的需求越來(lái)越大,傳統的通過(guò)軟盤(pán)、串行口(RS232/RS485)或以太網(wǎng)等傳輸數據的方式已不能滿(mǎn)足當前數據存儲和交換的需求。如何在中實(shí)現USB移動(dòng)存儲已成為急需解決的問(wèn)題。

本文提出利用SL811HS和8位單片機實(shí)現的一種方案。它帶有標準USB數據總線(xiàn)接口,完全遵守USB 1.1協(xié)議和大規模存儲協(xié)議規范。移動(dòng)存儲設備的文件操作方式支持FAT16文件系統。

1 嵌入式模塊原理

USB技術(shù)規范將使用USB進(jìn)行數據傳輸的雙方劃分為兩種角色――Host和Slave,并且規定,數據傳輸只能發(fā)生在Host和Slave之間。目前,絕大多數Host功能角色被集成在各種類(lèi)型的PC機上,如筆記本電腦、臺式機、Mac機及服務(wù)器等;而各種各樣的基本USB的移動(dòng)設備都集成了USB Slave功能角色,例如U盤(pán)、帶USB接口的數碼相機等。這樣,就導致這些作為USB Slave的USB接口的數字設備中的數據,離開(kāi)PC機無(wú)法讀寫(xiě)。解決這一問(wèn)題的根本辦法就是在需要使用USB設備的系統中集成USB Host功能模塊,使之具有與USB Slave設備進(jìn)行數據傳輸的能力。

利用SL811HS和8位單片機實(shí)現的系統完成了USB Host功能,并且提供了USB總線(xiàn)的接口方式。它可以作為一個(gè)數據接口模塊集成到用戶(hù)的嵌入式系統中,使用戶(hù)系統能夠讀/寫(xiě)作為Slave的USB移動(dòng)存儲器,從而完成數據存儲和交換功能。由于它支持FAT16文件系統,所以可以將用戶(hù)系統發(fā)來(lái)的數據以文件的方式存儲到USB移動(dòng)存儲器中,因此,用戶(hù)可以在需要時(shí),將USB移動(dòng)存儲器取出,并拿到自己數據處理中心的PC機,直接將采集到的數據進(jìn)行分析,極大地方便了用戶(hù)數據的采集和處理。其原理如圖1所示。

2 SL811HS芯片介紹

Cypress公司提供的USB嵌入式主控制器芯片SL811HS具有標準的微處理器總線(xiàn)接口,可以提供全速(12Mb/s)和低速(1.5Mb/s)USB數據轉換。圖2為SL811HS主從控制功能模塊。

它具有以下功能:

①自動(dòng)檢測全速或低速設備;

②8位雙向數據輸出端口;

③集成芯片的串行接口驅動(dòng)和USB接收;

④256字節內部SRAM緩存,乒乓處理;

⑤自動(dòng)生成內部幀同步和CRC5/16校驗;

⑥自動(dòng)地址增益模式,可以節省存儲器讀寫(xiě)周期。

3 硬件電路設計

圖3為SL81HS電路設計圖,在實(shí)際項目中已經(jīng)得到了應用。

其中AD0~AD7、CS、RD、WR均與單片機89C51相連,由單片機進(jìn)行控制。雖然SL811HS可以使用12MHz晶振,然而在實(shí)際使用過(guò)程中發(fā)現,當晶振質(zhì)量不太好時(shí),電路穩定性較差,故建議在條件許可的情況下,盡量使用48MHz的有源晶振。

4 SL811HS的工作過(guò)程

①通過(guò)SL811HS向從機發(fā)送數據過(guò)程。接收數據過(guò)程同發(fā)送數據過(guò)程類(lèi)似。

②通過(guò)SL811HS向從機發(fā)送數據的Ping-Pong方式的實(shí)現。若有大量的數據(如以512字節為最小單位的扇區寫(xiě)操作)需要傳送,就要考慮到Ping-Pong傳送。其具體過(guò)程為:

*向BUFFER中同時(shí)寫(xiě)入2個(gè)幀;

*發(fā)出第1個(gè)幀;

*等待確認信息;

*收到確認信息后發(fā)出第2個(gè)幀,在第1個(gè)幀的位置上填充第3個(gè)幀,同時(shí)開(kāi)始等待確認信息。

Ping-Pong方式利用等待的時(shí)隙,填充BUFFER,可以極大提高系統的性能,在不改變其它條件的情況下,提高速度。

5 大規模存儲過(guò)程

大規模存儲是CPU和移動(dòng)存儲設備打交道的接口程序,通過(guò)調用大規模存儲程序,可以得知移動(dòng)存儲設備文件分區表中的DBR、FAT表、文件目錄表等的起始位置,并且可以獲得移動(dòng)存儲設備某些地址區間的一系列數值。Windows系統可以自動(dòng)支持大規模存儲協(xié)議,使主機可以自如訪(fǎng)問(wèn)移動(dòng)存儲設備;然而在單獨開(kāi)發(fā)此嵌入式模塊時(shí),大規模存儲協(xié)議須自己編寫(xiě)。

下面為通過(guò)大規模存儲協(xié)議訪(fǎng)問(wèn)移動(dòng)存儲設備的部分程序。

if(!SPC_RequestSense()) return FLASE;

//轉換數據狀態(tài)到主機

if(!SPC_TestUnit()) returnFALSE; //檢測UFI設備狀態(tài)

if(!RBC_ReadCapacity()) return FLASE; //主機讀取的最大容量

if(!RBC_Read(0x0,1,DBUF)) return FLASE;//主機讀0x0開(kāi)始的一個(gè)數據塊到DBUF

//以上為大規模存儲的各個(gè)命令塊,運行成功,則繼續。

if(DBUF[0]==0xeb||DBUF[0]==0xe9)

DeviceInfo.StartSector=0;

Else

DeviceInfo.SartSector=SwapINT32(pMBR->StartSector);

pBPB=(PBPB_BLOCK)DBUF; //引導扇區DBR的BRB塊定義

if(!RBC_Read(DeviceInfo.StartSector,1,DBUF)) return FLASE;

DeviceInfo.BPB_BytesPerSec=SwapINT16(pBPB->BPB_BytesPerSec);

DeviceInfo.PBP_SecPerClus=pBPB->BPB_SecPerClus;

DeviceInfo.BPB_NumFATs=pBPB->BPB_NumFATs;

DeviceInfo.BPB_RootEntCnt=SwapINT16(pBPB->BPB_RootEntCnt);

DeviceInfo.BPB_TotSec16=SwapINT16(pBPB->BPB_TotSec16);

DeviceInfo.BPB_FATSz16=SwapINT16(pBPB->BPB_FATSz16);

DeviceInfo.BPB_TotSec32=SwapINT32(pBPB->BPB_TotSec32);

SeviceInfo.FatStartSector=DeviceInfo.StartSector+1;

SeviceInfo.RootStartSector=DeviceInfo.StartSector+2*DeviceInfo.BPB_FATSz16+1;

DeviceInfo.FirstDataSector=DeviceInfo.FatStartSector+2*DeviceInfo.BPB_FATSz16+32;

/*以上為各個(gè)部分存儲位置即每扇區字節數、每簇扇區數、FAT表起始扇區、根目標起始扇區、數據區起始扇區等。*/

6 系統的整個(gè)工作流程

通過(guò)單片機定時(shí)器0檢測設備狀態(tài),如果發(fā)現從設備接入,則觸發(fā)外部中斷0。當從設備發(fā)現后,通過(guò)SL811HS進(jìn)行設備枚舉,設置設備地址、數據描述和配置,然后通過(guò)大規模存儲協(xié)議訪(fǎng)問(wèn)從設備文件系統。發(fā)讀或寫(xiě)命令,對從設備進(jìn)行讀寫(xiě),最后反饋?lái)憫a。

7 總結

本文描述了SL811HS芯片和大規模存儲協(xié)議的應用,介紹了基于8位單片機實(shí)現USB-HOST的整個(gè)過(guò)程。此系統已經(jīng)過(guò)試驗,能夠完成對從設備的直接讀寫(xiě)數據,查看從設備目標及從設備剩余存儲空間等一系列操作,穩定性較強;可廣泛地應用于數據采集系統、工控行業(yè)等領(lǐng)域,具有一定的實(shí)用價(jià)值。



評論


相關(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>