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

📄 hardware.h

📁 基于arm嵌入式处理器的USB驱动代码及详细pdf中文手册
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef _HARDWARE_H
#define _HARDWARE_H

#include "hardware_reg.h"

//***************************************
//PMU module clk
//*************************************
#define	CLK_INTC	(1 << 14)
#define	CLK_PMU		(1 << 13)
#define	CLK_RTC		(1 << 12)
#define	CLK_GPT		(1 << 11)
#define	CLK_SPI		(1 << 10)
#define	CLK_UART0	(1 << 9)
#define	CLK_UART1	(1 << 8)
#define	CLK_GPIO	(1 << 7)
#define	CLK_MMC		(1 << 6)
#define	CLK_AC97	(1 << 5)
#define	CLK_DMA		(1 << 4)
#define	CLK_MMA		(1 << 3)
#define	CLK_LCDC	(1 << 2)
#define	CLK_ESRAM	(1 << 1)
#define	CLK_EMI		(1)


/*************************************
	macros for INTC
*************************************/

/*interrupt resources */


#define		INT_RTC					31		
#define		INT_DMA					30	
#define		INT_EMI					29
#define		INT_GPT					28
#define		INT_USB					27
#define		INT_SPI					26
#define 	INT_MMC					25
#define		INT_UART1				24
#define		INT_UART2				23
#define		INT_I2C					22
#define		INT_AC97				21
#define		INT_MMA					20	
#define		INT_EXT17				19	
#define		INT_EXT16				18
#define		INT_EXT15				17	
#define		INT_EXT0				15
#define		INT_EXT1				1				
#define		INT_EXT2				13
#define		INT_EXT3				12
#define		INT_EXT4				11
#define		INT_EXT5				10
#define		INT_EXT6				9
#define		INT_EXT7				8
#define		INT_EXT8				7
#define		INT_EXT9				6
#define		INT_EXT10				5
#define		INT_EXT11				4
#define		INT_EXT12				3
#define		INT_EXT13				2
#define		INT_EXT14				14


/*************************************
	macros  for RTC
*************************************/
#define 		RTC_CTRL_RTCEN	0XFFFFFFFE	//bit0 to be 0 is effective
#define 		RTC_CTRL_WDOGEN	0X02		//bit1 to be 1 is effective

#define 		RTC_IEN_SAMON		0X01		//Sample int enable on
#define 		RTC_IEN_SECON		0X02		//Second roll int enable on
#define 		RTC_IEN_MINON		0x04		//Minute roll int enable on
#define 		RTC_IEN_ALMON 		0X08		//Alarm int enable on
#define 		RTC_IEN_WDOGON 	~(1 << 4)	//Watchdog int enable on
#define 		RTC_IEN_RESET		0X20	//When watchdog timeout,reset request to reset module enable bit

#define 		RTC_ISTAS_SAM		0X01
#define 		RTC_ISTAS_SEC		0X02
#define 		RTC_ISTAS_MIN		0X04
#define 		RTC_ISTAS_ALM		0X08
#define 		RTC_ISTAS_WDOG	0X10

#define 		RTC_WSVCE_VAL		0xAAAA


/****************************************
	macros for GPT
****************************************/
#define 		GPT1_CNTL_GPTEN	0X01
#define 		GPT1_CNTL_NOCLK	0X00
#define 		GPT1_CNTL_SYSCLK		(0X01 << 1)
#define 		GPT1_CNTL_SYSCLK8		(0X02 << 1)
#define 		GPT1_CNTL_SYSCLK16	(0X03 << 1)
#define 		GPT1_CNTL_COMIEN	0X10
#define		GPT1_CNTL_NOCAP		0X00
#define		GPT1_CNTL_CAPUP		(0X01 << 6)
#define		GPT1_CNTL_CAPDOWN	(0X02 << 6)
#define		GPT1_CNTL_CAPALL		(0X03 << 6)
#define		GPT1_CNTL_FREERUN		(1 << 8)
#define 		GPT1_CNTL_PWM		(1 << 18)
#define 		GPT1_CNTL_SWR		(1 << 15)


#define 		GPT1_STAS_CMP		0X01
#define 		GPT1_STAS_CAP		0X02

/*****************************************
	macros for UART
*****************************************/
#define 		UART1_IER_MODEM	0X01
#define		UART1_IER_RLS		0X02
#define		UART1_IER_THR		0X04
#define		UART1_IER_RDA		0X08

#define		UART1_IIR_MODEM	0X00
#define		UART1_IIR_THR		0X01
#define		UART1_IIR_RDA		0X02
#define		UART1_IIR_RLS		0X03
#define		UART1_IIR_TMO		0X06

#define		UART1_LCR_DIV		0X80

