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

📄 aaed2000.h

📁 开放源码实时操作系统源码.
💻 H
📖 第 1 页 / 共 2 页
字号:
#define AAEC_SSP_IIR_ROR            6            // Rx overrun
#define AAEC_SSP_IIR_TI             1            // Tx FIFO less than half full
#define AAEC_SSP_IIR_RI             0            // Rx FIFO more than half full
#define AAEC_SSP_ICR              0x80000B08   // Interrupt Clear register (write)
#define AAEC_SSP_DR               0x80000B0C   // Data [FIFO] register
#define AAEC_SSP_CPSR             0x80000B10   // Clock prescale
#define AAEC_SSP_SR               0x80000B14   // Status register
#define AAEC_SSP_SR_RFF             8            // Rx FIFO full
#define AAEC_SSP_SR_TFE             7            // Tx FIFO empty
#define AAEC_SSP_SR_ROR             6            // Rx FIFO overrun
#define AAEC_SSP_SR_RHF             5            // Rx FIFO half full
#define AAEC_SSP_SR_THE             4            // Tx FIFO half empty
#define AAEC_SSP_SR_BSY             3            // SSP is busy
#define AAEC_SSP_SR_RNE             2            // Rx FIFO not empty
#define AAEC_SSP_SR_TNF             1            // Tx FIFO not full

//---------------------------------------------------------------------------
// Timer/counter
#define AAEC_TMR_T1_BASE          0x80000C00   // Timer #1 - preload
#define AAEC_TMR_T1LOAD           0x80000C00   // Timer #1 - preload
#define AAEC_TMR_T1VALUE          0x80000C04   // Timer #1 - current value
#define AAEC_TMR_T1CONTROL        0x80000C08   // Timer #1 - control
#define AAEC_TMR_T1EOI            0x80000C0C   // Timer #1 - clear [end] interrupt
#define AAEC_TMR_T2LOAD           0x80000C20   // Timer #2 - preload
#define AAEC_TMR_T2VALUE          0x80000C24   // Timer #2 - current value
#define AAEC_TMR_T2CONTROL        0x80000C28   // Timer #2 - control
#define AAEC_TMR_T2EOI            0x80000C2C   // Timer #2 - clear [end] interrupt
#define AAEC_TMR_BZCONT           0x80000C40
#define AAEC_TMR_T3LOAD           0x80000C80   // Timer #3 - preload
#define AAEC_TMR_T3VALUE          0x80000C84   // Timer #3 - current value
#define AAEC_TMR_T3CONTROL        0x80000C88   // Timer #3 - control
#define AAEC_TMR_T3EOI            0x80000C8C   // Timer #3 - clear [end] interrupt

#define AAEC_TMR_TxLOAD_OFFSET    0
#define AAEC_TMR_TxVALUE_OFFSET   4
#define AAEC_TMR_TxCONTROL_OFFSET 8
#define AAEC_TMR_TxEOI_OFFSET     12

#define AAEC_TMR_TxCONTROL_ENABLE   (1<<7)       // Enable (start) timer
#define AAEC_TMR_TxCONTROL_MODE     (1<<6)       // Operating mode
#define AAEC_TMR_TxCONTROL_MODE_FREE     (0x00&AAEC_TMR_TxCONTROL_MODE)
#define AAEC_TMR_TxCONTROL_MODE_PERIODIC (0xFF&AAEC_TMR_TxCONTROL_MODE)
#define AAEC_TMR_TxCONTROL_CLKSEL   (1<<3)       // Clock select (timer 1,2)
#define AAEC_TMR_TxCONTROL_508KHZ   (1<<3)
#define AAEC_TMR_TxCONTROL_2KHZ     (0<<3)

#define AAEC_TMR_TxCONTROL_508KHZ_uS(_n_) ((_n_)*508000/1000000)

//---------------------------------------------------------------------------
// RTC
#define AAEC_RTC_RTCEOI           0x80000d10   // RTC end of interrupt

//---------------------------------------------------------------------------
// GPIO registers
#define AAEC_PCDR                 0x80000e08
#define AAEC_PBDDR                0x80000e14
#define AAEC_PCCDR                0x80000e18
#define AAEC_KSCAN                0x80000e28
#define AAEC_PINMUX               0x80000e2c
#define AAEC_PFDR                 0x80000e30
#define AAEC_PFDDR                0x80000e34
#define AAEC_GPIO_INT_TYPE1       0x80000e4c
#define AAEC_GPIO_INT_TYPE2       0x80000e50
#define AAEC_GPIO_FEOI            0x80000e54
#define AAEC_GPIO_INTEN           0x80000e58
#define AAEC_GPIO_INT_STATUS      0x80000e5c
#define AAEC_PINMUX_UART3CON      0x00000008
#define AAEC_PINMUX_CODECON       0x00000004
#define AAEC_PINMUX_PD0CON        0x00000002
#define AAEC_PINMUX_PE0CON        0x00000001


//---------------------------------------------------------------------------
// Static memory controller
#define AAEC_SMCBCR0              0x80002000
#define AAEC_SMCBCR1              0x80002004
#define AAEC_SMCBCR2              0x80002008
#define AAEC_SMCBCR3              0x8000200c

#define AAEC_SMCBCR_MW8           0x00000000
#define AAEC_SMCBCR_MW16          0x10000000
#define AAEC_SMCBCR_MW32          0x30000000
#define AAEC_SMCBCR_PME           0x08000000
#define AAEC_SMCBCR_WP            0x04000000
#define AAEC_SMCBCR_WPERR         0x02000000
#define AAEC_SMCBCR_WST(_n_)      (((((_n_)-1)&0x1f)<<11) | ((((_n_)-1)&0x1f)<<5)) // for n 1-32
#define AAEC_SMCBCR_IDCY(_n_)     ((((_n_)-1)&0x0f)<<0)  // for n 1-16

// These settings come from the Agilent startup.s file
// [note, the WST values match their values, not the comments]
// CS0: Flash, access=90ns, hold=30ns
// CS1: ethernet, access=162ns, hold=47ns
// CS2: GPIO, access=14ns, hold=14ns
#if (75 == CYGNUM_HAL_ARM_AAED2000_BUS_CLOCK_MHZ)
# define _CS0_WST   8
# define _CS0_IDCY  3
# define _CS1_WST  14
# define _CS1_IDCY  4
# define _CS3_WST   3
# define _CS3_IDCY  2
#elif (83 == CYGNUM_HAL_ARM_AAED2000_BUS_CLOCK_MHZ)
# define _CS0_WST   9
# define _CS0_IDCY  3
# define _CS1_WST  15
# define _CS1_IDCY  4
# define _CS3_WST   3
# define _CS3_IDCY  2
#else
# error "Unsupported clocking"
#endif


//---------------------------------------------------------------------------
// Synchronous memory controller
#define AAEC_SMC_GLOBAL           0x80002404
#define AAEC_SMC_REFRESH_TIME     0x80002408
#define AAEC_SMC_BOOT_STATUS      0x8000240c
#define AAEC_SMC_DEV0             0x80002410
#define AAEC_SMC_DEV1             0x80002414
#define AAEC_SMC_DEV2             0x80002418
#define AAEC_SMC_DEV3             0x8000241c

#define AAEC_SMC_GLOBAL_CKE       0x80000000
#define AAEC_SMC_GLOBAL_CS        0x40000000
#define AAEC_SMC_GLOBAL_LCR       0x00000040
#define AAEC_SMC_GLOBAL_BUSY      0x00000020
#define AAEC_SMC_GLOBAL_MRS       0x00000002
#define AAEC_SMC_GLOBAL_INIT      0x00000001

#define AAEC_SMC_GLOBAL_CMD_NOP    (AAEC_SMC_GLOBAL_INIT|AAEC_SMC_GLOBAL_MRS)
#define AAEC_SMC_GLOBAL_CMD_PREALL (AAEC_SMC_GLOBAL_INIT)
#define AAEC_SMC_GLOBAL_CMD_MODE   (AAEC_SMC_GLOBAL_MRS)
#define AAEC_SMC_GLOBAL_CMD_ENABLE (AAEC_SMC_GLOBAL_CKE)


#define AAEC_SMC_DEV_AUTOP        0x01000000
#define AAEC_SMC_DEV_RAS_2        0x00200000
#define AAEC_SMC_DEV_RAS_3        0x00300000
#define AAEC_SMC_DEV_WBL_4        0x00080000
#define AAEC_SMC_DEV_WBL_1        0x00000000
#define AAEC_SMC_DEV_CASLAT(_n_)  (((_n_)-1)<<16) // 2-7
#define AAEC_SMC_DEV_2KPAGE       0x00000040
#define AAEC_SMC_DEV_SROMLL       0x00000020
#define AAEC_SMC_DEV_SROM512      0x00000010
#define AAEC_SMC_DEV_BANKS_2      0x00000008
#define AAEC_SMC_DEV_BANKS_4      0x00000000
#define AAEC_SMC_DEV_WIDTH16      0x00000004
#define AAEC_SMC_DEV_WIDTH32      0x00000000

#define AAEC_SMC_DEV_INIT         ( AAEC_SMC_DEV_RAS_2 \
                                   |AAEC_SMC_DEV_CASLAT(3) \
                                   |AAEC_SMC_DEV_BANKS_2)

//---------------------------------------------------------------------------
// LCD controller
#define AAEC_LCD_TIMING0          0x80003000   // Timing registers
#define AAEC_LCD_TIMING1          0x80003004
#define AAEC_LCD_TIMING2          0x80003008
#define AAEC_LCD_TIMING3          0x8000300C
#define AAEC_LCD_UPBASE           0x80003010   // Upper panel DMA address
#define AAEC_LCD_LPBASE           0x80003014   // Lower panel DMA address
#define AAEC_LCD_MASK             0x80003018   // Status mask
#define AAEC_LCD_CONTROL          0x8000301C   // Control
#define AAEC_LCD_CONTROL_ENAB       0x00000001    // Enable controller
#define AAEC_LCD_CONTROL_PWR_ENAB   0x00000800    // Enables signals
#define AAEC_LCD_STATUS           0x80003020   // Status
#define AAEC_LCD_INTERRUPT        0x80003024   // Interrupts
#define AAEC_LCD_UPCURR           0x80003028   // Upper panel current address
#define AAEC_LCD_LPCURR           0x8000302C   // Lower panel current address
#define AAEC_LCD_LPOVERFLOW       0x80003030   // Panel overflow 
#define AAEC_LCD_PALETTE          0x80003200   // Palette

//---------------------------------------------------------------------------
// Extended GPIO bits [platform specific]
#define AAED_EXT_GPIO             0x30000000
#define AAED_EXT_GPIO_KBD_SCAN      0x00003FFF // Keyboard scan data
#define AAED_EXT_GPIO_PWR_INT       0x00008FFF // Smart battery charger interrupt
#define AAED_EXT_GPIO_SWITCHES      0x000F0000 // DIP switches
#define AAED_EXT_GPIO_SWITCHES_SHIFT 16
#define AAED_EXT_GPIO_USB_VBUS      0x00400000 // USB Vbus sense
#define AAED_EXT_GPIO_LCD_PWR_EN    0x02000000 // LCD (& backlight) power enable
#define AAED_EXT_GPIO_LED0          0x20000000 // LED 0 (0=>ON, 1=>OFF)
#define AAED_EXT_GPIO_LED1          0x40000000 // LED 1 (0=>ON, 1=>OFF)
#define AAED_EXT_GPIO_LED2          0x80000000 // LED 2 (0=>ON, 1=>OFF)

/*---------------------------------------------------------------------------*/
/* end of aaed2000.h                                                          */
#endif /* CYGONCE_AAED2000_H */

⌨️ 快捷键说明

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