<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)化 > 設計應用 > 基于LPC21 32的U盤(pán)軟硬件系統設計

基于LPC21 32的U盤(pán)軟硬件系統設計

作者: 時(shí)間:2008-05-12 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要 闡述一個(gè)基于A(yíng)RM7的設計;詳細描述基于32、USB接口芯片PDIUSBDl2和Flash ROM的硬件系統設計。軟件設計主要包括D12驅動(dòng)、Mass Storage類(lèi)協(xié)議實(shí)現和Flash存儲器的讀寫(xiě)控制等。
關(guān)鍵詞 32 USB Mass Storage類(lèi)協(xié)議


引 言
USB移動(dòng)存儲技術(shù)()把USB接口技術(shù)與Flash存儲器技術(shù)結合在一起,構成了一種快速、大容量、方便的新型數據交換系統,主要構成有主控制器(MCU)、USB接口芯片和F1ash存儲器。主控制器(MCU)是系統的核心,負責控制各種外圍設備、實(shí)現各種算法、協(xié)調與主機通信;USB接口芯片負責USB通信;Flash(閃爍存儲器)用來(lái)存儲數據,它決定了U盤(pán)的容量。

1 硬件系統設計
U盤(pán)設計結構框圖如圖1所示。使用Philips公司的ARM7芯片32,控制Philips的USBl.1接口芯片PDI-USBDl2,處理PMC公司的128 KB串行F1ash存儲器作為數據存儲設備實(shí)現U盤(pán)。

(1)ARM處理器
LPC2132是基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的16/32位ARM7TDMI-S CPU,并帶有64 KB嵌入的高速Flash存儲器。LPC2132的實(shí)時(shí)仿真和跟蹤功能方便了代碼的調試,降低了開(kāi)發(fā)成本。
(2) PDIUSB012
PDIUSBDl2(簡(jiǎn)稱(chēng)為“D12”)是一款性?xún)r(jià)比很高的USB器件;通常用于微控制器系統中實(shí)現與微控制器進(jìn)行通信的高速通用并行接口;支持本地的DMA傳輸。PDIUSBDl2所具有的低掛起功耗連同LazyClock輸出可以滿(mǎn)足使用ACPI、OnNOW和USB電源管理的要求。低功耗可以應用于使用USB總線(xiàn)供電的外設。
(3)Flash存儲器
存儲器選用PMC公司的Pm25LV010。適合低功耗和低電壓下工作的應用場(chǎng)合;具有完備的數據保護功能。通過(guò)設置芯片的狀態(tài)寄存器,可以將存儲空間的高1/4、高1/2或整片寫(xiě)保護。寫(xiě)使能和寫(xiě)禁止指令進(jìn)一步保護數據。另外還提供WP引腳用于硬件數據保護,以防止對狀態(tài)寄存器的意外修改。
U盤(pán)電路原理如圖2所示。

2 軟件設計
軟件設計主要包括D12驅動(dòng)、Mass Storage類(lèi)協(xié)議和Flash存儲器的讀/寫(xiě)控制。
2.1 D12驅動(dòng)的實(shí)現
在USB設備插入主機之前,主機對這個(gè)USB設備的情況一無(wú)所知,無(wú)法建立起通信;但USB協(xié)議規定了一些最基本的準則,如每個(gè)設備的端點(diǎn)0都是可用的,屬于控制端點(diǎn)。有了這個(gè)基本的溝通途徑,主機就開(kāi)始通過(guò)端點(diǎn)0向設備提出一些問(wèn)題,這些問(wèn)題是有關(guān)設備基本情況的。這些基本情況可以反映usB設備所屬的類(lèi)別及子類(lèi),反映配置情況、接口情況和端點(diǎn)情況;一旦得知了這些信息,主機就大體了解了這個(gè)設備是個(gè)什么樣的設備,按照USB協(xié)議中的相應規定,就逐步建立起了一條介于設備之間的高速數據通道,用于數據的傳輸。主機向設備提出的這些問(wèn)題實(shí)際上就是USB協(xié)議中規定的各種標準請求,設備必須對這些問(wèn)題進(jìn)行回答;而回答的方式就是向主機傳送相應的描述符,即設備描述符、配置描述符、接口描述符、端點(diǎn)描述符。
為了使軟件可移植性強、易維護,采用分層的方法編寫(xiě)PDIUSBDl2的驅動(dòng)程序。USB驅動(dòng)程序分層結構如表1所列。

