3.2 軟件設(shè)計簡述
硬件設(shè)計好后,可以通過軟件驅(qū)動接口電路讀寫MicroDrive。軟件流程如圖2所示。首先進行測試以確定所有端口及信號的極性正確。由于Memory模式是缺省模式,其使用前的檢測就變得相當簡單。主要把軟件分成以下幾部分:
(1)檢測MicroDrive
首先,確定MicroDrive是否已正確插入插槽。這需要檢測Card Detect引腳,即將P3.2、P3.3的狀態(tài)讀入。如果兩個都為0,就表示MicroDrive已正確插入適配口;否則表明未正確插入,需要重新插入。
其次,在確定MicroDrive已正確插入后,開始檢測其狀態(tài)。從Common Memory的偏移地址為007H的狀態(tài)寄存器中讀取MicroDrive的狀態(tài)信號,如果MicroDrive被正確Reset了,讀到的數(shù)據(jù)應(yīng)該是50H,意味著MicroDrive已能使用并準備接收命令;否則證明有錯誤,應(yīng)重新Reset。
最后,當MicroDrive的狀態(tài)證實無誤并處于Memory模式時,就可以發(fā)送診斷命令字(Execute Diagnostics:90H)到命令寄存器(偏移地址為007H)中。這一命令將會根據(jù)MicroDrive的當前情況重置狀態(tài)寄存器007H(與命令寄存器的地址相同),當出錯時,出錯位將會被置1,此時檢查錯誤狀態(tài)寄存器(偏移地址為001H)將會得到詳盡的出錯信息;而一旦無錯誤,便可對MicroDrive進行操作了。
(2)數(shù)據(jù)的讀取
為了達到此目的,首先,將要操作的扇區(qū)地址寫入偏移地址為003H~006H的邏輯塊尋址寄存器中,再將要操作的扇區(qū)數(shù)目寫入偏移地址為002H的扇區(qū)數(shù)目寄存器中,接著就發(fā)送讀命令字(20H)到命令寄存器中,當寫入命令后,MicroDrive會將BUSY狀態(tài)置1作為響應(yīng)。
然后,MicroDrive從存儲扇區(qū)中讀出數(shù)據(jù)放入其緩存單元中,并將DRQ狀態(tài)位置1,清BUSY以表示數(shù)據(jù)已準備好。因此只需檢查DRQ狀態(tài)即可。當DRQ為1時,便可從MicroDrive的緩存中讀出數(shù)據(jù);當所有數(shù)據(jù)讀完后,DRQ將會清0,MicroDrive又轉(zhuǎn)回準備狀態(tài),可進行下一步操作。
(3)數(shù)據(jù)的寫入
與讀數(shù)據(jù)的操作類似,首先,將數(shù)據(jù)準備在數(shù)據(jù)緩存區(qū)(外部RAM62HC64)中,將要操作的扇區(qū)地址寫入偏移地址為003H~006H的邏輯塊尋址寄存器中,將要操作的扇區(qū)數(shù)目寫入偏移地址為002H的扇區(qū)數(shù)目寄存器中,接著發(fā)送寫命令字(30H)到命令寄存器中。
圖2 單片機軟件流程圖
然后,檢測DRQ的狀態(tài)(此時MicroDrive置BUSY狀態(tài)為1,接著置DRQ為1,清BUSY)。當檢測到DRQ為1時,便可將數(shù)據(jù)緩存區(qū)(外部RAM62HC64)中的數(shù)據(jù)寫入MicroDrive的緩存單元。當MicroDrive檢測到數(shù)據(jù)寫入其緩存中,置BUSY為1,清DRQ并根據(jù)地址將數(shù)據(jù)寫入;當數(shù)據(jù)寫完后,清BUSY狀態(tài)位,重新回到準備狀態(tài),準備執(zhí)行下一次操作。
在讀寫操作中,對進程起控制作用的是DRQ這一狀態(tài)位,其檢測程序如下:
void wait_drqvoid
unsigned int a
a=XBYTE0xE007
//讀取狀態(tài)寄存器的值
ifa&0x01==1 error
//若出錯位為1轉(zhuǎn)出錯處理
whilea&0xf8=0x58
a=XBYTE0xE007
//查詢DRQ位不為1則循環(huán)等待
(4)數(shù)據(jù)的擦除
為達到此目的,首先將要操作的扇區(qū)地址寫入偏移地址為003H~006H的邏輯塊尋址寄存器中,再將要操作的扇區(qū)數(shù)目寫入偏移地址為002H的扇區(qū)數(shù)目寄存器中,接著發(fā)送擦除命令字(0C0H)到命令寄存器當中,執(zhí)行完擦除命令后,讀出的值全為0。
本文介紹的基于單片機的MicroDrive接口設(shè)計,成功地實現(xiàn)了操作MicroDrive的常用命令和對MicroDrive的8位格式的操作。經(jīng)過測試,此接口也可以對CF Type I卡(如SanDisk公司的CompactFlash卡)進行正確操作,從而提高了應(yīng)用系統(tǒng)的兼容性,具有較廣泛的應(yīng)用價值,目前已準備在便攜式的動態(tài)腦電、動態(tài)心電上使用,同時可用于MicroDrive或CompactFlash卡作為存儲器使用的便攜式電子設(shè)備中。





