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

📄 sysata.h

📁 ARM嵌入式系统软件开发实例(一) 里面含有很多UCOS教程和源码
💻 H
字号:

#ifndef _SYSATA_H
#define _SYSATA_H
/****************************************************************************************/
/**	与用户硬件相关部分,用户需要改动													*/
/****************************************************************************************/

/*    EeayARM2200和IDE接口连接        	*/
#ifdef ATA_BUS_AT_8bit		/*8位总线*/
#define		ATA_DATA		0x00ff0000	/* EeayARM2200和IDE接口直接相连,p2.16~p2.23 */
#else						/*16位总线*/
#define		ATA_DATA		0xffff0000	/* EeayARM2200和IDE接口直接相连,p2.16~p2.31 */
#endif
#define    	IDE_A0    	 	(1<<16)    	/* EeayARM2200和IDE接口直接相连,p1.16 */
#define    	IDE_A1   	   	(1<<17)    	/* EeayARM2200和IDE接口直接相连,p1.17 */
#define    	IDE_A2      	(1<<18)    	/* EeayARM2200和IDE接口直接相连,p1.18 */
#define    	IDE_CS0     	(1<<19)    	/* EeayARM2200和IDE接口直接相连,p1.19 */
#define    	IDE_CS1     	(1<<20)   	/* EeayARM2200和IDE接口直接相连,p1.20 */
#define 	IDE_DMACK		(1<<21)		/* EeayARM2200和IDE接口直接相连,p1.21 */
#define		IDE_CSEL		(1<<23)		/* EeayARM2200和IDE接口直接相连,p1.23 */
#define		IDE_IOCS16		(1<<24)		/* EeayARM2200和IDE接口直接相连,p1.24 */
#define		IDE_PDIAG		(1<<25)		/* EeayARM2200和IDE接口直接相连,p1.25 */

#define    	IDE_RST    		(1<<17)		/* EeayARM2200和IDE接口直接相连,p0.17 */
#define		IDE_DMAREQ		(1<<18)		/* EeayARM2200和IDE接口直接相连,p0.18 */
#define    	IDE_WR      	(1<<19)		/* EeayARM2200和IDE接口直接相连,p0.19 */
#define		IDE_INTRQ		(1<<20)		/* EeayARM2200和IDE接口直接相连,p0.20 */
#define    	IDE_RD      	(1<<21)		/* EeayARM2200和IDE接口直接相连,p0.21 */

/* EeayARM2200 */
/*GPIO方向与*/
//#define		OUT_PUT_P0				(IDE_RST + IDE_WR + IDE_RD)			/*P0口所有PGIO输出的引脚*/
//#define		Read_Write_at_P0		(IDE_WR + IDE_RD)					/*P0口读写输出的引脚*/
//#define		IN_PUT_P0				(IDE_DMAREQ + IDE_INTRQ)			/*P0口所有PGIO输入的引脚*/
//#define		MASK_P0					(~(IDE_RST + IDE_WR + IDE_RD))		/**/
//#define		OUT_PUT_P1				(IDE_A0 + IDE_A1 +IDE_A2 + IDE_CS0 + IDE_CS1 + IDE_CSEL)
#define		Addr_CS_at_P1 			(IDE_A0 + IDE_A1 +IDE_A2 + IDE_CS0 + IDE_CS1)
//#define		IN_PUT_P1				(IDE_DMACK + IDE_IOCS16 + IDE_PDIAG)
//#define		MASK_P1					(~(IDE_A0 + IDE_A1 +IDE_A2 + IDE_CS0 + IDE_CS1 + IDE_CSEL))
//#define		OUT_PUT_P2				ATA_DATA
#define		MASK_DATA					(~ATA_DATA)

