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

📄 sysata.h

📁 arm9 嵌入式系统开发与实践光盘
💻 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 + -