關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于USB2.0的高性能移動(dòng)存儲(chǔ)設(shè)備的設(shè)計(jì)

基于USB2.0的高性能移動(dòng)存儲(chǔ)設(shè)備的設(shè)計(jì)

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

  K9K8U0A編程器件以頁(yè)為單位編程,它允許在單頁(yè)編程周期中對(duì)部分頁(yè)或一個(gè)甚至連續(xù)的多達(dá)2112個(gè)連續(xù)字節(jié)編程。一個(gè)頁(yè)編程周期由2個(gè)階段組成[3]:(1)串行數(shù)據(jù)加載階段:數(shù)據(jù)被加載到數(shù)據(jù)寄存器中,以輸入命令80h為標(biāo)志,緊接著是5個(gè)字節(jié)的地址輸入和串行數(shù)據(jù)加載;(2)非易失性的編程階段:命令10h標(biāo)志著該編程階段的開始,將已加載的數(shù)據(jù)寫入實(shí)際的存儲(chǔ)單元,編程典型時(shí)間為μs。之后R/ 跳低,進(jìn)入閃存內(nèi)部編程,最后進(jìn)入讀狀態(tài)確認(rèn)操作,命令70h表示讀狀態(tài)命令,I/O0表示讀到的狀態(tài)。頁(yè)編程實(shí)現(xiàn)代碼如下:

  void PageWrite(void ) //頁(yè)編程

  {

  CheckBlock(startpage); //檢測(cè)壞塊列表

  if(FirstP)

  // FirstP為1,開始對(duì)一頁(yè)進(jìn)行寫操作,否則為0

  {//片選信號(hào)有效

  F_CE=0; F_RE=1; F_ALE=0;F_CLE=1;F_WE=0;

  OutputCommand(0x80); //輸入命令0x80

  F_WE=1;

  F_ALE=1;//發(fā)送地址開始

  AddrOut (addr1); //得到頁(yè)地址,五個(gè)周期

  AddrOut (addr2); AddrOut (addr3); AddrOut (addr4); AddrOut (addr5);

  F_ALE=0;

  FirstP =0; }

  WriteData(BuffBlock); //將數(shù)據(jù)寫入緩沖區(qū)

  FlagWrite =0;

  Do{

  F_WE=0;

  WriteFlash(); //將數(shù)據(jù)寫入flash

  FlagWrite++;

  F_WE=1;

  }while(FlagWrite64); //寫滿一頁(yè)數(shù)據(jù)

  OutputCommand (0x10); //輸入命令0x10

  while(!F_RB); //等待讀信號(hào)有效

  OutputCommand (0x70); //輸入命令0x70

  Wait();

  F_CE=1; //片選結(jié)束

  startpage++; //繼續(xù)寫下一頁(yè)

  FirstP =1;

  }

  4.結(jié)束語(yǔ)

  本文在充分研究協(xié)議、Bulk-Only傳輸協(xié)議和SCSI指令規(guī)范的基礎(chǔ)上,設(shè)計(jì)出2.0高。本文作者創(chuàng)新點(diǎn):將FLASH作為數(shù)據(jù)采集系統(tǒng)中的存儲(chǔ)單元,應(yīng)用在與計(jì)算機(jī)交互數(shù)據(jù)的采集過(guò)程之中;并采用中斷驅(qū)動(dòng)設(shè)計(jì)固件程序,提高了讀寫效率。實(shí)驗(yàn)證明,其穩(wěn)定可靠,讀寫數(shù)據(jù)速度達(dá)到了令人滿意的效果。移動(dòng)數(shù)據(jù)的交換和存儲(chǔ)是目前IT行業(yè)的熱點(diǎn),可以在此基礎(chǔ)上,不斷完善現(xiàn)有設(shè)計(jì)方案,繼續(xù)研究開發(fā)嵌入式主機(jī)系統(tǒng),使得在PC機(jī)不參與的情況下同樣可以進(jìn)行數(shù)據(jù)的存儲(chǔ)與交換。


上一頁(yè) 1 2 3 4 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