用PDIUSBD12和K9F5608U0A設計USB移動(dòng)閃存
摘要:簡(jiǎn)要介紹USB(通用串行總線(xiàn))大容量存儲設備類(lèi),給出USB控制PDIUSBD12和閃存K9F5608U0A的原理框圖,并以這兩個(gè)芯片為例設計出存儲設備的電路圖,最后列出程序流程圖。
關(guān)鍵詞:USB PDIUSBD12 K9F5608U0A 移動(dòng)閃存
引言
自從USB規范發(fā)布以來(lái),短短的幾年中得到了極大的發(fā)展,基于USB接口的大容量存儲設備(USB Mass Storage)應運而生。這類(lèi)設備主要有:USB移動(dòng)硬盤(pán)、USB外置光驅、USB外置軟驅、USB閃存盤(pán)等。但是目前國內介紹這一方面開(kāi)發(fā)的文章并不多。結合作者實(shí)踐,本文將以Philips公司的USB控制器PDIUSBD12和Sumsung公司的內存(Flash)K9F5608U0A為例,介紹開(kāi)發(fā)大容量存儲設備的方法。
1 USB大容量存儲設備類(lèi)
USB大容量存儲設備類(lèi)規范包括四個(gè)獨立的子類(lèi)規范,即:①USB Mass Storgage Class Control/Bulk/Interrupt(CBI)Transport;②USB Mass Storage Class Bulk-Only Transport;③USB Mass Storage Class ATA Command Block;④USB Mass Stroage Class UFI Command Specification。前兩個(gè)子規范定義了數據/命令/狀態(tài)在USB上的傳輸方法。Bulk-Only傳輸規范僅僅使用Bulk端點(diǎn)傳送數據/命令/狀態(tài),CBI傳輸規范則使用Control/Bulk/Interrupt三種類(lèi)型的端點(diǎn)進(jìn)行數據/命令/狀態(tài)傳送。后兩個(gè)子規范定義了對存儲介質(zhì)的操作命令。UFI命令規范是針對USB移動(dòng)存儲而制定的,實(shí)際上UFI命令格式是基于SFF-8070i和SCSI-2規范,總共定義了19個(gè)12字節長(cháng)度的操作命令。
批量單獨傳輸在大部分的通信中使用批量傳輸,只有在批量端點(diǎn)上清除一個(gè)Stall狀況,以及傳送類(lèi)別特定請求(class-specific request)時(shí)才使用控制傳輸。需要注意的是,批量單獨傳輸還支持兩個(gè)特定的請求是:
*Bulk Only Mass Storage Reset――重置設備;
*Get Max Lun――取得設備支持的邏輯單元數目。
大容量存儲類(lèi)支持的設備都有不同的內部結構,控制與讀取不同設備需要使用不同的命令區塊群。
2 器件簡(jiǎn)介
2.1 USB控制器PDIUSBD12
PDIUSBD12是一個(gè)全速芯片,支持一個(gè)控制端點(diǎn),以及四個(gè)額外的端點(diǎn)地址,一個(gè)端點(diǎn)的地址可以存儲128個(gè)字節,而雙緩沖區可以存256個(gè)字節。該芯片完全由軟件控制,在外圍設備的CPU送來(lái)一個(gè)命令來(lái)仿真連接總線(xiàn)之前,芯片都是維持與主機分離的狀態(tài)。這樣才能保證在開(kāi)機后搜尋設備前,芯片有時(shí)間來(lái)初始化。另外,PDIUSBD12有一個(gè)狀態(tài)輸出可以連接到液晶顯示器上,在建立USB連接時(shí)亮燈,而數據傳輸時(shí)閃爍。PDIUSBD12引腳圖和邏輯框圖分別如圖1、2所示。
2.2 K9F5608U0A
K9F5608U0A是三星公司生產(chǎn)的K9XXXXXU0A系列閃存中的一種,32MB容量,讀寫(xiě)速度快,數據保存時(shí)間長(cháng)以及高達10萬(wàn)次的擦除寫(xiě)入壽命等優(yōu)點(diǎn)。該芯片具有一個(gè)八位的I/O端口。在CE為低電平時(shí),把WE置低,地址、命令和數據都可通過(guò)該端口寫(xiě)入。數據在WE的上升沿被鎖存,CLE和ALE分別用來(lái)控制對命令和地址的鎖存。同進(jìn)K9F5608U0A具有較強的糾錯功能,能夠最大限度地保護用戶(hù)數據。其內部框圖和引腳圖分別如圖3、4所示。
各引腳功能如下:
I/O0~I/O7――數據輸入/輸出;
CLE――命令鎖存使能;
ALE――地址鎖存使能;
CE――片選信號;
WP――定保護;
GND――地輸入使能額外位;
R/B――準備好/忙;
VCC――電源;
VSS――地;
NC――懸空。
3 硬件電路設計
USB大容量存儲設備通常使用一個(gè)USB接口引擎和MCU(微控制器)一起處理主機發(fā)送的命令,以及對存儲設備進(jìn)行操作。圖5顯示了一個(gè)USB大容量存儲設備通常采用的硬件結構。ROM和RAM分別用于存儲數據和程序,USB微控制器通過(guò)通用I/O線(xiàn)與閃存設備連接。微控制器除了實(shí)現與主機之間的數據/命令傳輸外,還需要根據主機的命令對閃存器件并行讀/寫(xiě)/格式化,實(shí)現邏輯扇區與物理扇區之間的轉換及數據錯誤校正等操作。
實(shí)例簡(jiǎn)圖如圖6所示。MCU采用內含ROM和RAM的微控制器8051,8051通過(guò)數據總線(xiàn)和控制總線(xiàn)與兩個(gè)外設進(jìn)行通信。PDIUSBD12通過(guò)8051和K9F5608U0A進(jìn)行數據傳輸,此處采用PDIUSBD12的并行傳輸方式。
4 軟件編寫(xiě)
USB微控制器除了傳輸處理及UFI命令處理等工作外,還需要處理如存儲介質(zhì)的尋址/格式化/數據校驗等操作。本例中所需要的基本操作包括:
①提供USB枚舉信息;
②USB傳輸管理;
③根據主機的UFI命令,進(jìn)行相應的處理;
④提供閃盤(pán)基本信息,如扇區大小、簇大小、閃盤(pán)容量等;
⑤邏輯簇(logical cluster)到物理塊(physical block)的轉換;
⑥物理塊的讀/寫(xiě)/更新,其中許多的軟件功能是與閃存的操作相關(guān)的。
圖6
圖7
5 結論
本文結合實(shí)例,給出了一種開(kāi)發(fā)USB移動(dòng)存儲設備的方法。由于USB移動(dòng)存儲設備具有使用方便、容量大、數據傳輸速度快等優(yōu)點(diǎn),因而具有廣闊的高層前景。
評論