<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>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于單片機的MicroDrive接口設計

基于單片機的MicroDrive接口設計

作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:介紹了IBM的MicroDrive的基本結構和工作原理,詳細說(shuō)明了MicroDrive接口設計的關(guān)鍵技術(shù);以AT89C52型為基礎,設計完成了MicroDrive的接口電路,正確實(shí)現了對MicroDriver的讀寫(xiě)及數據管理等功能。關(guān)鍵詞:MicroDrive 近幾年,各種大容量的小型存儲器不斷涌現,在便攜式設備中獲得了廣泛的應用。目前常見(jiàn)的存儲卡類(lèi)型有:1Smart Media Card2MemoryStick3MultiMedia Card4CompactFlash Type I Card5IBM的MicroDrive等。各存儲卡在容量、功耗、體積上各有特色,但IBM的MicroDrive尤為出色。 MicroDrive是由IBM日本分公司研發(fā)生產(chǎn)出來(lái)的產(chǎn)品,其接口符合CFA(CompactFlash Association)協(xié)會(huì )制定的CF+ Type II 規范,具有容量大(170MB~3GB)、體積?。ǎ矗玻福恚?26;#215;36.4mm%26;#215;5.0mm)、性?xún)r(jià)比高、耗電量小等特點(diǎn),已在數碼相機、筆記本電腦、掌上電腦、便攜式音樂(lè )播放器等設備的存儲中獲得了較廣泛的應用。 目前市面上已有多家國內外公司生產(chǎn)出操作MicroDrive的接口(如IBM公司),但其價(jià)格較高。為降低成本,實(shí)現對MicroDrive的數據訪(fǎng)問(wèn)和管理功能,本文給出了一種基于的MicroDrive接口設計。1 MicroDrive介紹 MicroDrive各性能參數如下: %26;#183;容量(MB):1000/512/340; %26;#183;緩沖區大?。海保玻缸止?; %26;#183;扇區大小(字節):512; %26;#183;盤(pán)片數量:1; %26;#183;平均尋道時(shí)間:12ms; %26;#183;平均等待時(shí)間:8.33ms; %26;#183;最大內部數據傳輸速率:59.9MB/s; %26;#183;最大外部數據傳輸速率:13.3MB/s; 接口:CF+兼容ATA和PCMCIA 數據密度GB/平方英寸:15.2; 大?。海担恚?26;#215;43mm%26;#215;35mm; 重量:17克; 磁盤(pán)旋轉速度:3600RPM。 主要特點(diǎn)有: %26;#183;體積小、重量輕、容量大; %26;#183;可靠性高,有效的數據保護及數據編碼技術(shù),使得其出錯率極低; %26;#183;讀寫(xiě)速度快,連續讀寫(xiě)速率最高可達4.2MB/s,抗沖擊(1500G),耐震動(dòng)(5G); %26;#183;兼容性好,支持3.3V或5V工作電壓,具有廣闊的使用范圍。 2 MicroDrive硬件接口設計 2.1 MicroDrive接口簡(jiǎn)介及訪(fǎng)問(wèn)模式的選擇 MicroDrive的接口符合CF+ Type II標準,支持3.3V或5V直流工作電壓,提供了完整的PCMCIA-ATA功能且通過(guò)ATA/ATAPI-4兼容TrueIDE。但與68針接口的PCMCIA卡不同的是,同樣遵從ATA協(xié)議的MicroDrive 接口只有50針,采用50腳雙列0.05英寸間距標準接口(管腳排列如表1所示)。表1 MicroDrive管腳排列 管腳號名 稱(chēng)管腳號名 稱(chēng)管腳號名 稱(chēng)Pin1GNDPin18A02Pin35IOWRPin2D03Pin19A01Pin36WEPin3D04Pin20A00Pin37RDY/BSYPin4D05Pin21D00Pin38VCCPin5D06Pin22D01Pin39CSELPin6D07Pin23D02Pin40VS2Pin7CE1Pin24WPPin41RESETPin8A10Pin25CD2Pin42WAITPin9OEPin26CD1Pin43INPACKPin10A09Pin27D11Pin44REGPin11A08Pin28D12Pin45BVD2Pin12A07Pin29D13Pin46BVD1Pin13VCCPin30D14Pin47D08Pin14A06Pin31D15Pin48D09Pin15A05Pin32CE2Pin49D10Pin16A03Pin33VS1Pin50GNDPin17A04Pin34IORD  對MicroDrive,數據都是以512字節的扇區單元進(jìn)行操作,能夠通過(guò)IDE、Memory等模式對其進(jìn)行訪(fǎng)問(wèn)。 雖然IDE模式被廣泛應用于計算機硬盤(pán)的接口中,同時(shí)也被經(jīng)常應用于嵌入式系統中,得到絕大多數的BIOS和工業(yè)單板機的支持;但是IDE模式涉及復雜的文件管理,使得控制操作相對復雜,不符合簡(jiǎn)單可行的設計要求。 本系統由單片機實(shí)現嵌入式設計。而Memory模式是MicroDrive的默認模式,可以避免繁瑣的寄存器設置,同時(shí)支持8位數據帶寬,控制操作相對簡(jiǎn)單,可以極大地簡(jiǎn)化設計,節省系統的資源。故本系統采用Memory模式。 2.2 硬件接口 本系統電路連接框圖如圖1所示,主要包含以下五部分: (1)AT89C52 AT89C52擁有比8051多一倍的數據存儲器(256字節的RAM),擁有8K字節內部只讀存儲器(ROM),操作命令以及各引腳與8051基本一致。在本系統中,AT89C52的作用至關(guān)重要,它擔負著(zhù)與外部的通信及實(shí)現對MicroDrive的各種操作。 (2)外部數據存儲器 外部數據存儲器主要用作硬盤(pán)數據讀寫(xiě)的緩存,因而必須具有非易失性、簡(jiǎn)便的操作及合適的容量。62HC64容量為8KB具有非易失性、功耗低等特點(diǎn)。 (3)通信電平轉換芯片 RS232C是目前異步串行通信中應用最廣泛的標準總線(xiàn),適用于數據中斷設備(DTE)和數據通信設備(DCE)之間的接口;而單片機使用TTL電平,兩者互不兼容。因而使用了MAX232電平轉換芯片對它們的通信電平進(jìn)行轉換,作為對外的通信接口。 (4)CF+適配口 使用了標準50針CF+適配口。 (5)地址鎖存器74LS373和地址譯碼器74LS138 其中Address/Data(0~7)為復用的8位數據或低8位地址總線(xiàn),Address(8~12)為用于尋址62HC64的高5位地址線(xiàn),Address(13~15)接至74HC138,用作外部數據存儲器62HC64及MicroDrive 的片選信號;Reset(RESET)信號與AT89C52的RESET腳連接,以達到同步復位的目的,上電復位后,MicroDrive自動(dòng)進(jìn)入默認的Memory 模式;REG Register信號用于選擇訪(fǎng)問(wèn)MicroDrive的Attiribute Memory(低電平)或Common Memory(高電平);對于CE1與CE2(Card Enable),因為只有一塊MicroDrive,故將CE2接高電平,CE1接74LS138的Y7腳;OE、為讀寫(xiě)有效信號,與AT89C52的P3.7(RD)、P3.6(WR)相連;RDY/BSY(Ready/Busy)MicroDrive 的閑忙狀態(tài)信號,當MicroDrive忙時(shí),該腳為低電平,不能對MicroDrive做任何操作,與AT89C52的P3.2相連,以便可通過(guò)軟件檢測此位,判定MicroDrive的閑忙狀態(tài);WAIT(Wait)信號的有效意味著(zhù)一個(gè)操作進(jìn)程正在完成過(guò)程中,把它與P1.7相連,以便檢測;CD1、CD2(Card Detect)用于MicroDrive的存在檢測,與AT89C52的P3.2、P3.3相連;AT89C52的P3.0(RXD)用作串行通信輸入,接MAX232的12腳(R1OUT),用于接收通過(guò)MAX232送來(lái)的數據,P3.1(TXD)用作串行通信輸出,接MAX232的11腳(T1IN),通過(guò)MAX232送出數據。 3 軟件設計 3.1 主要寄存器簡(jiǎn)介 MicroDrive內幾個(gè)涉及到的操作寄存器,如表2所示。表2 MicroDrive主要寄存器 偏移地址名 稱(chēng)說(shuō) 明000HDATA REG數據寄存器001HERROR REG出錯狀態(tài)寄存器002HSECTOR COUNT REG扇區數目寄存器003HLBA 0~7邏輯塊尋址地址0~7位004HLBA 8~15邏輯塊尋址地址8~15位005HLBA 16~23邏輯塊尋址地址16~23位006HLBA 24~27邏輯塊尋址地址24~27位007HSTATUS REG讀取時(shí)為狀態(tài)寄存器007HCOMMAND REG寫(xiě)入時(shí)為命令寄存器3.2 軟件設計簡(jiǎn)述 硬件設計好后,可以通過(guò)軟件驅動(dòng)接口電路讀寫(xiě)MicroDrive。軟件流程如圖2所示。首先進(jìn)行測試以確定所有端口及信號的極性正確。由于Memory模式是缺省模式,其使用前的檢測就變得相當簡(jiǎn)單。主要把軟件分成以下幾部分: (1)檢測MicroDrive 首先,確定MicroDrive是否已正確插入插槽。這需要檢測Card Detect引腳,即將P3.2、P3.3的狀態(tài)讀入。如果兩個(gè)都為0,就表示MicroDrive已正確插入適配口;否則表明未正確插入,需要重新插入。 其次,在確定MicroDrive已正確插入后,開(kāi)始檢測其狀態(tài)。從Common Memory的偏移地址為007H的狀態(tài)寄存器中讀?。停椋悖颍铮模颍椋觯宓臓顟B(tài)信號,如果MicroDrive被正確Reset了,讀到的數據應該是50H,意味著(zhù)MicroDrive已能使用并準備接收命令;否則證明有錯誤,應重新Reset。 最后,當MicroDrive的狀態(tài)證實(shí)無(wú)誤并處于Memory模式時(shí),就可以發(fā)送診斷命令字(Execute Diagnostics:90H)到命令寄存器(偏移地址為007H)中。這一命令將會(huì )根據MicroDrive的當前情況重置狀態(tài)寄存器007H(與命令寄存器的地址相同),當出錯時(shí),出錯位將會(huì )被置1,此時(shí)檢查錯誤狀態(tài)寄存器(偏移地址為001H)將會(huì )得到詳盡的出錯信息;而一旦無(wú)錯誤,便可對MicroDrive進(jìn)行操作了。 (2)數據的讀取 為了達到此目的,首先,將要操作的扇區地址寫(xiě)入偏移地址為003H~006H的邏輯塊尋址寄存器中,再將要操作的扇區數目寫(xiě)入偏移地址為002H的扇區數目寄存器中,接著(zhù)就發(fā)送讀命令字(20H)到命令寄存器中,當寫(xiě)入命令后,MicroDrive會(huì )將BUSY狀態(tài)置1作為響應。 然后,MicroDrive從存儲扇區中讀出數據放入其緩存單元中,并將DRQ狀態(tài)位置1,清BUSY以表示數據已準備好。因此只需檢查DRQ狀態(tài)即可。當DRQ為1時(shí),便可從MicroDrive的緩存中讀出數據;當所有數據讀完后,DRQ將會(huì )清0,MicroDrive又轉回準備狀態(tài),可進(jìn)行下一步操作。 (3)數據的寫(xiě)入 與讀數據的操作類(lèi)似,首先,將數據準備在數據緩存區(外部RAM62HC64)中,將要操作的扇區地址寫(xiě)入偏移地址為003H~006H的邏輯塊尋址寄存器中,將要操作的扇區數目寫(xiě)入偏移地址為002H的扇區數目寄存器中,接著(zhù)發(fā)送寫(xiě)命令字(30H)到命令寄存器中。圖2 單片機軟件流程圖然后,檢測DRQ的狀態(tài)(此時(shí)MicroDrive置BUSY狀態(tài)為1,接著(zhù)置DRQ為1,清BUSY)。當檢測到DRQ為1時(shí),便可將數據緩存區(外部RAM62HC64)中的數據寫(xiě)入MicroDrive的緩存單元。當MicroDrive檢測到數據寫(xiě)入其緩存中,置BUSY為1,清DRQ并根據地址將數據寫(xiě)入;當數據寫(xiě)完后,清BUSY狀態(tài)位,重新回到準備狀態(tài),準備執行下一次操作。 在讀寫(xiě)操作中,對進(jìn)程起控制作用的是DRQ這一狀態(tài)位,其檢測程序如下: void wait_drqvoid  unsigned int a a=XBYTE0xE007 //讀取狀態(tài)寄存器的值 ifa&0x01==1 error //若出錯位為1轉出錯處理 whilea&0xf8=0x58 a=XBYTE0xE007 //查詢(xún)DRQ位不為1則循環(huán)等待  (4)數據的擦除 為達到此目的,首先將要操作的扇區地址寫(xiě)入偏移地址為003H~006H的邏輯塊尋址寄存器中,再將要操作的扇區數目寫(xiě)入偏移地址為002H的扇區數目寄存器中,接著(zhù)發(fā)送擦除命令字(0C0H)到命令寄存器當中,執行完擦除命令后,讀出的值全為0。 本文介紹的基于單片機的MicroDrive接口設計,成功地實(shí)現了操作MicroDrive的常用命令和對MicroDrive的8位格式的操作。經(jīng)過(guò)測試,此接口也可以對CF Type I卡(如SanDisk公司的CompactFlash卡)進(jìn)行正確操作,從而提高了應用系統的兼容性,具有較廣泛的應用價(jià)值,目前已準備在便攜式的動(dòng)態(tài)腦電、動(dòng)態(tài)心電上使用,同時(shí)可用于MicroDrive或CompactFlash卡作為存儲器使用的便攜式電子設備中。

評論


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