⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ata.h

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 H
字号:
//-----------------------------------------------------------------
// 名称:ATA-HDD头文件
//-----------------------------------------------------------------
//ATA命令集(ATA-3,PROTEUS仿真模型仅实现了ATA-1的部分功能)
#define CMD_CFA_ERASE_SECTORS            0xC0
#define CMD_CFA_REQUEST_EXT_ERR_CODE     0x03
#define CMD_CFA_TRANSLATE_SECTOR         0x87
#define CMD_CFA_WRITE_MULTIPLE_WO_ERASE  0xCD
#define CMD_CFA_WRITE_SECTORS_WO_ERASE   0x38
#define CMD_CHECK_POWER_MODE1            0xE5
#define CMD_CHECK_POWER_MODE2            0x98
#define CMD_DEVICE_RESET                 0x08
#define CMD_EXECUTE_DEVICE_DIAGNOSTIC    0x90
#define CMD_FLUSH_CACHE                  0xE7
#define CMD_FORMAT_TRACK                 0x50
#define CMD_IDENTIFY_DEVICE              0xEC
#define CMD_IDENTIFY_DEVICE_PACKET       0xA1
#define CMD_IDENTIFY_PACKET_DEVICE       0xA1
#define CMD_IDLE1                        0xE3
#define CMD_IDLE2                        0x97
#define CMD_IDLE_IMMEDIATE1              0xE1
#define CMD_IDLE_IMMEDIATE2              0x95
#define CMD_INITIALIZE_DRIVE_PARAMETERS  0x91
#define CMD_INITIALIZE_DEVICE_PARAMETERS 0x91
#define CMD_NOP                          0x00
#define CMD_PACKET                       0xA0
#define CMD_READ_BUFFER                  0xE4
#define CMD_READ_DMA                     0xC8
#define CMD_READ_DMA_QUEUED              0xC7
#define CMD_READ_MULTIPLE                0xC4
#define CMD_READ_SECTORS                 0x20
#define CMD_READ_VERIFY_SECTORS          0x40
#define CMD_RECALIBRATE                  0x10
#define CMD_SEEK                         0x70
#define CMD_SET_FEATURES                 0xEF
#define CMD_SET_MULTIPLE_MODE            0xC6
#define CMD_SLEEP1                       0xE6
#define CMD_SLEEP2                       0x99
#define CMD_STANDBY1                     0xE2
#define CMD_STANDBY2                     0x96
#define CMD_STANDBY_IMMEDIATE1           0xE0
#define CMD_STANDBY_IMMEDIATE2           0x94
#define CMD_WRITE_BUFFER                 0xE8
#define CMD_WRITE_DMA                    0xCA
#define CMD_WRITE_DMA_QUEUED             0xCC
#define CMD_WRITE_MULTIPLE               0xC5
#define CMD_WRITE_SECTORS                0x30
#define CMD_WRITE_VERIFY                 0x3C
//根据PROTEUS中ATA-HDD组件的HELP说明原文,仅有以下命令被当前组件所支持--
//0x00  Nop                   Perform no operation
//0x10  Recalibrate           Move head to cylinder 0.
//0x20  Read sectors          Read sectors from disk.
//0x21  Read sectors once     Read sectors from disk.(Do not retry on error.)
//0x30  Write sectors         Write sectors to disk.
//0x31  Write sectors once    Write sectors to disk.(Do not retry on error.)
//0x40  Verify sectors        Verify sectors on disk.
//0x41  Verify sectors once   Verify sectors on disk.(Do not retry on error.)
//0x70  Seek                  Seek a sector
//0x90  Execute device diagnostic    Causes all drives to execute internal diagnostics.
//0x91  Initialise drive parameters  Allow the host to set the number of cylinders heads 
//      and sectors used for translation.
//0xC4  Read multiple        Read sectors from disk. (Less interrupts.)
//0xC5  Write multiple       Write sectors to disk. (Less interrupts.)
//0xC6  Set multiple mode    Set number of sectors per block in multiple mode.
//0xE6  Sleep                Get the drive to enter sleep mode.
//0xEC  Identify device      Fill the sector buffer with drive identification information.
//0xEF  Set features         Set drive features
//-----------------------------------------------------
//ATA状态寄存器
#define ATA_STAT_BSY       0x80  //忙
#define ATA_STAT_RDY       0x40  //就绪
#define ATA_STAT_DF        0x20  //设备写失败
#define ATA_STAT_SKC       0x10  //寻道(SEEK)结束
#define ATA_STAT_DRQ       0x08  //数据请求
#define ATA_STAT_CORR      0x04  //发生可纠正错误
#define ATA_STAT_IDX       0x02  //索引
#define ATA_STAT_ERR       0x01  //错误 
//命令寄存器地址分配(CS3FX,CS1FX,DA2~DA0连接在RC4~RC0)
#define ATA_IO_DATA        0x10  //读/写数据
#define ATA_IO_ERROR       0x11  //读错误
#define ATA_IO_FEATURES    0x11  //写属性
#define ATA_IO_CHS_SECTORCNT   0x12 //CHS:扇区数(S)
#define ATA_IO_CHS_SECTORNUM   0x13 //CHS:扇区号(S)
#define ATA_IO_CHS_CYL_L       0x14 //CHS:柱面号低字节(C)
#define ATA_IO_CHS_CYL_H       0x15 //CHS:柱面号高字节(C)
#define ATA_IO_DEVICE_HEAD     0x16 //CHS:磁头号(H)
#define ATA_IO_LBA_0_7     0x13 //LBA: 0- 7位
#define ATA_IO_LBA_8_15    0x14 //LBA: 8-15位 
#define ATA_IO_LBA_16_23   0x15 //LBA:16-23位
#define ATA_IO_LBA_24_27   0x16 //LBA:24-27位
#define ATA_IO_STATUS          0x17 //读状态
#define ATA_IO_CMD             0x17 //写命令

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -