?? 用pdiusbd12和k9f5608u0a設計usb移動閃存※.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0059)http://210.51.184.98/buaa1/dpj/html/magazine/2004_9/5-1.htm -->
<HTML><HEAD><TITLE>用PDIUSBD12和K9F5608U0A設計USB移動閃存※</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/home.css" rel=stylesheet>
<STYLE type=text/css></STYLE>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY text=black bgColor=white leftMargin=0 topMargin=10 marginheight="10"
marginwidth="0">
<CENTER><!--頂部開始-->
<SCRIPT language=Javascript
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/head.js"></SCRIPT>
<!--頂部結束--><!--菜單開始-->
<SCRIPT language=Javascript
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/menu.js"></SCRIPT>
<!--菜單結束-->
<TABLE cellSpacing=0 width=750 border=0>
<TBODY>
<TR>
<TD colSpan=5 height=16>
<DIV align=left><FONT color=#330099>當前位置:</FONT><A
href="http://210.51.184.98/first.htm">單片機與嵌入式系統(tǒng)應用</A>→用PDIUSBD12和K9F5608U0A設計USB移動閃存※<BR></DIV></TD>
<TD colSpan=2 height=16>
<DIV align=right></DIV></TD></TR>
<TR>
<TD colSpan=5 height=2></TD></TR>
<TR>
<TD colSpan=7 height=187>
<TABLE height=150 cellSpacing=0 cellPadding=0 width=750 align=center
border=0>
<TBODY>
<TR>
<TD class=normal vAlign=top width=150 bgColor=#d9e2fa height=3
rowSpan=4>
<DIV align=center></DIV>
<DIV align=center>
<TABLE cellSpacing=0 width="100%" align=center border=0>
<TBODY>
<TR bgColor=#5593dd>
<TD width=150 height=20>
<DIV align=center></DIV></TD></TR>
<TR>
<TD height=20>
<DIV align=center></DIV></TD></TR>
<TR>
<TD height=20>
<DIV align=center></DIV></TD></TR>
<TR>
<TD height=15>
<DIV align=center></DIV></TD></TR>
<TR>
<TD height=20>
<DIV align=center></DIV></TD></TR>
<TR>
<TD height=20>
<DIV align=center></DIV></TD></TR></TBODY></TABLE>
<P><BR><BR><BR><BR><BR><BR><BR><BR> </P></DIV></TD>
<TD vAlign=top width=5 height=3 rowSpan=4> </TD>
<TD vAlign=top width=1 bgColor=#333399 height=3 rowSpan=4><IMG
src="" width=1></TD>
<TD vAlign=top width=5 height=3 rowSpan=4></TD>
<TD class=normal vAlign=top width=597 height=3 rowSpan=4>
<DIV align=center>
<TABLE height=100 cellSpacing=0 cellPadding=0 width="100%"
align=left border=0>
<TBODY>
<TR bgColor=#cccccc>
<TD bgColor=#cccccc height=20>
<DIV
align=center>用PDIUSBD12和K9F5608U0A設計USB移動閃存※<BR></DIV></TD></TR>
<TR vAlign=top bgColor=#fdffff>
<TD background=用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/linebg.gif
height=177>
<BLOCKQUOTE>
<P><B><BR><BR>作 者:</B>■ 哈爾濱工業(yè)大學 董鮮宏 許洪光 林茂六<BR><BR><BR><B>摘
要:</B>簡要介紹USB(通用串行總線)大容量存儲設備類,給出USB控制PDIUSBD12和閃存K9F5608U0A的原理框圖,并以這兩個芯片為例設計出存儲設備的電路圖,最后列出程序流程圖。<BR><BR><BR><B>關鍵詞:</B>USB
PDIUSBD12 K9F5608U0A 移動閃存<BR><BR><BR><STRONG>引
言</STRONG>:<BR><BR> 自從USB規(guī)范發(fā)布以來,短短的幾年中得到了極大的發(fā)展,基于USB接口的大容量存儲設備(USB
Mass
Storage)應運而生。這類設備主要有:USB移動硬盤、USB外置光驅、USB外置軟驅、USB閃存盤等。但是目前國內介紹這一方面開發(fā)的文章并不多。結合作者實踐,本文將以Philips公司的USB控制器PDIUSBD12和Sumsung公司的閃存(Flash)K9F5608U0A為例,介紹開發(fā)大容量存儲設備的方法。<BR><BR><STRONG>1
USB大容量存儲設備類<BR></STRONG><BR> USB大容量存儲設備類規(guī)范包括四個獨立的子類規(guī)范,即:①USB
Mass Storage Class Control/Bulk/Interrupt (CBI)
Transport;②USB Mass Storage Class Bulk-Only Transport;③USB
Mass Storage Class ATA Command Block; ④USB Mass Storage
Class UFI Command
Specification。前兩個子規(guī)范定義了數(shù)據(jù)/命令/狀態(tài)在USB上的傳輸方法。Bulk-Only傳輸規(guī)范僅僅使用Bulk端點傳送數(shù)據(jù)/命令/狀態(tài),CBI傳輸規(guī)范則使用Control/Bulk/Interrupt三種類型的端點進行數(shù)據(jù)/命令/狀態(tài)傳送。后兩個子規(guī)范定義了對存儲介質的操作命令。UFI命令規(guī)范是針對USB移動存儲而制定的,實際上UFI命令格式是基于SFF-8070i和SCSI-2規(guī)范,總共定義了19個12字節(jié)長度的操作命令。<BR><BR> 批量單獨傳輸在大部分的通信中使用批量傳輸,只有在批量端點上清除一個Stall狀況,以及傳送類別特定請求(class-specific
request)時才使用控制傳輸。需要注意的是,批量單獨傳輸還支持兩個特定的請求是:<BR><BR>◆ Bulk
Only Mass Storage Reset——重置設備;<BR>◆ Get Max
Lun——取得設備支持的邏輯單元數(shù)目。<BR><BR> 大容量存儲類支持的設備都有不同的內部結構,控制與讀取不同設備需要使用不同的命令區(qū)塊群。表1列出大部分常用命令區(qū)塊群命令的結構。<BR> <IMG
height=145
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/5-1.jpg"
width=298><BR><STRONG>2 器件簡介</STRONG><BR><BR>2.1
USB控制器PDIUSBD12<BR><BR> PDIUSBD12是一個全速芯片,支持一個控制端點,以及四個額外的端點地址,一個端點的地址可以存儲到128個字節(jié),而雙緩沖區(qū)可以存到256個字節(jié)。該芯片完全由軟件控制,在外圍設備的CPU送來一個命令來仿真連接總線之前,芯片都是維持與主機分離的狀態(tài)。這樣才能保證在開機后搜尋設備前,芯片有時間來初始化。另外,PDIUSBD12有一個狀態(tài)輸出可以連接到液晶顯示器上,在建立USB連接時亮燈,而數(shù)據(jù)傳輸時閃爍。PDIUSBD12引腳圖和邏輯框圖分別如圖1、2所示。<BR>
<IMG height=273
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/5-2.jpg"
width=204><BR> <IMG height=236
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/5-3.jpg"
width=312> <BR>2.2
K9F5608U0A<BR><BR> K9F5608U0A是三星公司生產(chǎn)的K9XXXXXU0A系列閃存中的一種,32MB容量,讀寫速度快,數(shù)據(jù)保存時間長以及高達10萬次的擦除寫入壽命等優(yōu)點。該芯片具有一個八位的I/O端口。在為低電平時,把置低,地址、命令和數(shù)據(jù)都可通過該端口寫入。數(shù)據(jù)在的上升沿被鎖存,CLE和ALE分別用來控制對命令和地址的鎖存。同時K9F5608U0A具有較強的糾錯功能,能夠最大限度地保護用戶數(shù)據(jù)。其內部框圖和引腳圖分別如圖3、4所示。<BR> <IMG
height=232
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/5-4.jpg"
width=324> <BR> <IMG height=172
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/5-5.jpg"
width=224> <BR>各引腳功能如下:<BR>I/O0 ~ I/O7——數(shù)據(jù)輸入/輸出;
<BR>CLE——命令鎖存使能;<BR>ALE——地址鎖存使能;<BR>——片選信號;
<BR>——寫使能;<BR>——寫保護;<BR>GND——地輸入使能額外位;<BR>R/B——準備好/忙;<BR>VCC——電源;<BR>VSS——地;<BR>NC——懸空。<BR><BR><STRONG>3
硬件電路設計</STRONG><BR><BR> USB大容量存儲設備通常使用一個USB接口引擎和MCU(微控制器)一起處理主機發(fā)送的命令,以及對存儲設備進行操作。圖5顯示了一個USB大容量存儲設備通常采用的硬件結構。ROM和RAM分別用于存儲數(shù)據(jù)和程序,
USB微控制器通過通用I/O線與閃存設備連接。微控制器除了實現(xiàn)與主機之間的數(shù)據(jù)/命令傳輸外,還需要根據(jù)主機的命令對閃存器件進行讀/寫/格式化,實現(xiàn)邏輯扇區(qū)與物理扇區(qū)之間的轉換及數(shù)據(jù)錯誤校正等操作。<BR> <IMG
height=136
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/5-6.jpg"
width=233><BR> 實例簡圖如圖6所示。MCU采用內含ROM和RAM的微控制器8051,8051通過數(shù)據(jù)總線和控制總線與兩個外設進行通信。PDIUSBD12通過8051和K9F5608U0A進行數(shù)據(jù)傳輸,此處采用PDIUSBD12的并行傳輸方式。
<BR> <IMG height=181
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/5-8.jpg"
width=389><BR><STRONG>4
軟件編寫</STRONG><BR><BR> USB微控制器除了傳輸處理及UFI命令處理等工作外,還需要處理如存儲介質的尋址/格式化/數(shù)據(jù)校驗等操作。本例中所需要的基本操作包括:<BR>①
提供USB枚舉信息;<BR>② USB傳輸管理;<BR>③ 根據(jù)主機的UFI命令,進行相應的處理;<BR>④
提供閃盤基本信息,如扇區(qū)大小、簇大小、閃盤容量等;<BR>⑤ 邏輯簇(logical
cluster)到物理塊(physical block)的轉換;<BR>⑥
物理塊的讀/寫/更新,其中許多的軟件功能是與閃存的操作相關的。<BR>本例中用到的傳輸協(xié)議為USB Mass
Storage Class Bulk-Only Transport和USB Mass Storage Class UFI
Command
Specification。總程序流程圖如圖7所示。源代碼見本刊網(wǎng)站www.dpj.com.cn。<BR> <IMG
height=427
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/5-7.jpg"
width=234><BR><STRONG>5 結
論</STRONG><BR><BR> 本文結合實例,給出了一種開發(fā)USB移動存儲設備的方法。由于USB移動存儲設備具有使用方便、容量大、數(shù)據(jù)傳輸速度快等優(yōu)點,因而具有廣闊的市場前景。<BR><BR><STRONG> 參考文獻</STRONG><BR>1
Sumsung Electronics. K9F5608U0A-YCB0 32M x 8 Bit NAND Flash
Memory. 2000<BR>2 USB Specification Revision 1.1. 1998<BR>3
Universal Serial BusMass Storage Class Specification
Overview Revision 1.1. 2000<BR>4 PDIUSBD12用戶手冊. 2001
<BR><BR>林茂六:博士生導師,研究方向為現(xiàn)代信號處理技術及應用、大信號網(wǎng)絡分析。<BR>許洪光:副教授,研究方向為高速AD及數(shù)據(jù)采集系統(tǒng)、數(shù)字電路板故障診斷。<BR>董鮮宏:碩士研究生,主要研究方向為高速USB數(shù)據(jù)傳輸、語音信號處理。<BR>
(收修改稿日期:2004-04-23) </P></BLOCKQUOTE></TD></TR>
<TR bgColor=#fdffff>
<TD vAlign=center bgColor=#cccccc height=20>
<DIV align=center><B><A
href="http://210.51.184.98/buaa1/dpj/html/magazine/2004_9/first.htm">返回主頁</A></B></DIV></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<!--底部開始-->
<DIV align=left></DIV>
<DIV align=left>
<SCRIPT language=Javascript
src="用PDIUSBD12和K9F5608U0A設計USB移動閃存※.files/foot.js"></SCRIPT>
</DIV></CENTER></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -