📄 sysata.h
字号:
#ifndef _SYSATA_H
#define _SYSATA_H
#include "def.h"
/****************************************************************************************/
/** 与用户硬件相关部分,用户需要改动 */
/****************************************************************************************/
// CF_CARD PIN[26] C\D\(卡插入检测) S3C2410A[ GPG7 ]
// CF_CARD PIN[33] VS1(CF卡电压检测) S3C2410A[ GPG8 ]
// CF_CARD PIN[42] IORDY(IO准备好) S3C2410A[ GPE12 ]
// CF_CARD PIN[37] INTRQ(CF卡中断) S3C2410A[ EINT3 ] GPF3
// CF_CARD 电源控制使能 S3C2410A[ GPH10 ]
#define CFCard_Power(a) ( rGPHDAT = ( rGPHDAT&(~(1<<10)) ) | ((a&1)<<10) )
#define CFCard_Dected ( rGPGDAT&(1<<7) )
#define CF_Vcc_Dected ( rGPGDAT&(1<<8) )
#define CFCard_Ready ( rGPEDAT&(1<<12) )
//****************************************************************************************
//CF卡的控制逻辑
// assign CF_CS1 = ! ( (!nGCS5) && (!ADDR[4]) && (ADDR[5]) ) ;
// assign CF_CS2 = ! ( (!nGCS5) && (ADDR[4]) && (ADDR[5]) ) ;
//****************************************************************************************
/* S3C44B0X和CF Card接口连接 16位总线模式*/
#define IDE_A0 (1<<1) //
#define IDE_A1 (1<<2) //
#define IDE_A2 (1<<3) //
#define IDE_CS0 ( 0x28000020 ) //
#define IDE_CS1 ( 0x28000030 ) //
/*GPIO引脚影射寄存器地址*/
#define ATA_REG_DATA IDE_CS0 /*数据寄存器*/
#define ATA_REG_ERR (IDE_CS0 + IDE_A0) /*读错误寄存器*/
#define ATA_REG_FEATURE (IDE_CS0 + IDE_A0) /*写功能寄存器*/
#define ATA_REG_SECCNT (IDE_CS0 + IDE_A1) /*扇区计数器*/
#define ATA_REG_SECTOR (IDE_CS0 + IDE_A1 + IDE_A0) /*扇区号*/
#define ATA_REG_CYLINDER_LOW (IDE_CS0 + IDE_A2) /*柱面低8位*/
#define ATA_REG_CYLINDER_HIGH (IDE_CS0 + IDE_A2 + IDE_A0) /*柱面高8位*/
#define ATA_REG_DEVICE_HEAD (IDE_CS0 + IDE_A2 + IDE_A1) /*选择主从,模式,磁头*/
#define ATA_REG_COMMAND (IDE_CS0 + IDE_A2 + IDE_A1 + IDE_A0)/*写命令寄存器*/
#define ATA_REG_STATUS (IDE_CS0 + IDE_A2 + IDE_A1 + IDE_A0)/*读状态寄存器*/
#define ATA_REG_CONTROL (IDE_CS1 + IDE_A2 + IDE_A1) /*写控制寄存器*/
#define ATA_REG_ASTATUS (IDE_CS1 + IDE_A2 + IDE_A1) /*读辅助状态寄存器*/
/*************************************************************************************************/
/*驱动与硬件对ATA设备寄存器操作接口*/
#define GetData() inportw(ATA_REG_DATA) /*读数据寄存器,与驱动接口*/
#define SetData(x) outportw(x,ATA_REG_DATA) /*写数据寄存器,与驱动接口*/
#define GetERR() inportw(ATA_REG_ERR) /*读错误寄存器,与驱动接口*/
#define SetFeature(x) outportw(x,ATA_REG_FEATURE) /*写特征寄存器,与驱动接口*/
#define GetSECCNT() inportw(ATA_REG_SECCNT) /*读扇区计数寄存器,与驱动接口*/
#define SetSECCNT(x) outportw(x,ATA_REG_SECCNT) /*写扇区计数寄存器,与驱动接口*/
#define GetSector() inportw(ATA_REG_SECTOR) /*读扇区寄存器,与驱动接口*/
#define SetSector(x) outportw(x,ATA_REG_SECTOR) /*写扇区寄存器,与驱动接口*/
#define GetCylinderLow() inportw(ATA_REG_CYLINDER_LOW) /*读柱面低8位寄存器,与驱动接口*/
#define SetCylinderLow(x) outportw(x,ATA_REG_CYLINDER_LOW) /*写柱面低8位寄存器,与驱动接口*/
#define GetCylinderHigh() inportw(ATA_REG_CYLINDER_HIGH) /*读柱面高8位寄存器,与驱动接口*/
#define SetCylinderHigh(x) outportw(x,ATA_REG_CYLINDER_HIGH) /*写柱面高8位寄存器,与驱动接口*/
#define GetDeviceHead() inportw(ATA_REG_DEVICE_HEAD) /*读设备磁头寄存器,与驱动接口*/
#define SetDeviceHead(x) outportw(x,ATA_REG_DEVICE_HEAD) /*写设备磁头寄存器,与驱动接口*/
#define GetStatus() inportw(ATA_REG_STATUS) /*读状态寄存器,与驱动接口*/
#define SetCommand(x) outportw(x,ATA_REG_COMMAND) /*写命令寄存器,与驱动接口*/
#define GetAStatus() inportw(ATA_REG_ASTATUS) /*读辅助状态寄存器,与驱动接口*/
#define SetControl(x) outportw(x,ATA_REG_CONTROL) /*写控制寄存器,与驱动接口*/
/*硬件相关函数*/
void SYS_BusIni(void); /*ATA总线初始化函数*/
void SYS_IdeHardReset(void); /*硬件复位*/
U8 SYS_HaveCard(void); /*检测CF卡是否存在*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -