📄 sysata.h.svn-base
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: sysata.h
** Last modified Date: 2005-05-13
** Last Version: 1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Created by: Zhoulishan
** Created date: 2005-05-13
** Version: 1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#ifndef _SYSATA_H
#define _SYSATA_H
/****************************************************************************************/
/** 与用户硬件相关部分,用户需要改动 */
/****************************************************************************************/
#define ATA_RST (1<<24) /* CF卡复位引脚与LPC2210的P2.24连接 */
#define ATA_CD (1<<25) /* CF卡检测引脚与LPC2210的P2.25连接 */
#define ATA_EN 0x83600000 /* 总线分配的地址段0x83600000~0x836fffff */
#define ATA_ALE (1<<20) /* 地址锁存操制引脚与A20(P3.20)连接 */
#define ATA_RW (1<<19) /* 读写信号出输使能引脚与A19(P3.19)连接 */
#define ATA_OUT (1<<18) /* 数据方向控制引脚与A18(P3.19)连接 */
#define ATA_CS1 (1<<5) /* ATA总线的CS1由A5(P3.5)经过74574锁存输出 */
#define ATA_CS0 (1<<4) /* ATA总线的CS0由A4(P3.4)经过74574锁存输出 */
#define ATA_A2 (1<<3) /* ATA总线的A2由A3(P3.3)经过74574锁存输出 */
#define ATA_A1 (1<<2) /* ATA总线的A1由A2(P3.2)经过74574锁存输出 */
#define ATA_A0 (1<<1) /* ATA总线的A0由A1(P3.1)经过74574锁存输出 */
#define ATA_REG_DATA ATA_CS1 /* 数据寄存器地址编码 */
#define ATA_REG_ERR (ATA_CS1|ATA_A0) /* 读错误寄存器址编码 */
#define ATA_REG_FEATURE (ATA_CS1|ATA_A0) /* 写功能寄存器址编码 */
#define ATA_REG_SECCNT (ATA_CS1|ATA_A1) /* 扇区计数器,地址编码 */
#define ATA_REG_SECTOR (ATA_CS1|ATA_A1|ATA_A0) /* 扇区号寄存器址编码 */
#define ATA_REG_CYLINDER_LOW (ATA_CS1|ATA_A2) /* 柱面低8位寄存器地址编码 */
#define ATA_REG_CYLINDER_HIGH (ATA_CS1|ATA_A2|ATA_A0) /* 柱面高8位寄存器地址编码 */
#define ATA_REG_DEVICE_HEAD (ATA_CS1|ATA_A2|ATA_A1) /* 设备磁头寄存器地址编码 */
#define ATA_REG_COMMAND (ATA_CS1|ATA_A2|ATA_A1|ATA_A0) /* 写命令寄存器地址编码 */
#define ATA_REG_STATUS (ATA_CS1|ATA_A2|ATA_A1|ATA_A0) /* 读状态寄存器地址编码 */
#define ATA_REG_CONTROL (ATA_CS0|ATA_A2|ATA_A1) /* 写控制寄存器地址编码 */
#define ATA_REG_ASTATUS (ATA_CS0|ATA_A2|ATA_A1) /* 读辅助状态寄存器地址编码 */
/*************************************************************************************************/
/*驱动与硬件对ATA设备寄存器操作接口*/
#define GetData() SYS_PortIn(ATA_REG_DATA) /* 读数据寄存器,与驱动接口 */
#define SetData(x) SYS_PortOut(ATA_REG_DATA,x) /* 写数据寄存器,与驱动接口 */
#define GetERR() (uint8)SYS_PortIn(ATA_REG_ERR) /* 读错误寄存器,与驱动接口 */
#define SetFeature(x) SYS_PortOut(ATA_REG_FEATURE,x) /* 写特征寄存器,与驱动接口 */
#define GetSECCNT() (uint8)SYS_PortIn(ATA_REG_SECCNT) /* 读扇区计数寄存器,与驱动接口 */
#define SetSECCNT(x) SYS_PortOut(ATA_REG_SECCNT|ATA_A1,x) /* 写扇区计数寄存器,与驱动接口 */
#define GetSector() (uint8)SYS_PortIn(ATA_REG_SECTOR) /* 读扇区寄存器,与驱动接口 */
#define SetSector(x) SYS_PortOut(ATA_REG_SECTOR,x) /* 写扇区寄存器,与驱动接口 */
#define GetCylinderLow() (uint8)SYS_PortIn(ATA_REG_CYLINDER_LOW) /* 读柱面低8位寄存器,与驱动接口 */
#define SetCylinderLow(x) SYS_PortOut(ATA_REG_CYLINDER_LOW,x) /* 写柱面低8位寄存器,与驱动接口 */
#define GetCylinderHigh() (uint8)SYS_PortIn(ATA_REG_CYLINDER_HIGH)/* 读柱面高8位寄存器,与驱动接口 */
#define SetCylinderHigh(x) SYS_PortOut(ATA_REG_CYLINDER_HIGH,x) /* 写柱面高8位寄存器,与驱动接口 */
#define GetDeviceHead() (uint8)SYS_PortIn(ATA_REG_DEVICE_HEAD) /* 读设备磁头寄存器,与驱动接口 */
#define SetDeviceHead(x) SYS_PortOut(ATA_REG_DEVICE_HEAD,x) /* 写设备磁头寄存器,与驱动接口 */
#define GetStatus() (uint8)SYS_PortIn(ATA_REG_STATUS) /* 读状态寄存器,与驱动接口 */
#define SetCommand(x) SYS_PortOut(ATA_REG_COMMAND,x) /* 写命令寄存器,与驱动接口 */
#define GetAStatus() (uint8)SYS_PortIn(ATA_REG_ASTATUS) /* 读辅助状态寄存器,与驱动接口 */
#define SetControl(x) SYS_PortOut(ATA_REG_CONTROL,x) /* 写控制寄存器,与驱动接口 */
/*硬件相关函数*/
void SYS_BusIni(void); /* ATA总线初始化处理函数 */
uint16 SYS_PortIn(uint32 reg); /* 从ATA设备指定的寄存器读出一个字 */
void SYS_PortOut(uint32 reg,uint16 data); /* 从ATA设备指定的寄存器写入一个字 */
void SYS_WaitInUS(uint32 times); /* 延时程序 */
void SYS_IdeHardReset(void); /* ATA设备硬件复位处理函数 */
uint8 SYS_HaveCard(void); /* 检测CF卡是否存在 */
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -