📄 wrsbcarm7.h
字号:
#define CasPrechargeTime0 1 /*(Tcp)0=1cycle,1=2cycle*/
#define CasStrobeTime0 2 /*(Tcs)0=1cycle ~ 3=4cycle*/
#define DRAMCON0Reserved 1 /* Must be set to 1*/
#define RAS2CASDelay0 0 /*(Trc)0=1cycle,1=2cycle*/
#define RASPrechargeTime0 2 /*(Trp)0=1cycle ~ 3=4clcyle*/
#define DRAMBasePtr0 (0x10<<10) /*=0x1000000 */
#define DRAMBasePtr0_S 0x00 /* now RAM moved to zero */
#define DRAMEndPtr0 (((LOCAL_MEM_SIZE >> 16) + 0x10) << 20) /*=0x02000000 - 32 MB */
#define DRAMEndPtr0_S ((LOCAL_MEM_SIZE >> 16) << 20) /*=0x02000000 - 32 MB */
#define NoColumnAddr0 2 /*0=8bit,1=9bit,2=10bit,3=11bits*/
#define Tcs0 (CasStrobeTime0<<1)
#define Tcp0 (CasPrechargeTime0<<3)
#define dumy0 (DRAMCON0Reserved<<4) /*dummy cycle*/
#define Trc0 (RAS2CASDelay0<<7)
#define Trp0 (RASPrechargeTime0<<8)
#define CAN0 (NoColumnAddr0<<30)
#define rDRAMCON0 (CAN0+DRAMEndPtr0+DRAMBasePtr0+Trp0+Trc0+Tcp0+Tcs0+dumy0+EDO_Mode0)
#define rDRAMCON0_S (CAN0+DRAMEndPtr0_S+DRAMBasePtr0_S+Trp0+Trc0+Tcp0+Tcs0+dumy0+EDO_Mode0)
/****************************************************************************
* -> DRAMCONx : unused RAM Banks
*/
#define rDRAMCON1 0x00
#define rDRAMCON2 0x00
#define rDRAMCON3 0x00
/****************************************************************************
* -> DRAMCON0 : RAM Bank0 control register (for SDRAM)
*/
#define SRAS2CASDelay0 1 /*(Trc)0=1cycle,1=2cycle*/
#define SRASPrechargeTime0 3 /*(Trp)0=1cycle ~ 3=4cycle*/
#define SCasPrechargeTime0 1 /*(Tcp)0=1cycle,1=2cycle*/
#define SCasStrobeTime0 2 /*(Tcs)0=1cycle ~ 3=4cycle*/
#define SNoColumnAddr0 1 /*0=8bit,1=9bit,2=10bit,3=11bits add by ghw*/
#define SCAN0 (SNoColumnAddr0<<30)
#define STrc0 (SRAS2CASDelay0<<7)
#define STrp0 (SRASPrechargeTime0<<8)
#define STcp0 (SCasPrechargeTime0<<3)
#define STcs0 (SCasStrobeTime0<<1)
#define rSDRAMCON0 (SCAN0+DRAMEndPtr0+DRAMBasePtr0+STrp0+STrc0+STcp0+STcs0)
#define rSDRAMCON0_S (SCAN0+DRAMEndPtr0_S+DRAMBasePtr0_S+STrp0+STrc0+STcp0+STcs0)
/****************************************************************************
* -> DRAMCONx : unused SYNC DRAM Banks
*/
#define rSDRAMCON1 0x00
#define rSDRAMCON2 0x00
#define rSDRAMCON3 0x00
/**************************************************************************
* -> REFEXTCON : External I/O & Memory Refresh cycle Control Register
*/
#define RefCycle 16 /*Unit [us], 1k refresh 16ms*/
/*RefCycle EQU 8 ;Unit [us], 1k refresh 16ms*/
#define CASSetupTime 0 /*0=1cycle, 1=2cycle*/
#define CASHoldTime 0 /*0=1cycle, 1=2cycle, 2=3cycle,
3=4cycle, 4=5cycle,*/
#if (((2<<11)+1-(RefCycle*fMCLK)) < 0x3FF)
#define RefCycleValue (((2<<11)+1-(RefCycle*fMCLK))<<21)
#else
#define RefCycleValue (0x3FF<<21)
#endif
#define Tcsr (CASSetupTime<<20) /* 1cycle */
#define Tcs (CASHoldTime<<17)
#define ExtIOBase 0x183fd /* Refresh enable, VSF=1*/
#define rREFEXTCON (RefCycleValue+Tcsr+Tcs+ExtIOBase)
/******************************************************************
*SRefCycle EQU 16 ;Unit [us], 4k refresh 64ms
*/
#define SRefCycle 8 /*Unit [us], 4k refresh 64ms*/
#define ROWcycleTime 3 /*0=1cycle, 1=2cycle, 2=3cycle,
3=4cycle, 4=5cycle,*/
#define SRefCycleValue ((2048+1-(SRefCycle*fMCLK))<<21)
#define STrc (ROWcycleTime<<17)
#define rSREFEXTCON (SRefCycleValue+STrc+ExtIOBase)
/* interrupt levels */
#define INT_LVL_EXTINT0 0 /* External Interrupt0 */
#define INT_LVL_EXTINT1 1 /* External Interrupt1 */
#define INT_LVL_EXTINT2 2 /* External Interrupt2 */
#define INT_LVL_EXTINT3 3 /* External Interrupt3 */
#define INT_LVL_UARTTX0 4 /* UART 0 Transmit Interrupt */
#define INT_LVL_UARTRX0 5 /* UART 0 Receive & Error Interrupt */
#define INT_LVL_UARTTX1 6 /* UART 1 Transmit Interrupt */
#define INT_LVL_UARTRX1 7 /* UART 1 Receive & Error Interrupt */
#define INT_LVL_GDMA0 8 /* GDMA channel 0 interrupt*/
#define INT_LVL_GDMA1 9 /* GDMA channel 1 interrupt */
#define INT_LVL_TIMER0 10 /* Timer 0 Interrupt */
#define INT_LVL_TIMER1 11 /* Timer 1 Interrupt */
#define INT_LVL_HDLCTxA 12 /* HDLC channel A Tx interrupt*/
#define INT_LVL_HDLCRxA 13 /* HDLC channel A Rx interrupt*/
#define INT_LVL_HDLCTxB 14 /* HDLC channel B Tx interrupt*/
#define INT_LVL_HDLCRxB 15 /* HDLC channel B Rx interrupt*/
#define INT_LVL_BDMATx 16 /* Ethernet controller BDMA Tx Interrupt */
#define INT_LVL_BDMARx 17 /* Ethernet controller BDMA Rx Interrupt */
#define INT_LVL_MACTx 18 /* Ethernet controller MAC Tx Interrupt*/
#define INT_LVL_MACRx 19 /* Ethernet controller MAC Rx Interrupt */
#define INT_LVL_IIC 20 /* IIC -Bus Interrupt */
/* interrupt vectors */
#define INT_VEC_EXTINT0 IVEC_TO_INUM(INT_LVL_EXTINT0) /* External Interrupt0 */
#define INT_VEC_EXTINT1 IVEC_TO_INUM(INT_LVL_EXTINT1) /* External Interrupt1*/
#define INT_VEC_EXTINT2 IVEC_TO_INUM(INT_LVL_EXTINT2) /* External Interrupt2*/
#define INT_VEC_EXTINT3 IVEC_TO_INUM(INT_LVL_EXTINT3) /* External Interrupt3*/
#define INT_VEC_UARTTX0 IVEC_TO_INUM(INT_LVL_UARTTX0) /* UART 0 Transmit Interrupt */
#define INT_VEC_UARTRX0 IVEC_TO_INUM(INT_LVL_UARTRX0) /* UART 0 Receive & Error Interrupt */
#define INT_VEC_UARTTX1 IVEC_TO_INUM(INT_LVL_UARTTX1) /* UART 1 Transmit Interrupt */
#define INT_VEC_UARTRX1 IVEC_TO_INUM(INT_LVL_UARTRX1) /* UART 1 Receive & Error Interrupt */
#define INT_VEC_GDMA0 IVEC_TO_INUM(INT_LVL_GDMA0) /* GDMA channel 0 interrupt*/
#define INT_VEC_GDMA1 IVEC_TO_INUM(INT_LVL_GDMA1) /* GDMA channel 0 interrupt*/
#define INT_VEC_TIMER0 IVEC_TO_INUM(INT_LVL_TIMER0) /* Timer 0 Interrupt */
#define INT_VEC_TIMER1 IVEC_TO_INUM(INT_LVL_TIMER1) /* Timer 1 Interrupt */
#define INT_VEC_HDLCTxA IVEC_TO_INUM(INT_LVL_HDLCTxA) /* HDLC channel A Tx interrupt */
#define INT_VEC_HDLCRxA IVEC_TO_INUM(INT_LVL_HDLCRxA) /* HDLC channel A Rx interrupt*/
#define INT_VEC_HDLCTxB IVEC_TO_INUM(INT_LVL_HDLCTxB) /* HDLC channel B Tx interrupt*/
#define INT_VEC_HDLCRxB IVEC_TO_INUM(INT_LVL_HDLCRxB) /* HDLC channel B Rx interrupt*/
#define INT_VEC_BDMATx IVEC_TO_INUM(INT_LVL_BDMATx) /* Ethernet controller BDMA Tx Interrupt */
#define INT_VEC_BDMARx IVEC_TO_INUM(INT_LVL_BDMARx) /* Ethernet controller BDMA Rx Interrupt */
#define INT_VEC_MACTx IVEC_TO_INUM(INT_LVL_MACTx) /* Ethernet controller MAC Tx Interrupt*/
#define INT_VEC_MACRx IVEC_TO_INUM(INT_LVL_MACRx) /* Ethernet controller MAC Rx Interrupt */
#define INT_VEC_IIC IVEC_TO_INUM(INT_LVL_IIC) /* IIC -Bus Interrupt */
/**********************************************************************************************************
* Cache Definitions
*
*/
#define NON_CACHE_REGION 0x4000000
#define SBCARM7_CACHE_ENABLE 0x02
#define SBCARM7_CACHE_4K 0x00
#define SBCARM7_CACHE_8K 0x10
#define SBCARM7_CACHE_MODE 0x30
#define SBCARM7_WRITE_BUFF 0x04
#define SBCARM7_TAGRAM 0x11000000
/*
*
* definitions for the SBCARM7 Timer:
* two timers clocked from same source and with the same reload overhead
*/
#define SBCARM7_TIMER_SYS_TC_DISABLE (TC_DISABLE | TC_PERIODIC | TC_DIV16)
#define SBCARM7_TIMER_SYS_TC_ENABLE (TC_ENABLE | TC_PERIODIC | TC_DIV16)
#define SBCARM7_TIMER_AUX_TC_DISABLE (TC_DISABLE | TC_PERIODIC | TC_DIV16)
#define SBCARM7_TIMER_AUX_TC_ENABLE (TC_ENABLE | TC_PERIODIC | TC_DIV16)
#define SYS_TIMER_CLK (SBCARM7_CPU_SPEED) /* Frequency of counter/timer */
#define AUX_TIMER_CLK (SBCARM7_CPU_SPEED) /* Frequency of counter/timer */
#define SBCARM7_RELOAD_TICKS 3 /* three ticks to reload timer */
#define SYS_TIMER_CLEAR(x) (SBCARM7_TIMER_T1CLEAR(x)) /* sys Clk is timer 1 */
#define SYS_TIMER_CTRL(x) (SBCARM7_TIMER_T1CTRL(x))
#define SYS_TIMER_LOAD(x) (SBCARM7_TIMER_T1LOAD(x))
#define SYS_TIMER_VALUE(x) (SBCARM7_TIMER_T1VALUE(x))
#define SBCARM7_TIMER_VALUE_MASK 0xFFFF
#define AUX_TIMER_CLEAR(x) (SBCARM7_TIMER_T2CLEAR(x)) /* aux Clk is timer 2 */
#define AUX_TIMER_CTRL(x) (SBCARM7_TIMER_T2CTRL(x))
#define AUX_TIMER_LOAD(x) (SBCARM7_TIMER_T2LOAD(x))
#define AUX_TIMER_VALUE(x) (SBCARM7_TIMER_T2VALUE(x))
#define SYS_TIMER_INT_LVL (INT_LVL_TIMER0)
#define AUX_TIMER_INT_LVL (INT_LVL_TIMER1)
/******************************************************************************************
* Clock rates depend upon CPU power and work load of application.
* The values below are minimum and maximum allowed by the hardware.
* Note that it takes 3 ticks to reload the 16-bit counter and we don't
* accept values that would mean a zero reload value as we don't know what
* that will do.
* So:
* min frequency = roundup(clock_rate/(max_counter_value+3))
* max frequency = rounddown(clock_rate/(min_counter_value+3))
* i.e. SYS_CLK_RATE_MAX (SYS_TIMER_CLK/4)
* However, we must set maxima that are sustainable on a running
* system. Experiments suggest that a 16MHz PID board can sustain a
* maximum clock rate of 10000 to 10500. The values below have been
* chosen so that there is a reasonable margin and the BSP passes the
* test suite.
*/
#define SYS_CLK_RATE_MIN 10
#define SYS_CLK_RATE_MAX 10000
#define AUX_CLK_RATE_MIN 2
#define AUX_CLK_RATE_MAX 10000
#define SBCARM7_RESET_RAM_BASE 0x100000 RAM base in reset memory map */
/*
* Our MAC address definition. User can change this value as
* per requirement. Note, the least significant byte of the
* address is changed to the value of the user DIP switch setting.
* SW4-D0 is the least significant bit of this byte. Open=0.
*/
#define ETHERNET_MAC_ADRS { 0x00, 0xA0, 0x88, 0x88, 0x88, 0x00 }
#ifdef __cplusplus
}
#endif
#endif /* INCsbcarm7h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -