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

📄 sysata.h

📁 该原码包含有wince 和 linux 的移植和应用原码
💻 H
字号:

#ifndef _SYSATA_H
#define _SYSATA_H

#include "def.h"
/****************************************************************************************/
/**	与用户硬件相关部分,用户需要改动													*/
/****************************************************************************************/
//  CF_CARD PIN[26]		C\D\(卡插入检测)		S3C44B0X[ GPE3 ]
//  CF_CARD PIN[42]		IORDY(IO准备好)			S3C44B0X[ GPE4 ]
//  CF_CARD 电源控制使能						S3C44B0X[ GPB5 ]
#define CFCard_Power(a)		( rPDATB = ( rPDATB&(~(1<<5)) ) | ((a&1)<<5) )
#define CFCard_Dected		( (rPDATE>>3) & 0x1 )	
#define CFCard_Ready		( (rPDATE>>4) & 0x1 )	

//****************************************************************************************
//CF卡的控制逻辑
//assign CF_CS1 = ! ( (!nGCS2) && (!ADDR[23]) && ADDR[22] && ADDR[21] && (!ADDR[20]) ) ; 
//assign CF_CS2 = ! ( (!nGCS2) && (!ADDR[23]) && ADDR[22] && (!ADDR[21]) && ADDR[20] ) ; 
//****************************************************************************************

/*    S3C44B0X和CF Card接口连接       16位总线模式*/
#define    	IDE_A0    	 	(1<<1)    	/* EeayARM2200和IDE接口直接相连,p1.16 */
#define    	IDE_A1   	   	(1<<2)    	/* EeayARM2200和IDE接口直接相连,p1.17 */
#define    	IDE_A2      	(1<<3)    	/* EeayARM2200和IDE接口直接相连,p1.18 */
#define    	IDE_CS0     	( (0x4000000)|(0x6<<20) )    	/* EeayARM2200和IDE接口直接相连,p1.19 */
#define    	IDE_CS1     	( (0x4000000)|(0x5<<20) )   	/* EeayARM2200和IDE接口直接相连,p1.20 */

/*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 + -