《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技术 > 业界动态 > 基于单片机的MicroDrive接口设计

基于单片机的MicroDrive接口设计

2008-08-18
作者:王晋海, 刘光昌

  摘? 要: 介紹了IBM的MicroDrive的基本結(jié)構(gòu)和工作原理,詳細(xì)說(shuō)明了MicroDrive接口設(shè)計(jì)" title="接口設(shè)計(jì)">接口設(shè)計(jì)的關(guān)鍵技術(shù);以AT89C52型單片機(jī)為基礎(chǔ),設(shè)計(jì)完成了MicroDrive的接口電路,正確實(shí)現(xiàn)了對(duì)MicroDriver的讀寫(xiě)及數(shù)據(jù)管理等功能。

  關(guān)鍵詞: MicroDrive? 單片機(jī)

?

  近幾年,各種大容量的小型存儲(chǔ)器不斷涌現(xiàn),在便攜式設(shè)備中獲得了廣泛的應(yīng)用。目前常見(jiàn)的存儲(chǔ)卡類(lèi)型有:(1)Smart Media Card;(2)MemoryStick;(3)MultiMedia Card;(4)CompactFlash Type I Card;(5)IBM的MicroDrive等。各存儲(chǔ)卡在容量、功耗、體積上各有特色,但I(xiàn)BM的MicroDrive尤為出色。

  MicroDrive是由IBM日本分公司研發(fā)生產(chǎn)出來(lái)的產(chǎn)品,其接口符合CFA(CompactFlash Association)協(xié)會(huì)制定的CF+ Type II 規(guī)范,具有容量大(170MB~3GB)、體積小(42.8mm×36.4mm×5.0mm)、性?xún)r(jià)比高、耗電量小等特點(diǎn),已在數(shù)碼相機(jī)、筆記本電腦、掌上電腦、便攜式音樂(lè)播放器等設(shè)備的存儲(chǔ)中獲得了較廣泛的應(yīng)用。

目前市面上已有多家國(guó)內(nèi)外公司生產(chǎn)出操作MicroDrive的接口(如IBM公司),但其價(jià)格較高。為降低成本,實(shí)現(xiàn)對(duì)MicroDrive的數(shù)據(jù)訪(fǎng)問(wèn)和管理功能,本文給出了一種基于單片機(jī)的MicroDrive接口設(shè)計(jì)。

1 MicroDrive介紹

  MicroDrive各性能參數(shù)如下:

  ·容量(MB):1000/512/340;

  ·緩沖區(qū)大小:128字節(jié);

  ·扇區(qū)大小(字節(jié)):512;

????·盤(pán)片數(shù)量:1;

??? ·平均尋道時(shí)間:12ms;

????·平均等待時(shí)間:8.33ms;

??? ·最大內(nèi)部數(shù)據(jù)傳輸速率" title="傳輸速率">傳輸速率:59.9MB/s;

????·最大外部數(shù)據(jù)傳輸速率:13.3MB/s;

????接口:CF+(兼容ATA和PCMCIA)

????數(shù)據(jù)密度(GB/平方英寸):15.2;

  大小:5mm×43mm×35mm;

????重量:17克;

  磁盤(pán)旋轉(zhuǎn)速度:3600RPM。

  主要特點(diǎn)有:

  ·體積小、重量輕、容量大;

  ·可靠性高,有效的數(shù)據(jù)保護(hù)及數(shù)據(jù)編碼技術(shù),使得其出錯(cuò)率極低;

  ·讀寫(xiě)速度快,連續(xù)讀寫(xiě)速率最高可達(dá)4.2MB/s,抗沖擊(1500G),耐震動(dòng)(5G);

  ·兼容性好,支持3.3V或5V工作電壓,具有廣闊的使用范圍。

2 MicroDrive硬件接口設(shè)計(jì)

2.1?MicroDrive接口簡(jiǎn)介及訪(fǎng)問(wèn)模式的選擇

  MicroDrive的接口符合CF+ Type II標(biāo)準(zhǔn),支持3.3V或5V直流工作電壓,提供了完整的PCMCIA-ATA功能且通過(guò)ATA/ATAPI-4兼容TrueIDE。但與68針接口的PCMCIA卡不同的是,同樣遵從ATA協(xié)議的MicroDrive 接口只有50針,采用50腳雙列0.05英寸間距標(biāo)準(zhǔn)接口(管腳排列如表1所示)。