/*****************************************
	macros for PWM
*****************************************/
#define		PWM1_CNTL_PWM	(1 << 18)
#define		PWM1_CNTL_DMA	(1 << 17)
#define		PWM1_CNTL_RST		(1 << 16)
#define		PWM1_CNTL_CLK32	(1 << 15)
#define		PWM1_CNTL_IEN		(1 << 13)
#define		PWM1_CNTL_WOK	(1 << 12)
#define		PWM1_CNTL_PWMEN	(1 << 11)
#define		PWM1_CNTL_NOREP	0X00
#define		PWM1_CNTL_REP2	(0X01 << 9)
#define		PWM1_CNTL_REP3	(0X10 << 9)
#define		PWM1_CNTL_REP7	(0X11 << 9)
#define		PWM1_CNTL_32K		0X00
#define		PWM1_CNTL_16K		0X01
#define		PWM1_CNTL_8K		0X10
#define		PWM1_CNTL_4K		0X11




/*****************************************
	macros for EMI
*****************************************/


#define	EMIADDR_CSGBAB_val		0x24002000          		//base adress of csa:0x20000000
                                                            //base adress of csb:0x24000000(none now)
													 
#define	EMIADDR_CSGBCD_val		0x2c002800     		    	//base adress of csc:0x28000000
       					                					//base adress of csc:0x2C000000(none now)   
       					                	
#define	EMIADDR_CSGBEF_val		0x34003000    				//base adress of csc:0x30000000
                                                            //base adress of csc:0x34000000 

#define	EMIADDR_SMCONF_val	   	0x9b010333  	 			//write cycle: 3     read cycle:3
									//csa:32_bit sram
									//csb:none
									//csc:32_bit sram
									//csd:none
									//cde:16_bit sdram
									//cdf:32 bit sdram


#define EMIADDR_SDCONF1_val		0x0110a077			//12 row * 9 column
													//non_Interleaved Address Mode
													//2 row every flesh clock edge
													//hang_up after 64 clocks after last access
													//CAS = 2 clock
													//3 clock between precharge and active command
													//4 clock between active and write/read command toward the same bank
													//7 clock between refresh command and later commands
									
#define EMIADDR_SDCONF2_val		0x80001860			//Initialize sdam;
													//refresh cyccle:64*0x186 clocks
													//refresh all rows once a time


#define EMIADDR_NANDCONF_VAL    0x02200aaa          //4 address 0x1aa3aa      
                                                    //Trr 10 cycles
                                                    //Tclh 2 cycles
                                                    //Talh 2 cycles
                                                    //Twh  3 cycles
                                                    //Read_width 10 cycles
                                                    //Writ_width 10 cycles
                                                                                                       
                                                    
/*****************************************
	macros for MMC
*****************************************/  
#define SD  0
#define MMC 1
#define	CARD 1
                                                 
#define	MMC_GO_IDLE_STATE         0   	// bc                          
#define MMC_SEND_OP_COND          1  		 // bcr  [31:0]  OCR        R3  
#define MMC_ALL_SEND_CID          2   		// bcr                     R2  
#define MMC_SET_RELATIVE_ADDR     3   	// ac   [31:16] RCA        R1  
#define MMC_SET_DSR               4   			// bc   [31:16] RCA            
#define MMC_SET_BUS_WIDTH         6   		//
#define MMC_SELECT_CARD           7   		// ac   [31:16] RCA        R1  
#define MMC_SEND_CSD              9   		// ac   [31:16] RCA        R2  
#define MMC_SEND_CID             10   		// ac   [31:16] RCA        R2  
#define MMC_READ_DAT_UNTIL_STOP  11   	// adtc [31:0] dadr        R1  
#define MMC_STOP_TRANSMISSION    12   	// ac                      R1b 
#define MMC_SEND_STATUS	         13   	// ac   [31:16] RCA        R1  
#define MMC_GO_INACTIVE_STATE    15   	// ac   [31:16] RCA            

                                            /* class 2 */
#define MMC_SET_BLOCKLEN         16   		// ac   [31:0] block len   R1  
#define MMC_READ_SINGLE_BLOCK    17   	// adtc [31:0] data addr   R1  
#define MMC_READ_MULTIPLE_BLOCK  18   	// adtc [31:0] data addr   R1  

                                           // class 3 */
#define MMC_WRITE_DAT_UNTIL_STOP 20   	// adtc [31:0] data addr   R1  

                                             // class 4 */
#define MMC_SET_BLOCK_COUNT      23   	// adtc [31:0] data addr   R1  
#define MMC_WRITE_BLOCK          24   		// adtc [31:0] data addr   R1  
#define MMC_WRITE_MULTIPLE_BLOCK 25   	// adtc                    R1  
#define MMC_PROGRAM_CID          26   		// adtc                    R1  
#define MMC_PROGRAM_CSD          27   		// adtc                    R1  

                    // class 5 */
#define  MMC_ERASE_SECTOR_START        32                   
#define  MMC_ERASE_SECTOR_END            33
#define  MMC_UNTAG_SECTOR                     34
#define MMC_ERASE_GROUP_START    35   	// ac   [31:0] data addr   R1  
#define MMC_ERASE_GROUP_END      36   	///ac   [31:0] data addr   R1 
#define MMC_UNTAG_GROUP           37
#define MMC_ERASE                38   			// ac                      R1b 

⌨️ 快捷键说明

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