①硬件提取層(D12HAL.c)包含最底層的函數。
②D12命令接口(D12CI.c)實(shí)現PDIUSBDl2的命令接口以簡(jiǎn)化器件的編程。該層的甬數及其功能如下:
◇讀取芯片ID號,uintl6 D12_ReadChipID(void);
◇沒(méi)置地址/使能,void D12_SetAddressEnable(UINT8bAddress,UINT8 bEnable);
◇設置端點(diǎn)使能,void D12_SetEndpointEnable(UINT8 bEnablc);
◇設置模式,void D12_SetMode(uint8 bConfig,uint8bClkDiv)。
③協(xié)議層(Chap_9.c)處理標準的USB設備請求,以及特殊的廠(chǎng)商請求,如DMA等。USB主機通過(guò)標準USB設備請求,可設定和獲取USB設備的有關(guān)信息,完成USB設備的枚舉。
所有的請求都是通過(guò)端點(diǎn)0接收和發(fā)送SETUP包來(lái)完成的。接收主機SETUP包的函數為ep0_rxdone(),所有SETUP包都由函數control_handler()來(lái)處理,發(fā)送SETUP包的函數為ep0_txdone()。SETUP包的接收和發(fā)送通過(guò)控制傳輸結構仝局變量CONTROL_XFER ControlData來(lái)控制,它實(shí)現了以上3個(gè)函數之間的通信。


上述幾個(gè)函數及ControlData變量之問(wèn)的關(guān)系如圖3所示。

④應用層(D12Driver.c)實(shí)現PDIUSBD12的所有功能。USB設備控制驅動(dòng)、USB接口控制驅動(dòng)和協(xié)議層都在應用層的控制之中。應用層要實(shí)現的仟務(wù)包括:
◆初始化PDIUSBDl2。包括初始化PDIUSBD12的硬件連接、復位PDIUSBDl2、配置PDIUSBD12的中斷服務(wù)程序地址、初始化應用層相關(guān)的全局變量。
◆編寫(xiě)PDIUSBD12中斷服務(wù)程序。PDIUSBD12幾乎所有功能都是通過(guò)PDIUSBDl2中斷服務(wù)程序來(lái)完成的,因此中斷服務(wù)程序是應用層的核心部分,也是本驅動(dòng)程序的核心部分。它要完成以下任務(wù):
◇控制端點(diǎn)數據接收與發(fā)送中斷服務(wù)程序,負責處理控制傳輸的有關(guān)工作;
◇端點(diǎn)1和端點(diǎn)2數據接收與發(fā)送中斷服務(wù)程序;
◇USB總線(xiàn)掛起、復位、DMA結束中斷服務(wù)程序。
◆用戶(hù)讀寫(xiě)端點(diǎn)1和端點(diǎn)2的API函數。
◆傳輸控制處理任務(wù)。該任務(wù)用于處理枚舉、標準任務(wù)請求、廠(chǎng)商請求等傳輸控制。
2.2 Mass Storage類(lèi)協(xié)議的實(shí)現
完整的Mass Storage類(lèi)協(xié)議需要實(shí)現如下兒部分:在枚舉時(shí),提供Mass Storage類(lèi)協(xié)議描述符;實(shí)現BulkOnly批量傳輸協(xié)議;實(shí)現SCSI命令集。
2.2.1 Mass Storage類(lèi)協(xié)議描述符

USB采用設備類(lèi)的方式對設備進(jìn)行管理。要讓主機識別設備,設備就必須提供正確的描述符:
◇設備描述符;
◇配置描述符;
◇接口描述符;
◇端點(diǎn)描述符。
2.2.2 Bulk-Only批量傳輸協(xié)議實(shí)現
Bulk-Only協(xié)議包括兩部分:類(lèi)特定請求命令和Bulk-Only傳輸。
(1)類(lèi)特定請求命令
①批量傳輸的大容量存儲器復位。要發(fā)送批量傳輸的大容量存儲器復位請求,主機將在默認管道發(fā)送一個(gè)設備請求:
◇bmRequestType――類(lèi)、接口、主機到設備;
◇bRequest字段設置為255(FFh);
◇wValue字段設置為0;
◇wIndex字段設置為接口編號;
◇wLength字段設置為O。
批量傳輸的大容量存儲器復位請求如下:


②獲取最大邏輯單元號(專(zhuān)用類(lèi)清求)。Get MaxLUN設備請求用于確定設備支持的邏輯單元編號。設備的邏輯單元編號可以從LUN為O到LUN的最大值15(Fh)。
要發(fā)送Get Max LUN設備請求,主機應在以下默認管道發(fā)送一個(gè)設備請求:
◇bmRequestType――類(lèi)、接口、設備到主機;
◇bRequest范圍設置為254(FEh);
◇wValue字段設置為0;
◇wIndex字段設置為接口編號;
◇wLength字段設置為1。
獲得最大邏輯單元字如下:


設備應返回1字節包含設備支持的最大邏輯單元數。例如,如果設備支持4個(gè)LUN,則LUN的編號應從0~3,則返回值為3。如果設備沒(méi)有相關(guān)的LUN,則返回值為0。主機不應向一個(gè)不存在的LUN發(fā)送命令塊包(CBW)。
不支持多LUN的設備會(huì )返回STALL。
(2)Bulk―Only傳輸
Bulk―Only傳輸協(xié)議沒(méi)有使用中斷和控制端點(diǎn),僅使用Bulk批量端點(diǎn)來(lái)進(jìn)行命令塊、數據和命令塊狀態(tài)的傳輸??刂贫它c(diǎn)(默認)管道僅用來(lái)請求批量端點(diǎn)上的STALL停止的狀態(tài)和執行類(lèi)特定請求命令。
Bulk―Only傳輸的流程如圖4所示。

2.2.3 SCSI命令集實(shí)現
SCSI命令集是SCSI設備通用命令集。SCSI有3種字長(cháng)的命令:6字節、10字節和12字節。Microsoft Win―dows環(huán)境下支持12字節長(cháng)的命令。圖5給出了通用的UFI命令塊的格式。請注意,這些字節就是CBW封包中CBWCB字段的內容。

對不同的命令只需根據SCSI命令集白皮書(shū)作出適當的回應。Pm25LV010的最小擦除單位為扇區(4 KB),故在程序中定義一個(gè)4 KB的緩沖區Cache_STRUC Flash-Cache,把每次收到的數據放入緩沖區中,到緩沖區滿(mǎn)數據接收完畢時(shí)再將其寫(xiě)入Flash存儲器中,流程如圖6所示。

2.3 Flash存儲器的讀寫(xiě)控制
Flash存儲器讀寫(xiě)程序由SPI控制和Pm25LV010控制兩部分組成。
Pm25LV010 Flash存儲器采用的是SPI串行接口,其SPI有兩種工作模式――模式O和模式3。SPI.c完成SPI底層操作,給Pm25LV010控制程序提供一個(gè)讀寫(xiě)1字節數據函數。該函數使用SPI模式0。
Pm25LV010控制程序完成Pm25LV010器件的所有操作,其向高層提供的函數及功能如表2所列。

Pm25LV010的最小擦除單位是扇區(每扇區4 KB),在改寫(xiě)扇區內任意一字節數據時(shí)都需要將該扇區擦除。針對這種情況,在程序中定義了一個(gè)4 KB大小的緩沖區,當上層調用函數WriteToFlash()向Flash寫(xiě)數據時(shí),并不直接寫(xiě)入Flash,而是先寫(xiě)到數據緩沖區,其流程如圖7所示。

3 結論
基于LPC2132微控制器的硬件平臺上實(shí)現了USB驅動(dòng)、Bulk-Only傳輸協(xié)議、SCSI命令集,實(shí)現了完整的U盤(pán)功能。



關(guān)鍵詞: LPC 21 U盤(pán) 軟硬件

評論


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