?

  對(duì)MicroDrive,數(shù)據(jù)都是以512字節(jié)的扇區(qū)單元進(jìn)行操作,能夠通過(guò)IDE、Memory等模式對(duì)其進(jìn)行訪(fǎng)問(wèn)。

雖然IDE模式被廣泛應(yīng)用于計(jì)算機(jī)硬盤(pán)的接口中,同時(shí)也被經(jīng)常應(yīng)用于嵌入式系統(tǒng)中,得到絕大多數(shù)的BIOS和工業(yè)單板機(jī)的支持;但是IDE模式涉及復(fù)雜的文件管理,使得控制操作相對(duì)復(fù)雜,不符合簡(jiǎn)單可行的設(shè)計(jì)要求。

本系統(tǒng)由單片機(jī)實(shí)現(xiàn)嵌入式設(shè)計(jì)。而Memory模式是MicroDrive的默認(rèn)模式,可以避免繁瑣的寄存器設(shè)置,同時(shí)支持8位數(shù)據(jù)帶寬,控制操作相對(duì)簡(jiǎn)單,可以極大地簡(jiǎn)化設(shè)計(jì),節(jié)省系統(tǒng)的資源。故本系統(tǒng)采用Memory模式。

2.2?硬件接口

  本系統(tǒng)電路連接框圖如圖1所示,主要包含以下五部分:

  (1)AT89C52

  AT89C52擁有比8051多一倍的數(shù)據(jù)存儲(chǔ)器" title="數(shù)據(jù)存儲(chǔ)器">數(shù)據(jù)存儲(chǔ)器(256字節(jié)的RAM),擁有8K字節(jié)內(nèi)部只讀存儲(chǔ)器(ROM),操作命令以及各引腳與8051基本一致。在本系統(tǒng)中,AT89C52的作用至關(guān)重要,它擔(dān)負(fù)著與外部的通信及實(shí)現(xiàn)對(duì)MicroDrive的各種操作。

  (2)外部數(shù)據(jù)存儲(chǔ)器

外部數(shù)據(jù)存儲(chǔ)器主要用作硬盤(pán)數(shù)據(jù)讀寫(xiě)的緩存,因而必須具有非易失性、簡(jiǎn)便的操作及合適的容量。62HC64容量為8KB,具有非易失性、功耗低等特點(diǎn)。

  (3)通信電平轉(zhuǎn)換芯片

  RS232C是目前異步串行通信中應(yīng)用最廣泛的標(biāo)準(zhǔn)總線(xiàn),適用于數(shù)據(jù)中斷設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)之間的接口;而單片機(jī)使用TTL電平,兩者互不兼容。因而使用了MAX232電平轉(zhuǎn)換芯片對(duì)它們的通信電平進(jìn)行轉(zhuǎn)換,作為對(duì)外的通信接口。

  (4)CF+適配" title="適配">適配口

使用了標(biāo)準(zhǔn)50針CF+適配口。

  (5)地址鎖存器74LS373和地址譯碼器74LS138

