📄 spl162001.h
字号:
#ifndef __SPL_H__
#define __SPL_H__
//========================================================================================
// Progarm: The C header file to be included for SPL161001 Series V1.0
// Arranged by: Jay
// Platform: unSP SPL161001
// Date: 2002/NOV V1.0 ( first version )
// Modified by Kuo in 2007/03/10, add I/O ports, Timer/Counter registers structure definition
// Note: This H file defines the control register available for user to use SPL series.
// The control regsiter setting constants is also included for users' convenience.
//========================================================================================
/*****************************************************************************/
/* Arithematic operation for u'nSP in C-language environment */
/*****************************************************************************/
#ifndef __BOOLEAN
#define __BOOLEAN
typedef unsigned char Boolean;
#endif
#ifndef __CHAR8
#define __CHAR8
typedef char Char8;
#endif /* #ifndef _CHAR8 */
#ifndef _UINT8
#define __UINT8
typedef unsigned char UInt8;
#endif /* #ifndef _UINT8 */
#ifndef __INT8
#define __INT8
typedef signed char Int8;
#endif /* #ifndef _INT8 */
#ifndef __SHORT16
#define __SHORT16
typedef short Short16;
#endif /* #ifndef _SHORT16 */
#ifndef __INT16
#define __INT16
typedef int Int16;
#endif /* #ifndef _INT16 */
#ifndef __UINT16
#define __UINT16
typedef unsigned int UInt16;
#endif /* #ifndef _UINT16 */
#ifndef __INT32
#define __INT32
typedef long Int32;
#endif /* #ifndef _INT32 */
#ifndef __UINT32
#define __UINT32
typedef unsigned long UInt32;
#endif /* #ifndef _UINT32 */
#ifndef __FLOAT32
#define __FLOAT32
typedef float Float32;
#endif /* #ifndef _FLOAT32 */
#ifndef __FLOAT64
#define __FLOAT64
typedef double Float64;
#endif /* #ifndef _FLOAT64 */
#define SPL162001 0
#define BODY_TYPE SPL162001
//////////////////////////////////////////////////////////////////
// Definitions for Peripheral Control Register
//////////////////////////////////////////////////////////////////
#define P_System_Ctrl_Base 0x7000
#define P_Memory_Ctrl_Base 0x7020
#define P_IOPort_Ctrl_Base 0x7060
#define P_Interrupt_Ctrl_Base 0x70A0
#define P_TimeBase_Ctrl_Base 0x70B0
#define P_Timer_Ctrl_Base 0x70C0
#define P_AudioOuput_Ctrl_Base 0x70E0
#define P_UARTIrDA_Ctrl_Base 0x7100
#define P_RTC_Ctrl_Base 0x7120
#define P_SPI_Ctrl_Base 0x7140
#define P_Analog_Ctrl_Base 0x7160
#define P_LCD_Ctrol_Base 0x7180
#define P_ImageSensor_Ctrl_Base 0x71A0
#define P_SerialInterface_Ctrl_Base 0x71B0
#define P_SD_Base 0x71D0
#define P_NANDFlash_Base 0x7050
#define P_USBHost_Base 0x7300
#define P_USBDevice_Base 0x7330
#define P_I2C_Base 0x7360
#define P_DMA_Base 0x7380
#define P_KeyScan_Base 0x73C0
////////////////////////////////////////
// System Control Registers
// Base Address Start from 0x7000
////////////////////////////////////////
#define P_BodyID (volatile unsigned int*)(P_System_Ctrl_Base+0x00)
#define P_CLK_Ctrl0 (volatile unsigned int*)(P_System_Ctrl_Base+0x04)
#define P_CLK_Ctrl1 (volatile unsigned int*)(P_System_Ctrl_Base+0x05)
#define P_Reset_Flag (volatile unsigned int*)(P_System_Ctrl_Base+0x06)
#define P_Clock_Ctrl (volatile unsigned int*)(P_System_Ctrl_Base+0x07)
#define P_LVR_Ctrl (volatile unsigned int*)(P_System_Ctrl_Base+0x08)
#define P_Watchdog_Ctrl (volatile unsigned int*)(P_System_Ctrl_Base+0x0A)
#define P_Watchdog_Clear (volatile unsigned int*)(P_System_Ctrl_Base+0x0B)
#define P_WAIT (volatile unsigned int*)(P_System_Ctrl_Base+0x0C)
#define P_HALT (volatile unsigned int*)(P_System_Ctrl_Base+0x0D)
#define P_SLEEP (volatile unsigned int*)(P_System_Ctrl_Base+0x0E)
#define P_Power_State (volatile unsigned int*)(P_System_Ctrl_Base+0x0F)
#define P_AD_Driving (volatile unsigned int*)(P_System_Ctrl_Base+0x1F)
///////////////////////////////////////
// Memory Control Registers
// Base Address Start from 0x7020
////////////////////////////////////////
#define P_MCS0_Ctrl (volatile unsigned int*)(P_Memory_Ctrl_Base+0x00)
#define P_MCS1_Ctrl (volatile unsigned int*)(P_Memory_Ctrl_Base+0x01)
#define P_MCS2_Ctrl (volatile unsigned int*)(P_Memory_Ctrl_Base+0x02)
#define P_MCS3_Ctrl (volatile unsigned int*)(P_Memory_Ctrl_Base+0x03)
#define P_MCS4_Ctrl (volatile unsigned int*)(P_Memory_Ctrl_Base+0x04)
#define P_MCS5_Ctrl (volatile unsigned int*)(P_Memory_Ctrl_Base+0x05)
#define P_Mem_Ctrl (volatile unsigned int*)(P_Memory_Ctrl_Base+0x20)
#define P_Addr_Ctrl (volatile unsigned int*)(P_Memory_Ctrl_Base+0x21)
#define P_BankSwitch_Ctrl (volatile unsigned int*)(0x7010)
////////////////////////////////////////
// I/O Port Control Registers
// Base Address Start from 0x7060
////////////////////////////////////////
#define P_IOA_Data (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x00)
#define P_IOA_Buffer (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x01)
#define P_IOA_Dir (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x02)
#define P_IOA_Attrib (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x03)
#define P_IOA_Latch (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x04)
#define P_IOB_Data (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x08)
#define P_IOB_Buffer (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x09)
#define P_IOB_Dir (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x0A)
#define P_IOB_Attrib (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x0B)
#define P_IOB_Latch (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x0C)
#define P_IOC_Data (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x10)
#define P_IOC_Buffer (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x11)
#define P_IOC_Dir (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x12)
#define P_IOC_Attrib (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x13)
#define P_IOD_Data (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x18)
#define P_IOD_Buffer (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x19)
#define P_IOD_Dir (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x1A)
#define P_IOD_Attrib (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x1B)
#define P_IOE_Data (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x20)
#define P_IOE_Buffer (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x21)
#define P_IOE_Dir (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x22)
#define P_IOE_Attrib (volatile unsigned int*)(P_IOPort_Ctrl_Base+0x23)
////////////////////////////////////////
// NAND Flash Control Registers
// Base Address Start from 0x7050
////////////////////////////////////////
#define P_NF_Ctrl (volatile unsigned int*)(P_NANDFlash_Base+0x00)
#define P_NF_CMD (volatile unsigned int*)(P_NANDFlash_Base+0x01)
#define P_NF_AddrL (volatile unsigned int*)(P_NANDFlash_Base+0x02)
#define P_NF_AddrH (volatile unsigned int*)(P_NANDFlash_Base+0x03)
#define P_NF_Data (volatile unsigned int*)(P_NANDFlash_Base+0x04)
#define P_NF_INT_Ctrl (volatile unsigned int*)(P_NANDFlash_Base+0x05)
#define P_ECC_Ctrl (volatile unsigned int*)(P_NANDFlash_Base+0x07)
#define P_ECC_LPRL_LB (volatile unsigned int*)(P_NANDFlash_Base+0x08)
#define P_ECC_LPRH_LB (volatile unsigned int*)(P_NANDFlash_Base+0x09)
#define P_ECC_CPR_LB (volatile unsigned int*)(P_NANDFlash_Base+0x0A)
#define P_ECC_LPR_CKL_LB (volatile unsigned int*)(P_NANDFlash_Base+0x0B)
#define P_ECC_LPR_CKH_LB (volatile unsigned int*)(P_NANDFlash_Base+0x0C)
#define P_ECC_CPCKR_LB (volatile unsigned int*)(P_NANDFlash_Base+0x0D)
#define P_ECC_ERR0_LB (volatile unsigned int*)(P_NANDFlash_Base+0x0E)
#define P_ECC_ERR1_LB (volatile unsigned int*)(P_NANDFlash_Base+0x0F)
#define P_ECC_LPRL_HB (volatile unsigned int*)(0x7048)
#define P_ECC_LPRH_HB (volatile unsigned int*)(0x7049)
#define P_ECC_CPR_HB (volatile unsigned int*)(0x704A)
#define P_ECC_LPR_CKL_HB (volatile unsigned int*)(0x704B)
#define P_ECC_LPR_CKH_HB (volatile unsigned int*)(0x704C)
#define P_ECC_CPCKR_HB (volatile unsigned int*)(0x704D)
////////////////////////////////////////
// Interrupt Control Registers
// Base Address Start from 0x70A0
////////////////////////////////////////
#define P_INT_Status1 (volatile unsigned int*)(P_Interrupt_Ctrl_Base+0x00)
#define C_INT_EXTA 0x0001;
#define C_INT_EXTB 0x0002;
#define C_INT_DMA 0x0004
#define C_INT_USB 0x0008
#define C_INT_AUDAFIFOEmpty 0x0010;
#define C_INT_AUDBFIFOEmpty 0x0020;
#define C_INT_SerialBus 0x0040;
#define C_INT_ADCAutoSample 0x0080;
#define C_INT_TouchPanel 0x0100;
#define C_INT_FramePulse 0x0200;
#define C_INT_SPI 0x0400;
#define C_INT_UARTIrDA 0x0800;
#define C_INT_ImSensorHFull 0x1000;
#define C_INT_ImSensorFull 0x2000;
#define C_INT_ADCReady 0x4000;
#define C_INT_Key 0x8000;
#define P_INT_Status2 (volatile unsigned int*)(P_Interrupt_Ctrl_Base+0x01)
#define C_INT_HMS 0x0001;
#define C_INT_Alarm 0x0002;
#define C_INT_Schedule 0x0004;
#define C_INT_ShutDown 0x0008;
#define C_INT_NF 0x0010;
#define C_INT_I2C 0x0020;
#define C_INT_SD 0x0040;
#define C_INT_TimeBaseA 0x0100;
#define C_INT_TimeBaseB 0x0200;
#define C_INT_TimeBaseC 0x0400;
#define C_INT_KeyScan 0x0800;
#define C_INT_TimerA 0x1000;
#define C_INT_TimerB 0x2000;
#define C_INT_TimerC 0x4000;
#define C_INT_TimerD 0x8000;
#define P_INT_Priority1 (volatile unsigned int*)(P_Interrupt_Ctrl_Base+0x04)
#define P_INT_Priority2 (volatile unsigned int*)(P_Interrupt_Ctrl_Base+0x05)
#define P_MINT_Ctrl (volatile unsigned int*)(P_Interrupt_Ctrl_Base+0x08)
////////////////////////////////////////
// TimeBase Control Registers
// Base Address Start from 0x70B0
////////////////////////////////////////
#define P_TimeBaseA_Ctrl (volatile unsigned int*)(P_TimeBase_Ctrl_Base+0x00)
#define P_TimeBaseB_Ctrl (volatile unsigned int*)(P_TimeBase_Ctrl_Base+0x01)
#define P_TimeBaseC_Ctrl (volatile unsigned int*)(P_TimeBase_Ctrl_Base+0x02)
#define P_TimeBase_Reset (volatile unsigned int*)(P_TimeBase_Ctrl_Base+0x08)
////////////////////////////////////////
// Timer Control Registers
// Base Address Start from 0x70C0
////////////////////////////////////////
#define P_TimerA_Ctrl (volatile unsigned int*)(P_Timer_Ctrl_Base+0x00)
#define P_TimerA_CCP_Ctrl (volatile unsigned int*)(P_Timer_Ctrl_Base+0x01)
#define P_TimerA_Preload (volatile unsigned int*)(P_Timer_Ctrl_Base+0x02)
#define P_TimerA_CCP (volatile unsigned int*)(P_Timer_Ctrl_Base+0x03)
#define P_TimerA_CCP_UpCount (volatile unsigned int*)(P_Timer_Ctrl_Base+0x04)
#define P_TimerB_Ctrl (volatile unsigned int*)(P_Timer_Ctrl_Base+0x08)
#define P_TimerB_CCP_Ctrl (volatile unsigned int*)(P_Timer_Ctrl_Base+0x09)
#define P_TimerB_Preload (volatile unsigned int*)(P_Timer_Ctrl_Base+0x0A)
#define P_TimerB_CCP (volatile unsigned int*)(P_Timer_Ctrl_Base+0x0B)
#define P_TimerB_CCP_UpCount (volatile unsigned int*)(P_Timer_Ctrl_Base+0x0C)
#define P_TimerC_Ctrl (volatile unsigned int*)(P_Timer_Ctrl_Base+0x10)
#define P_TimerC_Preload (volatile unsigned int*)(P_Timer_Ctrl_Base+0x12)
#define P_TimerC_UpCount (volatile unsigned int*)(P_Timer_Ctrl_Base+0x14)
#define P_TimerD_Ctrl (volatile unsigned int*)(P_Timer_Ctrl_Base+0x18)
#define P_TimerD_Preload (volatile unsigned int*)(P_Timer_Ctrl_Base+0x1A)
#define P_TimerD_UpCount (volatile unsigned int*)(P_Timer_Ctrl_Base+0x1C)
#define P_TimerE_Ctrl (volatile unsigned int*)(P_Timer_Ctrl_Base+0x0100)
#define P_TimerE_Preload (volatile unsigned int*)(P_Timer_Ctrl_Base+0x0102)
#define P_TimerE_UpCount (volatile unsigned int*)(P_Timer_Ctrl_Base+0x0104)
#define P_TimerF_Ctrl (volatile unsigned int*)(P_Timer_Ctrl_Base+0x0108)
#define P_TimerF_Preload (volatile unsigned int*)(P_Timer_Ctrl_Base+0x010A)
#define P_TimerF_UpCount (volatile unsigned int*)(P_Timer_Ctrl_Base+0x010C)
////////////////////////////////////////
// Audio Output Control Registers
// Base Address Start from 0x70E0
////////////////////////////////////////
#define P_CHA_Ctrl (volatile unsigned int*)(P_AudioOuput_Ctrl_Base+0x10)
#define P_CHA_Data (volatile unsigned int*)(P_AudioOuput_Ctrl_Base+0x11)
#define P_CHA_FIFO (volatile unsigned int*)(P_AudioOuput_Ctrl_Base+0x12)
#define P_CHB_Ctrl (volatile unsigned int*)(P_AudioOuput_Ctrl_Base+0x18)
#define P_CHB_Data (volatile unsigned int*)(P_AudioOuput_Ctrl_Base+0x19)
#define P_CHB_FIFO (volatile unsigned int*)(P_AudioOuput_Ctrl_Base+0x1A)
////////////////////////////////////////
// UART / IrDA Control Registers
// Base Address Start from 0x7100
////////////////////////////////////////
#define P_UARTIrDA_Data (volatile unsigned int*)(P_UARTIrDA_Ctrl_Base+0x00)
#define P_UART_RXStatus (volatile unsigned int*)(P_UARTIrDA_Ctrl_Base+0x01)
#define P_UARTIrDA_Ctrl (volatile unsigned int*)(P_UARTIrDA_Ctrl_Base+0x02)
#define P_UARTIrDA_BaudRate (volatile unsigned int*)(P_UARTIrDA_Ctrl_Base+0x03)
#define P_UARTIrDA_Status (volatile unsigned int*)(P_UARTIrDA_Ctrl_Base+0x04)
#define P_IrDA_Ctrl (volatile unsigned int*)(P_UARTIrDA_Ctrl_Base+0x08)
////////////////////////////////////////
// RTC Control Regsiters
// Base Address Start from 0x7120
////////////////////////////////////////
#define P_Second (volatile unsigned int*)(P_RTC_Ctrl_Base+0x00)
#define P_Minute (volatile unsigned int*)(P_RTC_Ctrl_Base+0x01)
#define P_Hour (volatile unsigned int*)(P_RTC_Ctrl_Base+0x02)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -