00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef INC_LPC_SCB_H
00015 #define INC_LPC_SCB_H
00016
00017
00018 typedef struct
00019 {
00020
00021 struct
00022 {
00023 REG_8 cr;
00024 REG_8 _pad0[3];
00025 REG_8 tim;
00026 REG32 _pad1[14];
00027 } mam;
00028
00029
00030 REG_8 memmap;
00031 REG32 _pad0[15];
00032
00033
00034 struct
00035 {
00036 REG_8 con;
00037 REG_8 _pad0[3];
00038 REG_8 cfg;
00039 REG_8 _pad1[3];
00040 REG16 stat;
00041 REG16 _pad2;
00042 REG_8 feed;
00043 REG32 _pad3[12];
00044 } pll;
00045
00046
00047 struct
00048 {
00049 REG_8 con;
00050 REG_8 _pad0[3];
00051 REG32 conp;
00052 REG32 _pad1[14];
00053 } p;
00054
00055
00056 REG_8 vpbdiv;
00057 REG32 _pad1[15];
00058
00059
00060 struct
00061 {
00062 REG_8 flag;
00063 REG_8 _pad0[3];
00064 REG_8 wake;
00065 REG_8 _pad1[3];
00066 REG_8 mode;
00067 REG_8 _pad2[3];
00068 REG_8 polar;
00069 REG32 _pad3[12];
00070 } ext;
00071 } scbRegs_t;
00072
00073
00075
00076 #define MAMCR_OFF 0
00077 #define MAMCR_PART 1
00078 #define MAMCR_FULL 2
00079
00080 #define MAMTIM_CYCLES (((CCLK) + 19999999) / 20000000)
00081
00083
00084 #define MEMMAP_BBLK 0 // Interrupt Vectors in Boot Block
00085 #define MEMMAP_FLASH 1 // Interrupt Vectors in Flash
00086 #define MEMMAP_SRAM 2 // Interrupt Vectors in SRAM
00087
00089
00090
00091
00092 #ifndef CCLK
00093 #define CCLK (FOSC * PLL_MUL) // CPU Clock Freq.
00094 #endif
00095
00096 #define FCCO_MAX (320000000) // Max CC Osc Freq.
00097 #define PLL_DIV (FCCO_MAX / (2 * CCLK)) // PLL Divider
00098 #define FCCO (FOSC * PLL_MUL * 2 * PLL_DIV) // CC Osc. Freq.
00099
00100
00101 #define PLLCON_PLLE (1 << 0) // PLL Enable
00102 #define PLLCON_PLLC (1 << 1) // PLL Connect
00103
00104
00105 #define PLLCFG_MSEL ((PLL_MUL - 1) << 0) // PLL Multiplier
00106 #define PLLCFG_PSEL ((PLL_DIV - 1) << 5) // PLL Divider
00107
00108
00109 #define PLLSTAT_LOCK (1 << 10) // PLL Lock Status Bit
00110
00112
00113 #define VPBDIV_VALUE (PBSD & 0x03) // VPBDIV value
00114 #define XCLKDIV_1 (1 << 4) // XCLK = cclk/1
00115 #define XCLKDIV_2 (2 << 4) // XCLK = cclk/2
00116 #define XCLKDIV_4 (0 << 4) // XCLK = cclk/4
00117
00118
00119 #endif