?

  其中Address/Data(0~7)為復(fù)用的8位數(shù)據(jù)或低8位地址總線(xiàn),Address(8~12)為用于尋址62HC64的高5位地址線(xiàn),Address(13~15)接至74HC138,用作外部數(shù)據(jù)存儲(chǔ)器62HC64及MicroDrive 的片選信號(hào);Reset(RESET)信號(hào)與AT89C52的RESET腳連接,以達(dá)到同步復(fù)位的目的,上電復(fù)位后,MicroDrive自動(dòng)進(jìn)入默認(rèn)的Memory 模式;/REG (Register)信號(hào)用于選擇訪(fǎng)問(wèn)MicroDrive的Attiribute Memory(低電平)或Common Memory(高電平);對(duì)于/CE1與/CE2(Card Enable),因?yàn)橹挥幸粔KMicroDrive,故將CE2接高電平,/CE1接74LS138的Y7腳;/OE、/WE為讀寫(xiě)有效信號(hào),與AT89C52的P3.7(/RD)、P3.6(/WR)相連;RDY//BSY(Ready/Busy)MicroDrive 的閑忙狀態(tài)信號(hào),當(dāng)MicroDrive忙時(shí),該腳為低電平,不能對(duì)MicroDrive做任何操作,與AT89C52的P3.2相連,以便可通過(guò)軟件檢測(cè)此位,判定MicroDrive的閑忙狀態(tài);WAIT(Wait)信號(hào)的有效意味著一個(gè)操作進(jìn)程正在完成過(guò)程中,把它與P1.7相連,以便檢測(cè);CD1、CD2(Card Detect)用于MicroDrive的存在檢測(cè),與AT89C52的P3.2、P3.3相連;AT89C52的P3.0(RXD)用作串行通信輸入,接MAX232的12腳(R1OUT),用于接收通過(guò)MAX232送來(lái)的數(shù)據(jù),P3.1(TXD)用作串行通信輸出,接MAX232的11腳(T1IN),通過(guò)MAX232送出數(shù)據(jù)。

3 軟件設(shè)計(jì)

3.1 主要寄存器簡(jiǎn)介

  MicroDrive內(nèi)幾個(gè)涉及到的操作寄存器,如表2所示。

?

3.2?軟件設(shè)計(jì)簡(jiǎn)述

  硬件設(shè)計(jì)好后,可以通過(guò)軟件驅(qū)動(dòng)接口電路讀寫(xiě)MicroDrive。軟件流程如圖2所示。首先進(jìn)行測(cè)試以確定所有端口及信號(hào)的極性正確。由于Memory模式是缺省模式,其使用前的檢測(cè)就變得相當(dāng)簡(jiǎn)單。主要把軟件分成以下幾部分:

?

  (1)檢測(cè)MicroDrive

  首先,確定MicroDrive是否已正確插入插槽。這需要檢測(cè)Card Detect引腳,即將P3.2、P3.3的狀態(tài)讀入。如果兩個(gè)都為0,就表示MicroDrive已正確插入適配口;否則表明未正確插入,需要重新插入。

  其次,在確定MicroDrive已正確插入后,開(kāi)始檢測(cè)其狀態(tài)。從Common Memory的偏移地址為007H的狀態(tài)寄存器" title="狀態(tài)寄存器">狀態(tài)寄存器中讀取MicroDrive的狀態(tài)信號(hào),如果MicroDrive被正確Reset了,讀到的數(shù)據(jù)應(yīng)該是50H,意味著MicroDrive已能使用并準(zhǔn)備接收命令;否則證明有錯(cuò)誤,應(yīng)重新Reset。

  最后,當(dāng)MicroDrive的狀態(tài)證實(shí)無(wú)誤并處于Memory模式時(shí),就可以發(fā)送診斷命令字(Execute Diagnostics:90H)到命令寄存器(偏移地址為007H)中。這一命令將會(huì)根據(jù)MicroDrive的當(dāng)前情況重置狀態(tài)寄存器007H(與命令寄存器的地址相同),當(dāng)出錯(cuò)時(shí),出錯(cuò)位將會(huì)被置1,此時(shí)檢查錯(cuò)誤狀態(tài)寄存器(偏移地址為001H)將會(huì)得到詳盡的出錯(cuò)信息;而一旦無(wú)錯(cuò)誤,便可對(duì)MicroDrive進(jìn)行操作了。

  (2)數(shù)據(jù)的讀取

  為了達(dá)到此目的,首先,將要操作的扇區(qū)地址寫(xiě)入偏移地址為003H~006H的邏輯塊尋址寄存器中,再將要操作的扇區(qū)數(shù)目寫(xiě)入偏移地址為002H的扇區(qū)數(shù)目寄存器中,接著就發(fā)送讀命令字(20H)到命令寄存器中,當(dāng)寫(xiě)入命令后,MicroDrive會(huì)將BUSY狀態(tài)置1作為響應(yīng)。

  然后,MicroDrive從存儲(chǔ)扇區(qū)中讀出數(shù)據(jù)放入其緩存單元中,并將DRQ狀態(tài)位置1,清BUSY以表示數(shù)據(jù)已準(zhǔn)備好。因此只需檢查DRQ狀態(tài)即可。當(dāng)DRQ為1時(shí),便可從MicroDrive的緩存中讀出數(shù)據(jù);當(dāng)所有數(shù)據(jù)讀完后,DRQ將會(huì)清0,MicroDrive又轉(zhuǎn)回準(zhǔn)備狀態(tài),可進(jìn)行下一步操作。

  (3)數(shù)據(jù)的寫(xiě)入

  與讀數(shù)據(jù)的操作類(lèi)似,首先,將數(shù)據(jù)準(zhǔn)備在數(shù)據(jù)緩存區(qū)(外部RAM62HC64)中,將要操作的扇區(qū)地址寫(xiě)入偏移地址為003H~006H的邏輯塊尋址寄存器中,將要操作的扇區(qū)數(shù)目寫(xiě)入偏移地址為002H的扇區(qū)數(shù)目寄存器中,接著發(fā)送寫(xiě)命令字(30H)到命令寄存器中。

  然后,檢測(cè)DRQ的狀態(tài)(此時(shí)MicroDrive置BUSY狀態(tài)為1,接著置DRQ為1,清BUSY)。當(dāng)檢測(cè)到DRQ為1時(shí),便可將數(shù)據(jù)緩存區(qū)(外部RAM62HC64)中的數(shù)據(jù)寫(xiě)入MicroDrive的緩存單元。當(dāng)MicroDrive檢測(cè)到數(shù)據(jù)寫(xiě)入其緩存中,置BUSY為1,清DRQ并根據(jù)地址將數(shù)據(jù)寫(xiě)入;當(dāng)數(shù)據(jù)寫(xiě)完后,清BUSY狀態(tài)位,重新回到準(zhǔn)備狀態(tài),準(zhǔn)備執(zhí)行下一次操作。

