📄 aaed2000.h
字号:
#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 + -