一、基本知識
1.IDE接口
在PC上,硬盤通過IDE40芯的扁平非屏蔽電纜與主板連接,數(shù)據(jù)和命令在其上異步傳輸。詳細(xì)的信號描述請參照Information Technology -AT Attachment with Packet Interface - 6(ATA/ATAPI-6)協(xié)議。
2. 硬盤寄存器描述
與硬盤通信是通過IO寄存器來完成的,訪問硬盤上的寄存器是由CS0FX,CS3FX,A2,A1,A0來譯碼完成的。硬盤的寄存器分為命令寄存器組和控制寄存器組。
參照圖1,詳細(xì)說明如下:
1) 數(shù)據(jù)寄存器,在CS3FX為高電平,CS0FX,A2,A1,A0為低電平時選通,其地址為0x8000。單片機(jī)通過讀寫該寄存器與硬盤交互數(shù)據(jù)。
2) 錯誤信息寄存器,在CS3FX,A0為高電平,CS0FX,A2,A1為低電平時選通,其地址為0x8001。該寄存器為只讀,寄存器位如置1代表不同的錯誤信息。
3) 屬性寄存器,在CS3FX,A0為高電平,CS0FX,A2,A1為低電平時選通,其地址為0x8001。該寄存器為只寫,對該寄存器的操作可使硬盤工作在不同的模式。由于8031單片機(jī)為8位的數(shù)據(jù)總線,而硬盤默認(rèn)為16位IO,需要對屬性寄存器寫0x01,使其工作在8位總線模式。
4) 扇區(qū)數(shù)目寄存器,在CS3FX,A1為高電平,CS0FX,A2,A0為低電平時選通,其地址為0x8002。其值表示需對硬盤讀寫的扇區(qū)數(shù)目,注意對硬盤的操作都是以扇區(qū)位單位,每個扇區(qū)包含512個字節(jié),即每次對硬盤的數(shù)據(jù)讀寫都是512個字節(jié)的倍數(shù)。
5)LBA低8位地址寄存器,在CS3FX,A1,A0為高電平,CS0FX,A2為低電平時選通,其地址為0x8003。本文中對硬盤的操作是以LBA模式進(jìn)行,即硬盤上的存儲扇區(qū)映射成連續(xù)的邏輯塊地址。要使能LBA模式,需要對模式寄存器的第6位置1。
6) LBA 地址8-15位寄存器,在CS3FX,A2為高電平,CS0FX,A1,A0為低電平時選通,其地址為0x8004。LBA地址共28位表示。
7) LBA 地址16-23位寄存器,在CS3FX,A2,A0為高電平,CS0FX,A1為低電平時選通,其地址為0x8005。
8) 模式寄存器,在CS3FX,A2,A1為高電平,CS0FX,A0為低電平時選通,參照原理圖1,其地址為0x8006。其低4位為LBA地址的24