1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero */ 9*10465441SEvalZero #ifndef __SEP4020_H 10*10465441SEvalZero #define __SEP4020_H 11*10465441SEvalZero 12*10465441SEvalZero #include <rtthread.h> 13*10465441SEvalZero 14*10465441SEvalZero /*Core definations*/ 15*10465441SEvalZero #define SVCMODE 16*10465441SEvalZero #define Mode_USR 0x10 17*10465441SEvalZero #define Mode_FIQ 0x11 18*10465441SEvalZero #define Mode_IRQ 0x12 19*10465441SEvalZero #define Mode_SVC 0x13 20*10465441SEvalZero #define Mode_ABT 0x17 21*10465441SEvalZero #define Mode_UND 0x1B 22*10465441SEvalZero #define Mode_SYS 0x1F 23*10465441SEvalZero 24*10465441SEvalZero 25*10465441SEvalZero 26*10465441SEvalZero /* 27*10465441SEvalZero * 各模块寄存器基值 28*10465441SEvalZero */ 29*10465441SEvalZero 30*10465441SEvalZero #define ESRAM_BASE 0x04000000 31*10465441SEvalZero #define INTC_BASE 0x10000000 32*10465441SEvalZero #define PMU_BASE 0x10001000 33*10465441SEvalZero #define RTC_BASE 0x10002000 34*10465441SEvalZero #define WD_BASE 0x10002000 35*10465441SEvalZero #define TIMER_BASE 0x10003000 36*10465441SEvalZero #define PWM_BASE 0x10004000 37*10465441SEvalZero #define UART0_BASE 0X10005000 38*10465441SEvalZero #define UART1_BASE 0X10006000 39*10465441SEvalZero #define UART2_BASE 0X10007000 40*10465441SEvalZero #define UART3_BASE 0X10008000 41*10465441SEvalZero #define SSI_BASE 0X10009000 42*10465441SEvalZero #define I2S_BASE 0x1000A000 43*10465441SEvalZero #define MMC_BASE 0x1000B000 44*10465441SEvalZero #define SD_BASE 0x1000B000 45*10465441SEvalZero #define SMC0_BASE 0x1000C000 46*10465441SEvalZero #define SMC1_BASE 0x1000D000 47*10465441SEvalZero #define USBD_BASE 0x1000E000 48*10465441SEvalZero #define GPIO_BASE 0x1000F000 49*10465441SEvalZero #define EMI_BASE 0x11000000 50*10465441SEvalZero #define DMAC_BASE 0x11001000 51*10465441SEvalZero #define LCDC_BASE 0x11002000 52*10465441SEvalZero #define MAC_BASE 0x11003000 53*10465441SEvalZero #define AMBA_BASE 0x11005000 54*10465441SEvalZero 55*10465441SEvalZero 56*10465441SEvalZero /* 57*10465441SEvalZero * INTC模块 58*10465441SEvalZero * 基址: 0x10000000 59*10465441SEvalZero */ 60*10465441SEvalZero 61*10465441SEvalZero #define INTC_IER (INTC_BASE+0X000) /* IRQ中断允许寄存器 */ 62*10465441SEvalZero #define INTC_IMR (INTC_BASE+0X008) /* IRQ中断屏蔽寄存器 */ 63*10465441SEvalZero #define INTC_IFR (INTC_BASE+0X010) /* IRQ软件强制中断寄存器 */ 64*10465441SEvalZero #define INTC_IRSR (INTC_BASE+0X018) /* IRQ未处理中断状态寄存器 */ 65*10465441SEvalZero #define INTC_ISR (INTC_BASE+0X020) /* IRQ中断状态寄存器 */ 66*10465441SEvalZero #define INTC_IMSR (INTC_BASE+0X028) /* IRQ屏蔽中断状态寄存器 */ 67*10465441SEvalZero #define INTC_IFSR (INTC_BASE+0X030) /* IRQ中断最终状态寄存器 */ 68*10465441SEvalZero #define INTC_FIER (INTC_BASE+0X0C0) /* FIQ中断允许寄存器 */ 69*10465441SEvalZero #define INTC_FIMR (INTC_BASE+0X0C4) /* FIQ中断屏蔽寄存器 */ 70*10465441SEvalZero #define INTC_FIFR (INTC_BASE+0X0C8) /* FIQ软件强制中断寄存器 */ 71*10465441SEvalZero #define INTC_FIRSR (INTC_BASE+0X0CC) /* FIQ未处理中断状态寄存器 */ 72*10465441SEvalZero #define INTC_FISR (INTC_BASE+0X0D0) /* FIQ中断状态寄存器 */ 73*10465441SEvalZero #define INTC_FIFSR (INTC_BASE+0X0D4) /* FIQ中断最终状态寄存器 */ 74*10465441SEvalZero #define INTC_IPLR (INTC_BASE+0X0D8) /* IRQ中断优先级寄存器 */ 75*10465441SEvalZero #define INTC_ICR1 (INTC_BASE+0X0DC) /* IRQ内部中断优先级控制寄存器1 */ 76*10465441SEvalZero #define INTC_ICR2 (INTC_BASE+0X0E0) /* IRQ内部中断优先级控制寄存器2 */ 77*10465441SEvalZero #define INTC_EXICR1 (INTC_BASE+0X0E4) /* IRQ外部中断优先级控制寄存器1 */ 78*10465441SEvalZero #define INTC_EXICR2 (INTC_BASE+0X0E8) /* IRQ外部中断优先级控制寄存器2 */ 79*10465441SEvalZero 80*10465441SEvalZero 81*10465441SEvalZero /* 82*10465441SEvalZero * PMU模块 83*10465441SEvalZero * 基址: 0x10001000 84*10465441SEvalZero */ 85*10465441SEvalZero 86*10465441SEvalZero #define PMU_PLTR (PMU_BASE+0X000) /* PLL的稳定过渡时间 */ 87*10465441SEvalZero #define PMU_PMCR (PMU_BASE+0X004) /* 系统主时钟PLL的控制寄存器 */ 88*10465441SEvalZero #define PMU_PUCR (PMU_BASE+0X008) /* USB时钟PLL的控制寄存器 */ 89*10465441SEvalZero #define PMU_PCSR (PMU_BASE+0X00C) /* 内部模块时钟源供给的控制寄存器 */ 90*10465441SEvalZero #define PMU_PDSLOW (PMU_BASE+0X010) /* SLOW状态下时钟的分频因子 */ 91*10465441SEvalZero #define PMU_PMDR (PMU_BASE+0X014) /* 芯片工作模式寄存器 */ 92*10465441SEvalZero #define PMU_RCTR (PMU_BASE+0X018) /* Reset控制寄存器 */ 93*10465441SEvalZero #define PMU_CLRWAKUP (PMU_BASE+0X01C) /* WakeUp清除寄存器 */ 94*10465441SEvalZero 95*10465441SEvalZero 96*10465441SEvalZero /* 97*10465441SEvalZero * RTC模块 98*10465441SEvalZero * 基址: 0x10002000 99*10465441SEvalZero */ 100*10465441SEvalZero 101*10465441SEvalZero #define RTC_STA_YMD (RTC_BASE+0X000) /* 年, 月, 日计数寄存器 */ 102*10465441SEvalZero #define RTC_STA_HMS (RTC_BASE+0X004) /* 小时, 分钟, 秒寄存器 */ 103*10465441SEvalZero #define RTC_ALARM_ALL (RTC_BASE+0X008) /* 定时月, 日, 时, 分寄存器 */ 104*10465441SEvalZero #define RTC_CTR (RTC_BASE+0X00C) /* 控制寄存器 */ 105*10465441SEvalZero #define RTC_INT_EN (RTC_BASE+0X010) /* 中断使能寄存器 */ 106*10465441SEvalZero #define RTC_INT_STS (RTC_BASE+0X014) /* 中断状态寄存器 */ 107*10465441SEvalZero #define RTC_SAMP (RTC_BASE+0X018) /* 采样周期寄存器 */ 108*10465441SEvalZero #define RTC_WD_CNT (RTC_BASE+0X01C) /* Watch-Dog计数值寄存器 */ 109*10465441SEvalZero #define RTC_WD_SEV (RTC_BASE+0X020) /* Watch-Dog服务寄存器 */ 110*10465441SEvalZero #define RTC_CONFIG_CHECK (RTC_BASE+0X024) /* 配置时间确认寄存器 (在配置时间之前先写0xaaaaaaaa) */ 111*10465441SEvalZero #define RTC_KEY0 (RTC_BASE+0X02C) /* 密钥寄存器 */ 112*10465441SEvalZero 113*10465441SEvalZero /* 114*10465441SEvalZero * TIMER模块 115*10465441SEvalZero * 基址: 0x10003000 116*10465441SEvalZero */ 117*10465441SEvalZero 118*10465441SEvalZero #define TIMER_T1LCR (TIMER_BASE+0X000) /* 通道1加载计数寄存器 */ 119*10465441SEvalZero #define TIMER_T1CCR (TIMER_BASE+0X004) /* 通道1当前计数值寄存器 */ 120*10465441SEvalZero #define TIMER_T1CR (TIMER_BASE+0X008) /* 通道1控制寄存器 */ 121*10465441SEvalZero #define TIMER_T1ISCR (TIMER_BASE+0X00C) /* 通道1中断状态清除寄存器 */ 122*10465441SEvalZero #define TIMER_T1IMSR (TIMER_BASE+0X010) /* 通道1中断屏蔽状态寄存器 */ 123*10465441SEvalZero #define TIMER_T2LCR (TIMER_BASE+0X020) /* 通道2加载计数寄存器 */ 124*10465441SEvalZero #define TIMER_T2CCR (TIMER_BASE+0X024) /* 通道2当前计数值寄存器 */ 125*10465441SEvalZero #define TIMER_T2CR (TIMER_BASE+0X028) /* 通道2控制寄存器 */ 126*10465441SEvalZero #define TIMER_T2ISCR (TIMER_BASE+0X02C) /* 通道2中断状态清除寄存器 */ 127*10465441SEvalZero #define TIMER_T2IMSR (TIMER_BASE+0X030) /* 通道2中断屏蔽状态寄存器 */ 128*10465441SEvalZero #define TIMER_T3LCR (TIMER_BASE+0X040) /* 通道3加载计数寄存器 */ 129*10465441SEvalZero #define TIMER_T3CCR (TIMER_BASE+0X044) /* 通道3当前计数值寄存器 */ 130*10465441SEvalZero #define TIMER_T3CR (TIMER_BASE+0X048) /* 通道3控制寄存器 */ 131*10465441SEvalZero #define TIMER_T3ISCR (TIMER_BASE+0X04C) /* 通道3中断状态清除寄存器 */ 132*10465441SEvalZero #define TIMER_T3IMSR (TIMER_BASE+0X050) /* 通道3中断屏蔽状态寄存器 */ 133*10465441SEvalZero #define TIMER_T3CAPR (TIMER_BASE+0X054) /* 通道3捕获寄存器 */ 134*10465441SEvalZero #define TIMER_T4LCR (TIMER_BASE+0X060) /* 通道4加载计数寄存器 */ 135*10465441SEvalZero #define TIMER_T4CCR (TIMER_BASE+0X064) /* 通道4当前计数值寄存器 */ 136*10465441SEvalZero #define TIMER_T4CR (TIMER_BASE+0X068) /* 通道4控制寄存器 */ 137*10465441SEvalZero #define TIMER_T4ISCR (TIMER_BASE+0X06C) /* 通道4中断状态清除寄存器 */ 138*10465441SEvalZero #define TIMER_T4IMSR (TIMER_BASE+0X070) /* 通道4中断屏蔽状态寄存器 */ 139*10465441SEvalZero #define TIMER_T4CAPR (TIMER_BASE+0X074) /* 通道4捕获寄存器 */ 140*10465441SEvalZero #define TIMER_T5LCR (TIMER_BASE+0X080) /* 通道5加载计数寄存器 */ 141*10465441SEvalZero #define TIMER_T5CCR (TIMER_BASE+0X084) /* 通道5当前计数值寄存器 */ 142*10465441SEvalZero #define TIMER_T5CR (TIMER_BASE+0X088) /* 通道5控制寄存器 */ 143*10465441SEvalZero #define TIMER_T5ISCR (TIMER_BASE+0X08C) /* 通道5中断状态清除寄存器 */ 144*10465441SEvalZero #define TIMER_T5IMSR (TIMER_BASE+0X090) /* 通道5中断屏蔽状态寄存器 */ 145*10465441SEvalZero #define TIMER_T5CAPR (TIMER_BASE+0X094) /* 通道5捕获寄存器 */ 146*10465441SEvalZero #define TIMER_T6LCR (TIMER_BASE+0X0A0) /* 通道6加载计数寄存器 */ 147*10465441SEvalZero #define TIMER_T6CCR (TIMER_BASE+0X0A4) /* 通道6当前计数值寄存器 */ 148*10465441SEvalZero #define TIMER_T6CR (TIMER_BASE+0X0A8) /* 通道6控制寄存器 */ 149*10465441SEvalZero #define TIMER_T6ISCR (TIMER_BASE+0X0AC) /* 通道6中断状态清除寄存器 */ 150*10465441SEvalZero #define TIMER_T6IMSR (TIMER_BASE+0X0B0) /* 通道6中断屏蔽状态寄存器 */ 151*10465441SEvalZero #define TIMER_T6CAPR (TIMER_BASE+0X0B4) /* 通道6捕获寄存器 */ 152*10465441SEvalZero #define TIMER_T7LCR (TIMER_BASE+0X0C0) /* 通道7加载计数寄存器 */ 153*10465441SEvalZero #define TIMER_T7CCR (TIMER_BASE+0X0C4) /* 通道7当前计数值寄存器 */ 154*10465441SEvalZero #define TIMER_T7CR (TIMER_BASE+0X0C8) /* 通道7控制寄存器 */ 155*10465441SEvalZero #define TIMER_T7ISCR (TIMER_BASE+0X0CC) /* 通道7中断状态清除寄存器 */ 156*10465441SEvalZero #define TIMER_T7IMSR (TIMER_BASE+0X0D0) /* 通道7中断屏蔽状态寄存器 */ 157*10465441SEvalZero #define TIMER_T8LCR (TIMER_BASE+0X0E0) /* 通道8加载计数寄存器 */ 158*10465441SEvalZero #define TIMER_T8CCR (TIMER_BASE+0X0E4) /* 通道8当前计数值寄存器 */ 159*10465441SEvalZero #define TIMER_T8CR (TIMER_BASE+0X0E8) /* 通道8控制寄存器 */ 160*10465441SEvalZero #define TIMER_T8ISCR (TIMER_BASE+0X0EC) /* 通道8中断状态清除寄存器 */ 161*10465441SEvalZero #define TIMER_T8IMSR (TIMER_BASE+0X0F0) /* 通道8中断屏蔽状态寄存器 */ 162*10465441SEvalZero #define TIMER_T9LCR (TIMER_BASE+0X100) /* 通道9加载计数寄存器 */ 163*10465441SEvalZero #define TIMER_T9CCR (TIMER_BASE+0X104) /* 通道9当前计数值寄存器 */ 164*10465441SEvalZero #define TIMER_T9CR (TIMER_BASE+0X108) /* 通道9控制寄存器 */ 165*10465441SEvalZero #define TIMER_T9ISCR (TIMER_BASE+0X10C) /* 通道9中断状态清除寄存器 */ 166*10465441SEvalZero #define TIMER_T9IMSR (TIMER_BASE+0X110) /* 通道9中断屏蔽状态寄存器 */ 167*10465441SEvalZero #define TIMER_T10LCR (TIMER_BASE+0X120) /* 通道10加载计数寄存器 */ 168*10465441SEvalZero #define TIMER_T10CCR (TIMER_BASE+0X124) /* 通道10当前计数值寄存器 */ 169*10465441SEvalZero #define TIMER_T10CR (TIMER_BASE+0X128) /* 通道10控制寄存器 */ 170*10465441SEvalZero #define TIMER_T10ISCR (TIMER_BASE+0X12C) /* 通道10中断状态清除寄存器 */ 171*10465441SEvalZero #define TIMER_T10IMSR (TIMER_BASE+0X130) /* 通道10中断屏蔽状态寄存器 */ 172*10465441SEvalZero #define TIMER_TIMSR (TIMER_BASE+0X140) /* TIMER中断屏蔽状态寄存器 */ 173*10465441SEvalZero #define TIMER_TISCR (TIMER_BASE+0X144) /* TIMER中断状态清除寄存器 */ 174*10465441SEvalZero #define TIMER_TISR (TIMER_BASE+0X148) /* TIMER中断状态寄存器 */ 175*10465441SEvalZero 176*10465441SEvalZero 177*10465441SEvalZero 178*10465441SEvalZero /* 179*10465441SEvalZero * PWM模块 180*10465441SEvalZero * 基址: 0x10004000 181*10465441SEvalZero */ 182*10465441SEvalZero 183*10465441SEvalZero #define PWM0_CTRL (PWM_BASE+0X000) /* PWM0控制寄存器 */ 184*10465441SEvalZero #define PWM0_DIV (PWM_BASE+0X004) /* PWM0分频寄存器 */ 185*10465441SEvalZero #define PWM0_PERIOD (PWM_BASE+0X008) /* PWM0周期寄存器 */ 186*10465441SEvalZero #define PWM0_DATA (PWM_BASE+0X00C) /* PWM0数据寄存器 */ 187*10465441SEvalZero #define PWM0_CNT (PWM_BASE+0X010) /* PWM0计数寄存器 */ 188*10465441SEvalZero #define PWM0_STATUS (PWM_BASE+0X014) /* PWM0状态寄存器 */ 189*10465441SEvalZero #define PWM1_CTRL (PWM_BASE+0X020) /* PWM1控制寄存器 */ 190*10465441SEvalZero #define PWM1_DIV (PWM_BASE+0X024) /* PWM1分频寄存器 */ 191*10465441SEvalZero #define PWM1_PERIOD (PWM_BASE+0X028) /* PWM1周期寄存器 */ 192*10465441SEvalZero #define PWM1_DATA (PWM_BASE+0X02C) /* PWM1数据寄存器 */ 193*10465441SEvalZero #define PWM1_CNT (PWM_BASE+0X030) /* PWM1计数寄存器 */ 194*10465441SEvalZero #define PWM1_STATUS (PWM_BASE+0X034) /* PWM1状态寄存器 */ 195*10465441SEvalZero #define PWM2_CTRL (PWM_BASE+0X040) /* PWM2控制寄存器 */ 196*10465441SEvalZero #define PWM2_DIV (PWM_BASE+0X044) /* PWM2分频寄存器 */ 197*10465441SEvalZero #define PWM2_PERIOD (PWM_BASE+0X048) /* PWM2周期寄存器 */ 198*10465441SEvalZero #define PWM2_DATA (PWM_BASE+0X04C) /* PWM2数据寄存器 */ 199*10465441SEvalZero #define PWM2_CNT (PWM_BASE+0X050) /* PWM2计数寄存器 */ 200*10465441SEvalZero #define PWM2_STATUS (PWM_BASE+0X054) /* PWM2状态寄存器 */ 201*10465441SEvalZero #define PWM3_CTRL (PWM_BASE+0X060) /* PWM3控制寄存器 */ 202*10465441SEvalZero #define PWM3_DIV (PWM_BASE+0X064) /* PWM3分频寄存器 */ 203*10465441SEvalZero #define PWM3_PERIOD (PWM_BASE+0X068) /* PWM3周期寄存器 */ 204*10465441SEvalZero #define PWM3_DATA (PWM_BASE+0X06C) /* PWM3数据寄存器 */ 205*10465441SEvalZero #define PWM3_CNT (PWM_BASE+0X070) /* PWM3计数寄存器 */ 206*10465441SEvalZero #define PWM3_STATUS (PWM_BASE+0X074) /* PWM3状态寄存器 */ 207*10465441SEvalZero #define PWM_INTMASK (PWM_BASE+0X080) /* PWM中断屏蔽寄存器 */ 208*10465441SEvalZero #define PWM_INT (PWM_BASE+0X084) /* PWM中断寄存器 */ 209*10465441SEvalZero #define PWM_ENABLE (PWM_BASE+0X088) /* PWM使能寄存器 */ 210*10465441SEvalZero 211*10465441SEvalZero 212*10465441SEvalZero /* 213*10465441SEvalZero * UART0模块 214*10465441SEvalZero * 基址: 0x10005000 215*10465441SEvalZero */ 216*10465441SEvalZero 217*10465441SEvalZero #define UART0_DLBL (UART0_BASE+0X000) /* 波特率设置低八位寄存器 */ 218*10465441SEvalZero #define UART0_RXFIFO (UART0_BASE+0X000) /* 接收FIFO */ 219*10465441SEvalZero #define UART0_TXFIFO (UART0_BASE+0X000) /* 发送FIFO */ 220*10465441SEvalZero #define UART0_DLBH (UART0_BASE+0X004) /* 波特率设置高八位寄存器 */ 221*10465441SEvalZero #define UART0_IER (UART0_BASE+0X004) /* 中断使能寄存器 */ 222*10465441SEvalZero #define UART0_IIR (UART0_BASE+0X008) /* 中断识别寄存器 */ 223*10465441SEvalZero #define UART0_FCR (UART0_BASE+0X008) /* FIFO控制寄存器 */ 224*10465441SEvalZero #define UART0_LCR (UART0_BASE+0X00C) /* 行控制寄存器 */ 225*10465441SEvalZero #define UART0_MCR (UART0_BASE+0X010) /* Modem控制寄存器 */ 226*10465441SEvalZero #define UART0_LSR (UART0_BASE+0X014) /* 行状态寄存器 */ 227*10465441SEvalZero #define UART0_MSR (UART0_BASE+0X018) /* Modem状态寄存器 */ 228*10465441SEvalZero 229*10465441SEvalZero 230*10465441SEvalZero /* 231*10465441SEvalZero * UART1模块 232*10465441SEvalZero * 基址: 0x10006000 233*10465441SEvalZero */ 234*10465441SEvalZero 235*10465441SEvalZero #define UART1_DLBL (UART1_BASE+0X000) /* 波特率设置低八位寄存器 */ 236*10465441SEvalZero #define UART1_RXFIFO (UART1_BASE+0X000) /* 接收FIFO */ 237*10465441SEvalZero #define UART1_TXFIFO (UART1_BASE+0X000) /* 发送FIFO */ 238*10465441SEvalZero #define UART1_DLBH (UART1_BASE+0X004) /* 波特率设置高八位寄存器 */ 239*10465441SEvalZero #define UART1_IER (UART1_BASE+0X004) /* 中断使能寄存器 */ 240*10465441SEvalZero #define UART1_IIR (UART1_BASE+0X008) /* 中断识别寄存器 */ 241*10465441SEvalZero #define UART1_FCR (UART1_BASE+0X008) /* FIFO控制寄存器 */ 242*10465441SEvalZero #define UART1_LCR (UART1_BASE+0X00C) /* 行控制寄存器 */ 243*10465441SEvalZero #define UART1_MCR (UART1_BASE+0X010) /* Modem控制寄存器 */ 244*10465441SEvalZero #define UART1_LSR (UART1_BASE+0X014) /* 行状态寄存器 */ 245*10465441SEvalZero #define UART1_MSR (UART1_BASE+0X018) /* Modem状态寄存器 */ 246*10465441SEvalZero 247*10465441SEvalZero 248*10465441SEvalZero /* 249*10465441SEvalZero * UART2模块 250*10465441SEvalZero * 基址: 0x10007000 251*10465441SEvalZero */ 252*10465441SEvalZero 253*10465441SEvalZero #define UART2_DLBL (UART2_BASE+0X000) /* 波特率设置低八位寄存器 */ 254*10465441SEvalZero #define UART2_RXFIFO (UART2_BASE+0X000) /* 接收FIFO */ 255*10465441SEvalZero #define UART2_TXFIFO (UART2_BASE+0X000) /* 发送FIFO */ 256*10465441SEvalZero #define UART2_DLBH (UART2_BASE+0X004) /* 波特率设置高八位寄存器 */ 257*10465441SEvalZero #define UART2_IER (UART2_BASE+0X004) /* 中断使能寄存器 */ 258*10465441SEvalZero #define UART2_IIR (UART2_BASE+0X008) /* 中断识别寄存器 */ 259*10465441SEvalZero #define UART2_FCR (UART2_BASE+0X008) /* FIFO控制寄存器 */ 260*10465441SEvalZero #define UART2_LCR (UART2_BASE+0X00C) /* 行控制寄存器 */ 261*10465441SEvalZero #define UART2_MCR (UART2_BASE+0X010) /* Modem控制寄存器 */ 262*10465441SEvalZero #define UART2_LSR (UART2_BASE+0X014) /* 行状态寄存器 */ 263*10465441SEvalZero #define UART2_MSR (UART2_BASE+0X018) /* Modem状态寄存器 */ 264*10465441SEvalZero 265*10465441SEvalZero 266*10465441SEvalZero /* 267*10465441SEvalZero * UART3模块 268*10465441SEvalZero * 基址: 0x10008000 269*10465441SEvalZero */ 270*10465441SEvalZero 271*10465441SEvalZero #define UART3_DLBL (UART3_BASE+0X000) /* 波特率设置低八位寄存器 */ 272*10465441SEvalZero #define UART3_RXFIFO (UART3_BASE+0X000) /* 接收FIFO */ 273*10465441SEvalZero #define UART3_TXFIFO (UART3_BASE+0X000) /* 发送FIFO */ 274*10465441SEvalZero #define UART3_DLBH (UART3_BASE+0X004) /* 波特率设置高八位寄存器 */ 275*10465441SEvalZero #define UART3_IER (UART3_BASE+0X004) /* 中断使能寄存器 */ 276*10465441SEvalZero #define UART3_IIR (UART3_BASE+0X008) /* 中断识别寄存器 */ 277*10465441SEvalZero #define UART3_FCR (UART3_BASE+0X008) /* FIFO控制寄存器 */ 278*10465441SEvalZero #define UART3_LCR (UART3_BASE+0X00C) /* 行控制寄存器 */ 279*10465441SEvalZero #define UART3_MCR (UART3_BASE+0X010) /* Modem控制寄存器 */ 280*10465441SEvalZero #define UART3_LSR (UART3_BASE+0X014) /* 行状态寄存器 */ 281*10465441SEvalZero #define UART3_MSR (UART3_BASE+0X018) /* Modem状态寄存器 */ 282*10465441SEvalZero 283*10465441SEvalZero 284*10465441SEvalZero /* 285*10465441SEvalZero * SSI模块 286*10465441SEvalZero * 基址: 0x10009000 287*10465441SEvalZero */ 288*10465441SEvalZero 289*10465441SEvalZero #define SSI_CONTROL0 (SSI_BASE+0X000) /* 控制寄存器0 */ 290*10465441SEvalZero #define SSI_CONTROL1 (SSI_BASE+0X004) /* 控制寄存器1 */ 291*10465441SEvalZero #define SSI_SSIENR (SSI_BASE+0X008) /* SSI使能寄存器 */ 292*10465441SEvalZero #define SSI_MWCR (SSI_BASE+0X00C) /* Microwire控制寄存器 */ 293*10465441SEvalZero #define SSI_SER (SSI_BASE+0X010) /* 从设备使能寄存器 */ 294*10465441SEvalZero #define SSI_BAUDR (SSI_BASE+0X014) /* 波特率设置寄存器 */ 295*10465441SEvalZero #define SSI_TXFTLR (SSI_BASE+0X018) /* 发送FIFO阈值寄存器 */ 296*10465441SEvalZero #define SSI_RXFTLR (SSI_BASE+0X01C) /* 接收FIFO阈值寄存器 */ 297*10465441SEvalZero #define SSI_TXFLR (SSI_BASE+0X020) /* 发送FIFO状态寄存器 */ 298*10465441SEvalZero #define SSI_RXFLR (SSI_BASE+0X024) /* 接收FIFO状态寄存器 */ 299*10465441SEvalZero #define SSI_SR (SSI_BASE+0X028) /* 状态寄存器 */ 300*10465441SEvalZero #define SSI_IMR (SSI_BASE+0X02C) /* 中断屏蔽寄存器 */ 301*10465441SEvalZero #define SSI_ISR (SSI_BASE+0X030) /* 中断最终状态寄存器 */ 302*10465441SEvalZero #define SSI_RISR (SSI_BASE+0X034) /* 中断原始状态寄存器 */ 303*10465441SEvalZero #define SSI_TXOICR (SSI_BASE+0X038) /* 发送FIFO上溢中断清除寄存器 */ 304*10465441SEvalZero #define SSI_RXOICR (SSI_BASE+0X03C) /* 接收FIFO上溢中断清除寄存器 */ 305*10465441SEvalZero #define SSI_RXUICR (SSI_BASE+0X040) /* 接收FIFO下溢中断清除寄存器 */ 306*10465441SEvalZero #define SSI_ICR (SSI_BASE+0X02C) /* 中断清除寄存器 */ 307*10465441SEvalZero #define SSI_DMACR (SSI_BASE+0X04C) /* DMA控制寄存器 */ 308*10465441SEvalZero #define SSI_DMATDLR (SSI_BASE+0X050) /* DMA发送状态寄存器 */ 309*10465441SEvalZero #define SSI_DMARDLR (SSI_BASE+0X054) /* DMA接收状态寄存器 */ 310*10465441SEvalZero #define SSI_DR (SSI_BASE+0X060) /* 数据寄存器 */ 311*10465441SEvalZero 312*10465441SEvalZero 313*10465441SEvalZero /* 314*10465441SEvalZero * I2S模块 315*10465441SEvalZero * 基址: 0x1000A000 316*10465441SEvalZero */ 317*10465441SEvalZero 318*10465441SEvalZero #define I2S_CTRL (I2S_BASE+0X000) /* I2S控制寄存器 */ 319*10465441SEvalZero #define I2S_DATA (I2S_BASE+0X004) /* I2S数据寄存器 */ 320*10465441SEvalZero #define I2S_INT (I2S_BASE+0X008) /* I2S中断寄存器 */ 321*10465441SEvalZero #define I2S_STATUS (I2S_BASE+0X00C) /* I2S状态寄存器 */ 322*10465441SEvalZero 323*10465441SEvalZero 324*10465441SEvalZero /* 325*10465441SEvalZero * SD模块 326*10465441SEvalZero * 基址: 0x1000B000 327*10465441SEvalZero */ 328*10465441SEvalZero 329*10465441SEvalZero #define SDC_CLOCK_CONTROL (SD_BASE+0x00) /* SDIO时钟控制寄存器 */ 330*10465441SEvalZero #define SDC_SOFTWARE_RESET (SD_BASE+0X04) /* SDIO软件复位寄存器 */ 331*10465441SEvalZero #define SDC_ARGUMENT (SD_BASE+0X08) /* SDIO命令参数寄存器 */ 332*10465441SEvalZero #define SDC_COMMAND (SD_BASE+0X0C) /* SDIO命令控制寄存器 */ 333*10465441SEvalZero #define SDC_BLOCK_SIZE (SD_BASE+0X10) /* SDIO数据块长度寄存器 */ 334*10465441SEvalZero #define SDC_BLOCK_COUNT (SD_BASE+0X14) /* SDIO数据块数目寄存器 */ 335*10465441SEvalZero #define SDC_TRANSFER_MODE (SD_BASE+0X18) /* SDIO传输模式选择寄存器 */ 336*10465441SEvalZero #define SDC_RESPONSE0 (SD_BASE+0X1c) /* SDIO响应寄存器0 */ 337*10465441SEvalZero #define SDC_RESPONSE1 (SD_BASE+0X20) /* SDIO响应寄存器1 */ 338*10465441SEvalZero #define SDC_RESPONSE2 (SD_BASE+0X24) /* SDIO响应寄存器2 */ 339*10465441SEvalZero #define SDC_RESPONSE3 (SD_BASE+0X28) /* SDIO响应寄存器3 */ 340*10465441SEvalZero #define SDC_READ_TIMEOUT_CONTROL (SD_BASE+0X2c) /* SDIO读超时控制寄存器 */ 341*10465441SEvalZero #define SDC_INTERRUPT_STATUS (SD_BASE+0X30) /* SDIO中断状态寄存器 */ 342*10465441SEvalZero #define SDC_INTERRUPT_STATUS_MASK (SD_BASE+0X34) /* SDIO中断状态屏蔽寄存器 */ 343*10465441SEvalZero #define SDC_READ_BUFER_ACCESS (SD_BASE+0X38) /* SDIO接收FIFO */ 344*10465441SEvalZero #define SDC_WRITE_BUFER_ACCESS (SD_BASE+0X3c) /* SDIO发送FIFO */ 345*10465441SEvalZero 346*10465441SEvalZero 347*10465441SEvalZero 348*10465441SEvalZero /* 349*10465441SEvalZero * SMC0模块 350*10465441SEvalZero * 基址: 0x1000C000 351*10465441SEvalZero */ 352*10465441SEvalZero 353*10465441SEvalZero #define SMC0_CTRL (SMC0_BASE+0X000) /* SMC0控制寄存器 */ 354*10465441SEvalZero #define SMC0_INT (SMC0_BASE+0X004) /* SMC0中断寄存器 */ 355*10465441SEvalZero #define SMC0_FD (SMC0_BASE+0X008) /* SMC0基本单元时间寄存器 */ 356*10465441SEvalZero #define SMC0_CT (SMC0_BASE+0X00C) /* SMC0字符传输时间寄存器 */ 357*10465441SEvalZero #define SMC0_BT (SMC0_BASE+0X010) /* SMC0块传输时间寄存器 */ 358*10465441SEvalZero 359*10465441SEvalZero 360*10465441SEvalZero 361*10465441SEvalZero /* 362*10465441SEvalZero * SMC1模块 363*10465441SEvalZero * 基址: 0x1000D000 364*10465441SEvalZero */ 365*10465441SEvalZero 366*10465441SEvalZero #define SMC1_CTRL (SMC1_BASE+0X000) /* SMC1控制寄存器 */ 367*10465441SEvalZero #define SMC1_INT (SMC1_BASE+0X004) /* SMC1中断寄存器 */ 368*10465441SEvalZero #define SMC1_FD (SMC1_BASE+0X008) /* SMC1基本单元时间寄存器 */ 369*10465441SEvalZero #define SMC1_CT (SMC1_BASE+0X00C) /* SMC1字符传输时间寄存器 */ 370*10465441SEvalZero #define SMC1_BT (SMC1_BASE+0X010) /* SMC1块传输时间寄存器 */ 371*10465441SEvalZero 372*10465441SEvalZero 373*10465441SEvalZero 374*10465441SEvalZero /* 375*10465441SEvalZero * USBD模块 376*10465441SEvalZero * 基址: 0x1000E000 377*10465441SEvalZero */ 378*10465441SEvalZero 379*10465441SEvalZero #define USBD_PROTOCOLINTR (USBD_BASE+0X000) /* USB协议中断寄存器 */ 380*10465441SEvalZero #define USBD_INTRMASK (USBD_BASE+0X004) /* USB中断屏蔽寄存器 */ 381*10465441SEvalZero #define USBD_INTRCTRL (USBD_BASE+0X008) /* USB中断类型控制寄存器 */ 382*10465441SEvalZero #define USBD_EPINFO (USBD_BASE+0X00C) /* USB活动端点状态寄存器 */ 383*10465441SEvalZero #define USBD_BCONFIGURATIONVALUE (USBD_BASE+0X010) /* SET_CCONFIGURATION记录 */ 384*10465441SEvalZero #define USBD_BMATTRIBUTES (USBD_BASE+0X014) /* 当前配置属性寄存器 */ 385*10465441SEvalZero #define USBD_DEVSPEED (USBD_BASE+0X018) /* 当前设备工作速度寄存器 */ 386*10465441SEvalZero #define USBD_FRAMENUMBER (USBD_BASE+0X01C) /* 记录当前SOF包内的帧号 */ 387*10465441SEvalZero #define USBD_EPTRANSACTIONS0 (USBD_BASE+0X020) /* 记录下次要求的传输次数 */ 388*10465441SEvalZero #define USBD_EPTRANSACTIONS1 (USBD_BASE+0X024) /* 记录下次要求的传输次数 */ 389*10465441SEvalZero #define USBD_APPIFUPDATE (USBD_BASE+0X028) /* 接口号快速更新寄存器 */ 390*10465441SEvalZero #define USBD_CFGINTERFACE0 (USBD_BASE+0X02C) /* 记录接口的值 */ 391*10465441SEvalZero #define USBD_CFGINTERFACE1 (USBD_BASE+0X030) /* 记录接口的值 */ 392*10465441SEvalZero #define USBD_CFGINTERFACE2 (USBD_BASE+0X034) /* 记录接口的值 */ 393*10465441SEvalZero #define USBD_CFGINTERFACE3 (USBD_BASE+0X038) /* 记录接口的值 */ 394*10465441SEvalZero #define USBD_CFGINTERFACE4 (USBD_BASE+0X03C) /* 记录接口的值 */ 395*10465441SEvalZero #define USBD_CFGINTERFACE5 (USBD_BASE+0X040) /* 记录接口的值 */ 396*10465441SEvalZero #define USBD_CFGINTERFACE6 (USBD_BASE+0X044) /* 记录接口的值 */ 397*10465441SEvalZero #define USBD_CFGINTERFACE7 (USBD_BASE+0X048) /* 记录接口的值 */ 398*10465441SEvalZero #define USBD_CFGINTERFACE8 (USBD_BASE+0X04C) /* 记录接口的值 */ 399*10465441SEvalZero #define USBD_CFGINTERFACE9 (USBD_BASE+0X050) /* 记录接口的值 */ 400*10465441SEvalZero #define USBD_CFGINTERFACE10 (USBD_BASE+0X054) /* 记录接口的值 */ 401*10465441SEvalZero #define USBD_CFGINTERFACE11 (USBD_BASE+0X058) /* 记录接口的值 */ 402*10465441SEvalZero #define USBD_CFGINTERFACE12 (USBD_BASE+0X05C) /* 记录接口的值 */ 403*10465441SEvalZero #define USBD_CFGINTERFACE13 (USBD_BASE+0X060) /* 记录接口的值 */ 404*10465441SEvalZero #define USBD_CFGINTERFACE14 (USBD_BASE+0X064) /* 记录接口的值 */ 405*10465441SEvalZero #define USBD_CFGINTERFACE15 (USBD_BASE+0X068) /* 记录接口的值 */ 406*10465441SEvalZero #define USBD_CFGINTERFACE16 (USBD_BASE+0X06C) /* 记录接口的值 */ 407*10465441SEvalZero #define USBD_CFGINTERFACE17 (USBD_BASE+0X070) /* 记录接口的值 */ 408*10465441SEvalZero #define USBD_CFGINTERFACE18 (USBD_BASE+0X074) /* 记录接口的值 */ 409*10465441SEvalZero #define USBD_CFGINTERFACE19 (USBD_BASE+0X078) /* 记录接口的值 */ 410*10465441SEvalZero #define USBD_CFGINTERFACE20 (USBD_BASE+0X07C) /* 记录接口的值 */ 411*10465441SEvalZero #define USBD_CFGINTERFACE21 (USBD_BASE+0X080) /* 记录接口的值 */ 412*10465441SEvalZero #define USBD_CFGINTERFACE22 (USBD_BASE+0X084) /* 记录接口的值 */ 413*10465441SEvalZero #define USBD_CFGINTERFACE23 (USBD_BASE+0X088) /* 记录接口的值 */ 414*10465441SEvalZero #define USBD_CFGINTERFACE24 (USBD_BASE+0X08C) /* 记录接口的值 */ 415*10465441SEvalZero #define USBD_CFGINTERFACE25 (USBD_BASE+0X090) /* 记录接口的值 */ 416*10465441SEvalZero #define USBD_CFGINTERFACE26 (USBD_BASE+0X094) /* 记录接口的值 */ 417*10465441SEvalZero #define USBD_CFGINTERFACE27 (USBD_BASE+0X098) /* 记录接口的值 */ 418*10465441SEvalZero #define USBD_CFGINTERFACE28 (USBD_BASE+0X09C) /* 记录接口的值 */ 419*10465441SEvalZero #define USBD_CFGINTERFACE29 (USBD_BASE+0X0A0) /* 记录接口的值 */ 420*10465441SEvalZero #define USBD_CFGINTERFACE30 (USBD_BASE+0X0A4) /* 记录接口的值 */ 421*10465441SEvalZero #define USBD_CFGINTERFACE31 (USBD_BASE+0X0A8) /* 记录接口的值 */ 422*10465441SEvalZero #define USBD_PKTPASSEDCTRL (USBD_BASE+0X0AC) /* 记录成功接收的包数 */ 423*10465441SEvalZero #define USBD_PKTDROPPEDCTRL (USBD_BASE+0X0B0) /* 记录丢失的包数 */ 424*10465441SEvalZero #define USBD_CRCERRCTRL (USBD_BASE+0X0B4) /* 记录CRC错误的包数 */ 425*10465441SEvalZero #define USBD_BITSTUFFERRCTRL (USBD_BASE+0X0B8) /* 记录位填充错误的包数 */ 426*10465441SEvalZero #define USBD_PIDERRCTRL (USBD_BASE+0X0BC) /* 记录PID错误的包数 */ 427*10465441SEvalZero #define USBD_FRAMINGERRCTL (USBD_BASE+0X0C0) /* 记录有SYNC和EOP的包数 */ 428*10465441SEvalZero #define USBD_TXPKTCTRL (USBD_BASE+0X0C4) /* 记录发送包的数量 */ 429*10465441SEvalZero #define USBD_STATCTRLOV (USBD_BASE+0X0C8) /* 记录统计寄存器溢出情况 */ 430*10465441SEvalZero #define USBD_TXLENGTH (USBD_BASE+0X0CC) /* 记录每次IN传输事务包长度 */ 431*10465441SEvalZero #define USBD_RXLENGTH (USBD_BASE+0X0D0) /* 记录OUT传输事务包长度 */ 432*10465441SEvalZero #define USBD_RESUME (USBD_BASE+0X0D4) /* USB唤醒寄存器 */ 433*10465441SEvalZero #define USBD_READFLAG (USBD_BASE+0X0D8) /* 读异步状态寄存器标志 */ 434*10465441SEvalZero #define USBD_RECEIVETYPE (USBD_BASE+0X0DC) /* 传输状态寄存器 */ 435*10465441SEvalZero #define USBD_APPLOCK (USBD_BASE+0X0E0) /* 锁信号寄存器 */ 436*10465441SEvalZero #define USBD_EP0OUTADDR (USBD_BASE+0X100) /* 端点0端点号和方向 */ 437*10465441SEvalZero #define USBD_EP0OUTBMATTR (USBD_BASE+0X104) /* 端点0类型寄存器 */ 438*10465441SEvalZero #define USBD_EP0OUTMAXPKTSIZE (USBD_BASE+0X108) /* 端点0最大包尺寸寄存器 */ 439*10465441SEvalZero #define USBD_EP0OUTIFNUM (USBD_BASE+0X10C) /* 端点0接口号寄存器 */ 440*10465441SEvalZero #define USBD_EP0OUTSTAT (USBD_BASE+0X110) /* 端点0状态寄存器 */ 441*10465441SEvalZero #define USBD_EP0OUTBMREQTYPE (USBD_BASE+0X114) /* 端点0 SETUP事务请求类 */ 442*10465441SEvalZero #define USBD_EP0OUTBREQUEST (USBD_BASE+0X118) /* 端点0 SETUP事务请求内容 */ 443*10465441SEvalZero #define USBD_EP0OUTWVALUE (USBD_BASE+0X11C) /* 端点0 SETUP事务请求值 */ 444*10465441SEvalZero #define USBD_EP0OUTWINDEX (USBD_BASE+0X120) /* 端点0 SETUP事务请求索引 */ 445*10465441SEvalZero #define USBD_EP0OUTWLENGTH (USBD_BASE+0X120) /* 端点0 SETUP事务请求长度 */ 446*10465441SEvalZero #define USBD_EP0OUTSYNCHFRAME (USBD_BASE+0X128) /* 端点0同步包帧号 */ 447*10465441SEvalZero #define USBD_EP1OUTADDR (USBD_BASE+0X12C) /* 端点1输出端点号和方向 */ 448*10465441SEvalZero #define USBD_EP1OUTBMATTR (USBD_BASE+0X130) /* 端点1输出类型寄存器 */ 449*10465441SEvalZero #define USBD_EP1OUTMAXPKTSIZE (USBD_BASE+0X134) /* 端点1输出最大包尺寸寄存器 */ 450*10465441SEvalZero #define USBD_EP1OUTIFNUM (USBD_BASE+0X138) /* 端点1输出接口号寄存器 */ 451*10465441SEvalZero #define USBD_EP1OUTSTAT (USBD_BASE+0X13C) /* 端点1输出状态寄存器 */ 452*10465441SEvalZero #define USBD_EP1OUTBMREQTYPE (USBD_BASE+0X140) /* 端点1输出SETUP事务请求类型 */ 453*10465441SEvalZero #define USBD_EP1OUTBREQUEST (USBD_BASE+0X144) /* 端点1输出SETUP事务请求内容 */ 454*10465441SEvalZero #define USBD_EP1OUTWVALUE (USBD_BASE+0X148) /* 端点1输出SETUP事务请求值 */ 455*10465441SEvalZero #define USBD_EP1OUTWINDX (USBD_BASE+0X14C) /* 端点1输出SETUP事务请求索引 */ 456*10465441SEvalZero #define USBD_EP1OUTWLENGH (USBD_BASE+0X150) /* 端点1输出SETUP事务请求域长度 */ 457*10465441SEvalZero #define USBD_EP1OUTSYNCHFRAME (USBD_BASE+0X154) /* 端点1输出同步包帧号 */ 458*10465441SEvalZero #define USBD_EP1INADDR (USBD_BASE+0X158) /* 端点1输入端点号和方向 */ 459*10465441SEvalZero #define USBD_EP1INBMATTR (USBD_BASE+0X15C) /* 端点1输入类型寄存器 */ 460*10465441SEvalZero #define USBD_EP1INMAXPKTSIZE (USBD_BASE+0X160) /* 端点1输入最大包尺寸寄存器 */ 461*10465441SEvalZero #define USBD_EP1INIFNUM (USBD_BASE+0X164) /* 端点1输入接口号寄存器 */ 462*10465441SEvalZero #define USBD_EP1INSTAT (USBD_BASE+0X168) /* 端点1输入状态寄存器 */ 463*10465441SEvalZero #define USBD_EP1INBMREQTYPE (USBD_BASE+0X16C) /* 端点1输入SETUP事务请求类型 */ 464*10465441SEvalZero #define USBD_EP1INBREQUEST (USBD_BASE+0X170) /* 端点1输入SETUP事务请求内容 */ 465*10465441SEvalZero #define USBD_EP1INWVALUE (USBD_BASE+0X174) /* 端点1输入SETUP事务请求值 */ 466*10465441SEvalZero #define USBD_EP1INWINDEX (USBD_BASE+0X178) /* 端点1输入SETUP事务请求索引 */ 467*10465441SEvalZero #define USBD_EP1INWLENGTH (USBD_BASE+0X17C) /* 端点1输入SETUP事务请求域长度 */ 468*10465441SEvalZero #define USBD_EP1INSYNCHFRAME (USBD_BASE+0X180) /* 端点1输入同步包帧号 */ 469*10465441SEvalZero #define USBD_EP2OUTADDR (USBD_BASE+0X184) /* 端点2输出端点号和方向 */ 470*10465441SEvalZero #define USBD_EP2OUTBMATTR (USBD_BASE+0X188) /* 端点2输出类型寄存器 */ 471*10465441SEvalZero #define USBD_EP2OUTMAXPKTSIZE (USBD_BASE+0X18C) /* 端点2输出最大包尺寸寄存器 */ 472*10465441SEvalZero #define USBD_EP2OUTIFNUM (USBD_BASE+0X190) /* 端点2输出接口号寄存器 */ 473*10465441SEvalZero #define USBD_EP2OUTSTAT (USBD_BASE+0X194) /* 端点2输出状态寄存器 */ 474*10465441SEvalZero #define USBD_EP2OUTBMREQTYPE (USBD_BASE+0X198) /* 端点2输出SETUP事务请求类型 */ 475*10465441SEvalZero #define USBD_EP2OUTBREQUEST (USBD_BASE+0X19C) /* 端点2输出SETUP事务请求内容 */ 476*10465441SEvalZero #define USBD_EP2OUTWVALUE (USBD_BASE+0X1A0) /* 端点2输出SETUP事务请求值 */ 477*10465441SEvalZero #define USBD_EP2OUTWINDEX (USBD_BASE+0X1A4) /* 端点2输出SETUP事务请求索引 */ 478*10465441SEvalZero #define USBD_EP2OUTWLENGTH (USBD_BASE+0X1A8) /* 端点2输出SETUP事务请求域长度 */ 479*10465441SEvalZero #define USBD_EP2OUTSYNCHFRAME (USBD_BASE+0X1AC) /* 端点2输出同步包帧号 */ 480*10465441SEvalZero #define USBD_EP2INADDR (USBD_BASE+0X1B0) /* 端点2输入端点号和方向 */ 481*10465441SEvalZero #define USBD_EP2INBMATTR (USBD_BASE+0X1B4) /* 端点2输入类型寄存器 */ 482*10465441SEvalZero #define USBD_EP2INMAXPKTSIZE (USBD_BASE+0X1B8) /* 端点2输入最大包尺寸寄存器 */ 483*10465441SEvalZero #define USBD_EP2INIFNUM (USBD_BASE+0X1BC) /* 端点2输入接口号寄存器 */ 484*10465441SEvalZero #define USBD_EP2INSTAT (USBD_BASE+0X1C0) /* 端点2输入状态寄存器 */ 485*10465441SEvalZero #define USBD_EP2INBMREQTYPE (USBD_BASE+0X1C4) /* 端点2输入SETUP事务请求类型 */ 486*10465441SEvalZero #define USBD_EP2INBREQUEST (USBD_BASE+0X1C8) /* 端点2输入SETUP事务请求内容 */ 487*10465441SEvalZero #define USBD_EP2INWVALUE (USBD_BASE+0X1CC) /* 端点2输入SETUP事务请求值 */ 488*10465441SEvalZero #define USBD_EP2INWINDEX (USBD_BASE+0X1D0) /* 端点2输入SETUP事务请求索引 */ 489*10465441SEvalZero #define USBD_EP2INWLENGTH (USBD_BASE+0X1D4) /* 端点2输入SETUP事务请求域长度 */ 490*10465441SEvalZero #define USBD_EP2INSYNCHFRAME (USBD_BASE+0X1D8) /* 端点2输入同步包帧号 */ 491*10465441SEvalZero #define USBD_RXFIFO (USBD_BASE+0X200) /* 接受FIFO */ 492*10465441SEvalZero #define USBD_TXFIFO (USBD_BASE+0X300) /* 发送FIFO */ 493*10465441SEvalZero 494*10465441SEvalZero 495*10465441SEvalZero /* 496*10465441SEvalZero * GPIO模块 497*10465441SEvalZero * 基址: 0x1000F000 498*10465441SEvalZero */ 499*10465441SEvalZero 500*10465441SEvalZero #define GPIO_DBCLK_DIV (GPIO_BASE+0X000) /* 去毛刺采用时钟分频比配置寄存器 */ 501*10465441SEvalZero #define GPIO_PORTA_DIR (GPIO_BASE+0X004) /* A组端口输入输出方向配置寄存器 */ 502*10465441SEvalZero #define GPIO_PORTA_SEL (GPIO_BASE+0X008) /* A组端口通用用途选择配置寄存器 */ 503*10465441SEvalZero #define GPIO_PORTA_INCTL (GPIO_BASE+0X00C) /* A组端口通用用途输入时类型配置寄存器 */ 504*10465441SEvalZero #define GPIO_PORTA_INTRCTL (GPIO_BASE+0X010) /* A组端口中断触发类型配置寄存器 */ 505*10465441SEvalZero #define GPIO_PORTA_INTRCLR (GPIO_BASE+0X014) /* A组端口通用用途中断清除配置寄存器 */ 506*10465441SEvalZero #define GPIO_PORTA_DATA (GPIO_BASE+0X018) /* A组端口通用用途数据配置寄存器 */ 507*10465441SEvalZero #define GPIO_PORTB_DIR (GPIO_BASE+0X01C) /* B组端口输入输出方向配置寄存器 */ 508*10465441SEvalZero #define GPIO_PORTB_SEL (GPIO_BASE+0X020) /* B组端口通用用途选择配置寄存器 */ 509*10465441SEvalZero #define GPIO_PORTB_DATA (GPIO_BASE+0X024) /* B组端口通用用途数据配置寄存器 */ 510*10465441SEvalZero #define GPIO_PORTC_DIR (GPIO_BASE+0X028) /* C组端口输入输出方向配置寄存器 */ 511*10465441SEvalZero #define GPIO_PORTC_SEL (GPIO_BASE+0X02C) /* C组端口通用用途选择配置寄存器 */ 512*10465441SEvalZero #define GPIO_PORTC_DATA (GPIO_BASE+0X030) /* C组端口通用用途数据配置寄存器 */ 513*10465441SEvalZero #define GPIO_PORTD_DIR (GPIO_BASE+0X034) /* D组端口输入输出方向配置寄存器 */ 514*10465441SEvalZero #define GPIO_PORTD_SEL (GPIO_BASE+0X038) /* D组端口通用用途选择配置寄存器 */ 515*10465441SEvalZero #define GPIO_PORTD_SPECII (GPIO_BASE+0X03C) /* D组端口专用用途2选择配置寄存器 */ 516*10465441SEvalZero #define GPIO_PORTD_DATA (GPIO_BASE+0X040) /* D组端口通用用途数据配置寄存器 */ 517*10465441SEvalZero #define GPIO_PORTE_DIR (GPIO_BASE+0X044) /* E组端口输入输出方向配置寄存器 */ 518*10465441SEvalZero #define GPIO_PORTE_SEL (GPIO_BASE+0X048) /* E组端口通用用途选择配置寄存器 */ 519*10465441SEvalZero #define GPIO_PORTE_DATA (GPIO_BASE+0X04C) /* E组端口通用用途数据配置寄存器 */ 520*10465441SEvalZero #define GPIO_PORTF_DIR (GPIO_BASE+0X050) /* F组端口输入输出方向配置寄存器 */ 521*10465441SEvalZero #define GPIO_PORTF_SEL (GPIO_BASE+0X054) /* F组端口通用用途选择配置寄存器 */ 522*10465441SEvalZero #define GPIO_PORTF_INCTL (GPIO_BASE+0X058) /* F组端口通用用途输入时类型配置寄存器 */ 523*10465441SEvalZero #define GPIO_PORTF_INTRCTL (GPIO_BASE+0X05C) /* F组端口中断触发类型配置寄存器 */ 524*10465441SEvalZero #define GPIO_PORTF_INTRCLR (GPIO_BASE+0X060) /* F组端口通用用途中断清除配置寄存器 */ 525*10465441SEvalZero #define GPIO_PORTF_DATA (GPIO_BASE+0X064) /* F组端口通用用途数据配置寄存器 */ 526*10465441SEvalZero #define GPIO_PORTG_DIR (GPIO_BASE+0X068) /* G组端口输入输出方向配置寄存器 */ 527*10465441SEvalZero #define GPIO_PORTG_SEL (GPIO_BASE+0X06C) /* G组端口通用用途选择配置寄存器 */ 528*10465441SEvalZero #define GPIO_PORTG_DATA (GPIO_BASE+0X070) /* G组端口通用用途数据配置寄存器 */ 529*10465441SEvalZero #define GPIO_PORTH_DIR (GPIO_BASE+0X07C) /* H组端口输入输出方向配置寄存器 */ 530*10465441SEvalZero #define GPIO_PORTH_SEL (GPIO_BASE+0X078) /* H组端口通用用途选择配置寄存器 */ 531*10465441SEvalZero #define GPIO_PORTH_DATA (GPIO_BASE+0X07C) /* H组端口通用用途数据配置寄存器 */ 532*10465441SEvalZero #define GPIO_PORTI_DIR (GPIO_BASE+0X080) /* I组端口输入输出方向配置寄存器 */ 533*10465441SEvalZero #define GPIO_PORTI_SEL (GPIO_BASE+0X084) /* I组端口通用用途选择配置寄存器 */ 534*10465441SEvalZero #define GPIO_PORTI_DATA (GPIO_BASE+0X088) /* I组端口通用用途数据配置寄存器 */ 535*10465441SEvalZero 536*10465441SEvalZero 537*10465441SEvalZero 538*10465441SEvalZero /* 539*10465441SEvalZero * EMI模块 540*10465441SEvalZero * 基址: 0x11000000 541*10465441SEvalZero */ 542*10465441SEvalZero 543*10465441SEvalZero #define EMI_CSACONF (EMI_BASE+0X000) /* CSA参数配置寄存器 */ 544*10465441SEvalZero #define EMI_CSBCONF (EMI_BASE+0X004) /* CSB参数配置寄存器 */ 545*10465441SEvalZero #define EMI_CSCCONF (EMI_BASE+0X008) /* CSC参数配置寄存器 */ 546*10465441SEvalZero #define EMI_CSDCONF (EMI_BASE+0X00C) /* CSD参数配置寄存器 */ 547*10465441SEvalZero #define EMI_CSECONF (EMI_BASE+0X010) /* CSE参数配置寄存器 */ 548*10465441SEvalZero #define EMI_CSFCONF (EMI_BASE+0X014) /* CSF参数配置寄存器 */ 549*10465441SEvalZero #define EMI_SDCONF1 (EMI_BASE+0X018) /* SDRAM时序配置寄存器1 */ 550*10465441SEvalZero #define EMI_SDCONF2 (EMI_BASE+0X01C) /* SDRAM时序配置寄存器2, SDRAM初始化用到的配置信息 */ 551*10465441SEvalZero #define EMI_REMAPCONF (EMI_BASE+0X020) /* 片选空间及地址映射REMAP配置寄存器 */ 552*10465441SEvalZero #define EMI_NAND_ADDR1 (EMI_BASE+0X100) /* NAND FLASH的地址寄存器1 */ 553*10465441SEvalZero #define EMI_NAND_COM (EMI_BASE+0X104) /* NAND FLASH的控制字寄存器 */ 554*10465441SEvalZero #define EMI_NAND_STA (EMI_BASE+0X10C) /* NAND FLASH的状态寄存器 */ 555*10465441SEvalZero #define EMI_ERR_ADDR1 (EMI_BASE+0X110) /* 读操作出错的地址寄存器1 */ 556*10465441SEvalZero #define EMI_ERR_ADDR2 (EMI_BASE+0X114) /* 读操作出错的地址寄存器2 */ 557*10465441SEvalZero #define EMI_NAND_CONF1 (EMI_BASE+0X118) /* NAND FLASH的配置器存器1 */ 558*10465441SEvalZero #define EMI_NAND_INTR (EMI_BASE+0X11C) /* NAND FLASH中断寄存器 */ 559*10465441SEvalZero #define EMI_NAND_ECC (EMI_BASE+0X120) /* ECC校验完成寄存器 */ 560*10465441SEvalZero #define EMI_NAND_IDLE (EMI_BASE+0X124) /* NAND FLASH空闲寄存器 */ 561*10465441SEvalZero #define EMI_NAND_CONF2 (EMI_BASE+0X128) /* NAND FLASH的配置器存器2 */ 562*10465441SEvalZero #define EMI_NAND_ADDR2 (EMI_BASE+0X12C) /* NAND FLASH的地址寄存器2 */ 563*10465441SEvalZero #define EMI_NAND_DATA (EMI_BASE+0X200) /* NAND FLASH的数据寄存器 */ 564*10465441SEvalZero 565*10465441SEvalZero 566*10465441SEvalZero /* 567*10465441SEvalZero * DMAC模块 568*10465441SEvalZero * 基址: 0x11001000 569*10465441SEvalZero */ 570*10465441SEvalZero 571*10465441SEvalZero #define DMAC_INTSTATUS (DMAC_BASE+0X020) /* DAMC中断状态寄存器。 */ 572*10465441SEvalZero #define DMAC_INTTCSTATUS (DMAC_BASE+0X050) /* DMAC传输完成中断状态寄存器 */ 573*10465441SEvalZero #define DMAC_INTTCCLEAR (DMAC_BASE+0X060) /* DMAC传输完成中断状态清除寄存器 */ 574*10465441SEvalZero #define DMAC_INTERRORSTATUS (DMAC_BASE+0X080) /* DMAC传输错误中断状态寄存器 */ 575*10465441SEvalZero #define DMAC_INTINTERRCLR (DMAC_BASE+0X090) /* DMAC传输错误中断状态清除寄存器 */ 576*10465441SEvalZero #define DMAC_ENBLDCHNS (DMAC_BASE+0X0B0) /* DMAC通道使能状态寄存器 */ 577*10465441SEvalZero #define DMAC_C0SRCADDR (DMAC_BASE+0X000) /* DMAC道0源地址寄存器 */ 578*10465441SEvalZero #define DMAC_C0DESTADD (DMAC_BASE+0X004) /* DMAC道0目的地址寄存器 */ 579*10465441SEvalZero #define DMAC_C0CONTROL (DMAC_BASE+0X00C) /* DMAC道0控制寄存器 */ 580*10465441SEvalZero #define DMAC_C0CONFIGURATION (DMAC_BASE+0X010) /* DMAC道0配置寄存器 */ 581*10465441SEvalZero #define DMAC_C0DESCRIPTOR (DMAC_BASE+0X01C) /* DMAC道0链表地址寄存器 */ 582*10465441SEvalZero #define DMAC_C1SRCADDR (DMAC_BASE+0X100) /* DMAC道1源地址寄存器 */ 583*10465441SEvalZero #define DMAC_C1DESTADDR (DMAC_BASE+0X104) /* DMAC道1目的地址寄存器 */ 584*10465441SEvalZero #define DMAC_C1CONTROL (DMAC_BASE+0X10C) /* DMAC道1控制寄存器 */ 585*10465441SEvalZero #define DMAC_C1CONFIGURATION (DMAC_BASE+0X110) /* DMAC道1配置寄存器 */ 586*10465441SEvalZero #define DMAC_C1DESCRIPTOR (DMAC_BASE+0X114) /* DMAC道1链表地址寄存器 */ 587*10465441SEvalZero #define DMAC_C2SRCADDR (DMAC_BASE+0X200) /* DMAC道2源地址寄存器 */ 588*10465441SEvalZero #define DMAC_C2DESTADDR (DMAC_BASE+0X204) /* DMAC道2目的地址寄存器 */ 589*10465441SEvalZero #define DMAC_C2CONTROL (DMAC_BASE+0X20C) /* DMAC道2控制寄存器 */ 590*10465441SEvalZero #define DMAC_C2CONFIGURATION (DMAC_BASE+0X210) /* DMAC道2配置寄存器 */ 591*10465441SEvalZero #define DMAC_C2DESCRIPTOR (DMAC_BASE+0X214) /* DMAC道2链表地址寄存器 */ 592*10465441SEvalZero #define DMAC_C3SRCADDR (DMAC_BASE+0X300) /* DMAC道3源地址寄存器 */ 593*10465441SEvalZero #define DMAC_C3DESTADDR (DMAC_BASE+0X304) /* DMAC道3目的地址寄存器 */ 594*10465441SEvalZero #define DMAC_C3CONTROL (DMAC_BASE+0X30C) /* DMAC道3控制寄存器 */ 595*10465441SEvalZero #define DMAC_C3CONFIGURATION (DMAC_BASE+0X310) /* DMAC道3配置寄存器 */ 596*10465441SEvalZero #define DMAC_C3DESCRIPTOR (DMAC_BASE+0X314) /* DMAC道3链表地址寄存器 */ 597*10465441SEvalZero #define DMAC_C4SRCADDR (DMAC_BASE+0X400) /* DMAC道4源地址寄存器 */ 598*10465441SEvalZero #define DMAC_C4DESTADDR (DMAC_BASE+0X404) /* DMAC道4目的地址寄存器 */ 599*10465441SEvalZero #define DMAC_C4CONTROL (DMAC_BASE+0X40C) /* DMAC道4控制寄存器 */ 600*10465441SEvalZero #define DMAC_C4CONFIGURATION (DMAC_BASE+0X410) /* DMAC道4配置寄存器 */ 601*10465441SEvalZero #define DMAC_C4DESCRIPTOR (DMAC_BASE+0X414) /* DMAC道4链表地址寄存器 */ 602*10465441SEvalZero #define DMAC_C5SRCADDR (DMAC_BASE+0X500) /* DMAC道5源地址寄存器 */ 603*10465441SEvalZero #define DMAC_C5DESTADDR (DMAC_BASE+0X504) /* DMAC道5目的地址寄存器 */ 604*10465441SEvalZero #define DMAC_C5CONTROL (DMAC_BASE+0X50C) /* DMAC道5控制寄存器 */ 605*10465441SEvalZero #define DMAC_C5CONFIGURATION (DMAC_BASE+0X510) /* DMAC道5配置寄存器 */ 606*10465441SEvalZero #define DMAC_C5DESCRIPTOR (DMAC_BASE+0X514) /* DMAC道5链表地址寄存器 */ 607*10465441SEvalZero 608*10465441SEvalZero 609*10465441SEvalZero /* 610*10465441SEvalZero * LCDC模块 611*10465441SEvalZero * 基址: 0x11002000 612*10465441SEvalZero */ 613*10465441SEvalZero 614*10465441SEvalZero #define LCDC_SSA (LCDC_BASE+0X000) /* 屏幕起始地址寄存器 */ 615*10465441SEvalZero #define LCDC_SIZE (LCDC_BASE+0X004) /* 屏幕尺寸寄存器 */ 616*10465441SEvalZero #define LCDC_PCR (LCDC_BASE+0X008) /* 面板配置寄存器 */ 617*10465441SEvalZero #define LCDC_HCR (LCDC_BASE+0X00C) /* 水平配置寄存器 */ 618*10465441SEvalZero #define LCDC_VCR (LCDC_BASE+0X010) /* 垂直配置寄存器 */ 619*10465441SEvalZero #define LCDC_PWMR (LCDC_BASE+0X014) /* PWM对比度控制寄存器 */ 620*10465441SEvalZero #define LCDC_LECR (LCDC_BASE+0X018) /* 使能控制寄存器 */ 621*10465441SEvalZero #define LCDC_DMACR (LCDC_BASE+0X01C) /* DMA控制寄存器 */ 622*10465441SEvalZero #define LCDC_LCDISREN (LCDC_BASE+0X020) /* 中断使能寄存器 */ 623*10465441SEvalZero #define LCDC_LCDISR (LCDC_BASE+0X024) /* 中断状态寄存器 */ 624*10465441SEvalZero #define LCDC_LGPMR (LCDC_BASE+0X040) /* 灰度调色映射寄存器组 (16个32bit寄存器) */ 625*10465441SEvalZero 626*10465441SEvalZero 627*10465441SEvalZero /* 628*10465441SEvalZero * MAC模块 629*10465441SEvalZero * 基址: 0x11003000 630*10465441SEvalZero */ 631*10465441SEvalZero 632*10465441SEvalZero #define MAC_CTRL (MAC_BASE+0X000) /* MAC控制寄存器 */ 633*10465441SEvalZero #define MAC_INTSRC (MAC_BASE+0X004) /* MAC中断源寄存器 */ 634*10465441SEvalZero #define MAC_INTMASK (MAC_BASE+0X008) /* MAC中断屏蔽寄存器 */ 635*10465441SEvalZero #define MAC_IPGT (MAC_BASE+0X00C) /* 连续帧间隔寄存器 */ 636*10465441SEvalZero #define MAC_IPGR1 (MAC_BASE+0X010) /* 等待窗口寄存器 */ 637*10465441SEvalZero #define MAC_IPGR2 (MAC_BASE+0X014) /* 等待窗口寄存器 */ 638*10465441SEvalZero #define MAC_PACKETLEN (MAC_BASE+0X018) /* 帧长度寄存器 */ 639*10465441SEvalZero #define MAC_COLLCONF (MAC_BASE+0X01C) /* 碰撞重发寄存器 */ 640*10465441SEvalZero #define MAC_TXBD_NUM (MAC_BASE+0X020) /* 发送描述符寄存器 */ 641*10465441SEvalZero #define MAC_FLOWCTRL (MAC_BASE+0X024) /* 流控寄存器 */ 642*10465441SEvalZero #define MAC_MII_CTRL (MAC_BASE+0X028) /* PHY控制寄存器 */ 643*10465441SEvalZero #define MAC_MII_CMD (MAC_BASE+0X02C) /* PHY命令寄存器 */ 644*10465441SEvalZero #define MAC_MII_ADDRESS (MAC_BASE+0X030) /* PHY地址寄存器 */ 645*10465441SEvalZero #define MAC_MII_TXDATA (MAC_BASE+0X034) /* PHY写数据寄存器 */ 646*10465441SEvalZero #define MAC_MII_RXDATA (MAC_BASE+0X038) /* PHY读数据寄存器 */ 647*10465441SEvalZero #define MAC_MII_STATUS (MAC_BASE+0X03C) /* PHY状态寄存器 */ 648*10465441SEvalZero #define MAC_ADDR0 (MAC_BASE+0X040) /* MAC地址寄存器 */ 649*10465441SEvalZero #define MAC_ADDR1 (MAC_BASE+0X044) /* MAC地址寄存器 */ 650*10465441SEvalZero #define MAC_HASH0 (MAC_BASE+0X048) /* MAC HASH寄存器 */ 651*10465441SEvalZero #define MAC_HASH1 (MAC_BASE+0X04C) /* MAC HASH寄存器 */ 652*10465441SEvalZero #define MAC_TXPAUSE (MAC_BASE+0X050) /* MAC控制帧寄存器 */ 653*10465441SEvalZero #define MAC_TX_BD (MAC_BASE+0X400) 654*10465441SEvalZero #define MAC_RX_BD (MAC_BASE+0X600) 655*10465441SEvalZero 656*10465441SEvalZero 657*10465441SEvalZero /* 658*10465441SEvalZero ************************************** 659*10465441SEvalZero * Error Codes: 660*10465441SEvalZero * IF SUCCESS RETURN 0, ELSE RETURN OTHER ERROR CODE, 661*10465441SEvalZero * parameter error return (-33)/E_PAR, 662*10465441SEvalZero * hardware error reture (-99)/E_HA 663*10465441SEvalZero ************************************** 664*10465441SEvalZero */ 665*10465441SEvalZero 666*10465441SEvalZero #define E_OK 0 /* Normal completion */ 667*10465441SEvalZero #define E_SYS (-5) /* System error */ 668*10465441SEvalZero #define E_NOMEM (-10) /* Insufficient memory */ 669*10465441SEvalZero #define E_NOSPT (-17) /* Feature not supported */ 670*10465441SEvalZero #define E_INOSPT (-18) /* Feature not supported by ITRON/FILE specification */ 671*10465441SEvalZero #define E_RSFN (-20) /* Reserved function code number */ 672*10465441SEvalZero #define E_RSATR (-24) /* Reserved attribute */ 673*10465441SEvalZero #define E_PAR (-33) /* Parameter error */ 674*10465441SEvalZero #define E_ID (-35) /* Invalid ID number */ 675*10465441SEvalZero #define E_NOEXS (-52) /* Object does not exist */ 676*10465441SEvalZero #define E_OBJ (-63) /* Invalid object state */ 677*10465441SEvalZero #define E_MACV (-65) /* Memory access disabled or memory access violation */ 678*10465441SEvalZero #define E_OACV (-66) /* Object access violation */ 679*10465441SEvalZero #define E_CTX (-69) /* Context error */ 680*10465441SEvalZero #define E_QOVR (-73) /* Queuing or nesting overflow */ 681*10465441SEvalZero #define E_DLT (-81) /* Object being waited for was deleted */ 682*10465441SEvalZero #define E_TMOUT (-85) /* Polling failure or timeout exceeded */ 683*10465441SEvalZero #define E_RLWAI (-86) /* WAIT state was forcibly released */ 684*10465441SEvalZero 685*10465441SEvalZero #define E_HA (-99) /* HARD WARE ERROR */ 686*10465441SEvalZero 687*10465441SEvalZero 688*10465441SEvalZero /* 689*10465441SEvalZero ************************************** 690*10465441SEvalZero * PMU 模块时钟 691*10465441SEvalZero ************************************** 692*10465441SEvalZero */ 693*10465441SEvalZero 694*10465441SEvalZero #define CLK_SGPT (1 << 16) 695*10465441SEvalZero #define CLK_SI2S (1 << 15) 696*10465441SEvalZero #define CLK_SSMC (1 << 14) 697*10465441SEvalZero #define CLK_SMAC (1 << 13) 698*10465441SEvalZero #define CLK_SUSB (1 << 12) 699*10465441SEvalZero #define CLK_SUART3 (1 << 11) 700*10465441SEvalZero #define CLK_SUART2 (1 << 10) 701*10465441SEvalZero #define CLK_SUART1 (1 << 9) 702*10465441SEvalZero #define CLK_SUART0 (1 << 8) 703*10465441SEvalZero #define CLK_SSSI (1 << 7) 704*10465441SEvalZero #define CLK_SAC97 (1 << 6) 705*10465441SEvalZero #define CLK_SMMCSD (1 << 5) 706*10465441SEvalZero #define CLK_SEMI (1 << 4) 707*10465441SEvalZero #define CLK_SDMAC (1 << 3) 708*10465441SEvalZero #define CLK_SPWM (1 << 2) 709*10465441SEvalZero #define CLK_SLCDC (1 << 1) 710*10465441SEvalZero #define CLK_SESRAM (1) 711*10465441SEvalZero 712*10465441SEvalZero 713*10465441SEvalZero /*Interrupt Sources*/ 714*10465441SEvalZero 715*10465441SEvalZero 716*10465441SEvalZero #define INTSRC_RTC 31 717*10465441SEvalZero #define INTSRC_DMAC 30 718*10465441SEvalZero #define INTSRC_EMI 29 719*10465441SEvalZero #define INTSRC_MAC 28 720*10465441SEvalZero #define INTSRC_TIMER1 27 721*10465441SEvalZero #define INTSRC_TIMER2 26 722*10465441SEvalZero #define INTSRC_TIMER3 25 723*10465441SEvalZero #define INTSRC_UART0 24 724*10465441SEvalZero #define INTSRC_UART1 23 725*10465441SEvalZero #define INTSRC_UART2 22 726*10465441SEvalZero #define INTSRC_UART3 21 727*10465441SEvalZero #define INTSRC_PWM 20 728*10465441SEvalZero #define INTSRC_LCDC 19 729*10465441SEvalZero #define INTSRC_I2S 18 730*10465441SEvalZero #define INTSRC_SSI 17 731*10465441SEvalZero 732*10465441SEvalZero #define INTSRC_USB 15 733*10465441SEvalZero #define INTSRC_SMC0 14 734*10465441SEvalZero #define INTSRC_SMC1 13 735*10465441SEvalZero #define INTSRC_SDIO 12 736*10465441SEvalZero #define INTSRC_EXINT10 11 737*10465441SEvalZero #define INTSRC_EXINT9 10 738*10465441SEvalZero #define INTSRC_EXINT8 9 739*10465441SEvalZero #define INTSRC_EXINT7 8 740*10465441SEvalZero #define INTSRC_EXINT6 7 741*10465441SEvalZero #define INTSRC_EXINT5 6 742*10465441SEvalZero #define INTSRC_EXINT4 5 743*10465441SEvalZero #define INTSRC_EXINT3 4 744*10465441SEvalZero #define INTSRC_EXINT2 3 745*10465441SEvalZero #define INTSRC_EXINT1 2 746*10465441SEvalZero #define INTSRC_EXINT0 1 747*10465441SEvalZero #define INTSRC_NULL 0 748*10465441SEvalZero 749*10465441SEvalZero 750*10465441SEvalZero /*Sereral useful macros*/ 751*10465441SEvalZero #define set_plevel(plevel) *(RP)INTC_IPLR = plevel //设置普通中断的优先级门限,只有优先级大于此值的中断才能通过 752*10465441SEvalZero #define set_int_force(intnum) *(RP)INTC_IFR = (1 << intnum) //置1后,软件强制该位对应的中断源发出中断信号 753*10465441SEvalZero #define enable_irq(intnum) *(RP)INTC_IER |= (1 << intnum) //置1后,允许中断源的IRQ 中断信号 754*10465441SEvalZero #define disable_irq( intnum) *(RP)INTC_IER &= ~(1<< intnum) //置0后,不允许中断源的IRQ 中断信号 755*10465441SEvalZero #define mask_irq(intnum) *(RP)INTC_IMR |= (1 << intnum) //置1后,屏蔽对应的IRQ 中断信号 756*10465441SEvalZero #define unmask_irq(intnum) *(RP)INTC_IMR &= ~(1 << intnum) //置0后,通过对应的IRQ 中断信号 757*10465441SEvalZero #define mask_all_irq() *(RP)INTC_IMR = 0xFFFFFFFF //屏蔽对应的IRQ 中断信号 758*10465441SEvalZero #define unmask_all_irq() *(RP)INTC_IMR = 0x00000000 //通过对应的IRQ 中断信号 759*10465441SEvalZero #define enable_all_irq() *(RP)INTC_IER = 0XFFFFFFFF //允许中断源的IRQ 中断信号 760*10465441SEvalZero #define disable_all_irq() *(RP)INTC_IER = 0X00000000 //不允许中断源的IRQ 中断信号 761*10465441SEvalZero #define InitInt() do{mask_all_irq(); enable_all_irq();}while(0) 762*10465441SEvalZero 763*10465441SEvalZero /* 764*10465441SEvalZero ************************************** 765*10465441SEvalZero * 所有程序中用到的Typedef 766*10465441SEvalZero ************************************** 767*10465441SEvalZero */ 768*10465441SEvalZero 769*10465441SEvalZero typedef char S8; /* signed 8-bit integer */ 770*10465441SEvalZero typedef short S16; /* signed 16-bit integer */ 771*10465441SEvalZero typedef long S32; /* signed 32-bit integer */ 772*10465441SEvalZero typedef unsigned char U8; /* unsigned 8-bit integer */ 773*10465441SEvalZero typedef unsigned short U16; /* unsigned 16-bit integer */ 774*10465441SEvalZero typedef unsigned long U32; /* unsigned 32-bit integer */ 775*10465441SEvalZero 776*10465441SEvalZero typedef volatile U32 * RP; 777*10465441SEvalZero typedef volatile U16 * RP16; 778*10465441SEvalZero typedef volatile U8 * RP8; 779*10465441SEvalZero 780*10465441SEvalZero typedef void *VP; /* pointer to an unpredictable data type */ 781*10465441SEvalZero typedef void (*FP)(); /* program start address */ 782*10465441SEvalZero 783*10465441SEvalZero #ifndef _BOOL_TYPE_ 784*10465441SEvalZero #define _BOOL_TYPE_ 785*10465441SEvalZero typedef int BOOL; /* Boolean value. TRUE (1) or FALSE (0). */ 786*10465441SEvalZero #endif 787*10465441SEvalZero 788*10465441SEvalZero typedef int ER; /* Error code. A signed integer. */ 789*10465441SEvalZero 790*10465441SEvalZero /** 791*10465441SEvalZero * IO definitions 792*10465441SEvalZero * 793*10465441SEvalZero * define access restrictions to peripheral registers 794*10465441SEvalZero */ 795*10465441SEvalZero 796*10465441SEvalZero #define __I volatile const /*!< defines 'read only' permissions */ 797*10465441SEvalZero #define __O volatile /*!< defines 'write only' permissions */ 798*10465441SEvalZero #define __IO volatile /*!< defines 'read / write' permissions */ 799*10465441SEvalZero #define __iomem volatile 800*10465441SEvalZero 801*10465441SEvalZero 802*10465441SEvalZero /*Macros for debug*/ 803*10465441SEvalZero 804*10465441SEvalZero #define EOUT(fmt,...) \ 805*10465441SEvalZero do \ 806*10465441SEvalZero { \ 807*10465441SEvalZero rt_kprintf("EOUT:(%s:%i) ",__FILE__,__LINE__); \ 808*10465441SEvalZero rt_kprintf(fmt,##__VA_ARGS__); \ 809*10465441SEvalZero }while(0) 810*10465441SEvalZero 811*10465441SEvalZero #define RT_DEBUG 812*10465441SEvalZero #ifdef RT_DEBUG 813*10465441SEvalZero #define DBOUT(fmt,...) \ 814*10465441SEvalZero do \ 815*10465441SEvalZero { \ 816*10465441SEvalZero rt_kprintf("DBOUT:(%s:%i) ",__FILE__,__LINE__); \ 817*10465441SEvalZero rt_kprintf(fmt,##__VA_ARGS__); \ 818*10465441SEvalZero }while(0) 819*10465441SEvalZero #else 820*10465441SEvalZero #define DBOUT(fmt,...) \ 821*10465441SEvalZero do{}while(0) 822*10465441SEvalZero #endif 823*10465441SEvalZero 824*10465441SEvalZero #ifdef RT_DEBUG 825*10465441SEvalZero #define ASSERT(arg) \ 826*10465441SEvalZero if((arg) == 0) \ 827*10465441SEvalZero { \ 828*10465441SEvalZero while(1) \ 829*10465441SEvalZero { \ 830*10465441SEvalZero rt_kprintf("have a assert failure\n"); \ 831*10465441SEvalZero } \ 832*10465441SEvalZero } 833*10465441SEvalZero #else 834*10465441SEvalZero #define ASSERT(arg) \ 835*10465441SEvalZero do \ 836*10465441SEvalZero { \ 837*10465441SEvalZero }while(0) 838*10465441SEvalZero #endif 839*10465441SEvalZero 840*10465441SEvalZero 841*10465441SEvalZero #define write_reg(reg,value) \ 842*10465441SEvalZero do \ 843*10465441SEvalZero { \ 844*10465441SEvalZero *(RP)(reg) = value; \ 845*10465441SEvalZero }while(0) 846*10465441SEvalZero 847*10465441SEvalZero #define read_reg(reg) (*(RP)reg) 848*10465441SEvalZero 849*10465441SEvalZero 850*10465441SEvalZero struct rt_hw_register 851*10465441SEvalZero { 852*10465441SEvalZero rt_uint32_t r0; 853*10465441SEvalZero rt_uint32_t r1; 854*10465441SEvalZero rt_uint32_t r2; 855*10465441SEvalZero rt_uint32_t r3; 856*10465441SEvalZero rt_uint32_t r4; 857*10465441SEvalZero rt_uint32_t r5; 858*10465441SEvalZero rt_uint32_t r6; 859*10465441SEvalZero rt_uint32_t r7; 860*10465441SEvalZero rt_uint32_t r8; 861*10465441SEvalZero rt_uint32_t r9; 862*10465441SEvalZero rt_uint32_t r10; 863*10465441SEvalZero rt_uint32_t fp; 864*10465441SEvalZero rt_uint32_t ip; 865*10465441SEvalZero rt_uint32_t sp; 866*10465441SEvalZero rt_uint32_t lr; 867*10465441SEvalZero rt_uint32_t pc; 868*10465441SEvalZero rt_uint32_t cpsr; 869*10465441SEvalZero rt_uint32_t ORIG_r0; 870*10465441SEvalZero }; 871*10465441SEvalZero 872*10465441SEvalZero 873*10465441SEvalZero /*@}*/ 874*10465441SEvalZero 875*10465441SEvalZero #endif 876