/*GPIO引脚影射寄存器地址*/
#define    	ATA_REG_DATA          	IDE_CS1								/*数据寄存器*/ 
#define    	ATA_REG_ERR           	(IDE_CS1 + IDE_A0)					/*读错误寄存器*/ 
#define    	ATA_REG_FEATURE       	(IDE_CS1 + IDE_A0)					/*写功能寄存器*/ 
#define    	ATA_REG_SECCNT        	(IDE_CS1 + IDE_A1)					/*扇区计数器*/ 
#define    	ATA_REG_SECTOR        	(IDE_CS1 + IDE_A1 + IDE_A0)			/*扇区号*/ 
#define    	ATA_REG_CYLINDER_LOW  	(IDE_CS1 + IDE_A2)					/*柱面低8位*/ 
#define    	ATA_REG_CYLINDER_HIGH 	(IDE_CS1 + IDE_A2 + IDE_A0)			/*柱面高8位*/ 
#define    	ATA_REG_DEVICE_HEAD   	(IDE_CS1 + IDE_A2 + IDE_A1)			/*选择主从,模式,磁头*/ 
#define    	ATA_REG_COMMAND       	(IDE_CS1 + IDE_A2 + IDE_A1 + IDE_A0)/*写命令寄存器*/ 
#define    	ATA_REG_STATUS        	(IDE_CS1 + IDE_A2 + IDE_A1 + IDE_A0)/*读状态寄存器*/ 
#define    	ATA_REG_CONTROL       	(IDE_CS0 + IDE_A2 + IDE_A1)			/*写控制寄存器*/ 
#define    	ATA_REG_ASTATUS       	(IDE_CS0 + IDE_A2 + IDE_A1) 		/*读辅助状态寄存器*/ 		

/*************************************************************************************************/
/*驱动与硬件对ATA设备寄存器操作接口*/
#define		GetData()			SYS_PortIn(ATA_REG_DATA)				/*读数据寄存器,与驱动接口*/
#define		SetData(x)			SYS_PortOut(ATA_REG_DATA,x)				/*写数据寄存器,与驱动接口*/

#define		GetERR()			SYS_PortIn(ATA_REG_ERR)					/*读错误寄存器,与驱动接口*/
#define		SetFeature(x)		SYS_PortOut(ATA_REG_FEATURE,x)			/*写特征寄存器,与驱动接口*/

#define		GetSECCNT()			SYS_PortIn(ATA_REG_SECCNT)				/*读扇区计数寄存器,与驱动接口*/
#define		SetSECCNT(x)		SYS_PortOut(ATA_REG_SECCNT,x)			/*写扇区计数寄存器,与驱动接口*/

#define		GetSector()			SYS_PortIn(ATA_REG_SECTOR)				/*读扇区寄存器,与驱动接口*/
#define		SetSector(x)		SYS_PortOut(ATA_REG_SECTOR,x)			/*写扇区寄存器,与驱动接口*/

#define		GetCylinderLow()	SYS_PortIn(ATA_REG_CYLINDER_LOW)		/*读柱面低8位寄存器,与驱动接口*/
#define		SetCylinderLow(x)	SYS_PortOut(ATA_REG_CYLINDER_LOW,x)		/*写柱面低8位寄存器,与驱动接口*/

#define		GetCylinderHigh()	SYS_PortIn(ATA_REG_CYLINDER_HIGH)		/*读柱面高8位寄存器,与驱动接口*/
#define		SetCylinderHigh(x)	SYS_PortOut(ATA_REG_CYLINDER_HIGH,x)	/*写柱面高8位寄存器,与驱动接口*/

#define		GetDeviceHead()		SYS_PortIn(ATA_REG_DEVICE_HEAD)			/*读设备磁头寄存器,与驱动接口*/
#define		SetDeviceHead(x)	SYS_PortOut(ATA_REG_DEVICE_HEAD,x)		/*写设备磁头寄存器,与驱动接口*/

#define		GetStatus()			SYS_PortIn(ATA_REG_STATUS)				/*读状态寄存器,与驱动接口*/
#define		SetCommand(x)		SYS_PortOut(ATA_REG_COMMAND,x)			/*写命令寄存器,与驱动接口*/

#define		GetAStatus()		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设备指定的寄存器读出一个字(2字节)*/ 
void 	SYS_PortOut(uint32 reg,uint16 data);		/*从ATA设备指定的寄存器写入一个字*/ 
void 	SYS_IdeHardReset(void);						/*硬件复位*/
uint8 	SYS_HaveCard(void);							/*检测CF卡是否存在*/



#endif

⌨️ 快捷键说明

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