在讀寫(xiě)操作中,對(duì)進(jìn)程起控制作用的是DRQ這一狀態(tài)位,其檢測(cè)程序如下:

  void wait_drq(void)

  {?? unsigned int a;

???   a=XBYTE[0xE007];

?????? ?    ?????? //讀取狀態(tài)寄存器的值

  ??? if((a&0x01)==1) error();

????        ??? //若出錯(cuò)位為1,轉(zhuǎn)出錯(cuò)處理

  ??? while((a&0xf8)!=0x58)

???   a=XBYTE[0xE007];

           ?? //查詢(xún)DRQ位,不為1則循環(huán)等待

  }?????

  (4)數(shù)據(jù)的擦除

  為達(dá)到此目的,首先將要操作的扇區(qū)地址寫(xiě)入偏移地址為003H~006H的邏輯塊尋址寄存器中,再將要操作的扇區(qū)數(shù)目寫(xiě)入偏移地址為002H的扇區(qū)數(shù)目寄存器中,接著發(fā)送擦除命令字(0C0H)到命令寄存器當(dāng)中,執(zhí)行完擦除命令后,讀出的值全為0。

本文介紹的基于單片機(jī)的MicroDrive接口設(shè)計(jì),成功地實(shí)現(xiàn)了操作MicroDrive的常用命令和對(duì)MicroDrive的8位格式的操作。經(jīng)過(guò)測(cè)試,此接口也可以對(duì)CF Type I卡(如SanDisk公司的CompactFlash卡)進(jìn)行正確操作,從而提高了應(yīng)用系統(tǒng)的兼容性,具有較廣泛的應(yīng)用價(jià)值,目前已準(zhǔn)備在便攜式的動(dòng)態(tài)腦電、動(dòng)態(tài)心電上使用,同時(shí)可用于MicroDrive或CompactFlash卡作為存儲(chǔ)器使用的便攜式電子設(shè)備中。

?

參考文獻(xiàn)

1 CompactFlash Association.CF+and CompactFlash Specification Revision 1.4.1999

2 International Business Machines Corporation.Using the IBM?Microdrive For the First time.2001

3 International Business Machines Corporation.Need More?Storage? Embed an IBM 170MB or 340MB Microdrive.

2001
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容