📄 jz4740.h
字号:
// Register definition#define WDT_TCSR_PRESCALE_BIT 3#define WDT_TCSR_PRESCALE_MASK (0x7 << WDT_TCSR_PRESCALE_BIT) #define WDT_TCSR_PRESCALE1 (0x0 << WDT_TCSR_PRESCALE_BIT) #define WDT_TCSR_PRESCALE4 (0x1 << WDT_TCSR_PRESCALE_BIT) #define WDT_TCSR_PRESCALE16 (0x2 << WDT_TCSR_PRESCALE_BIT) #define WDT_TCSR_PRESCALE64 (0x3 << WDT_TCSR_PRESCALE_BIT) #define WDT_TCSR_PRESCALE256 (0x4 << WDT_TCSR_PRESCALE_BIT) #define WDT_TCSR_PRESCALE1024 (0x5 << WDT_TCSR_PRESCALE_BIT)#define WDT_TCSR_EXT_EN (1 << 2)#define WDT_TCSR_RTC_EN (1 << 1)#define WDT_TCSR_PCK_EN (1 << 0)#define WDT_TCER_TCEN (1 << 0)/************************************************************************* * DMAC (DMA Controller) *************************************************************************/#define MAX_DMA_NUM 6 /* max 6 channels */#define DMAC_DSAR(n) (DMAC_BASE + (0x00 + (n) * 0x20)) /* DMA source address */#define DMAC_DTAR(n) (DMAC_BASE + (0x04 + (n) * 0x20)) /* DMA target address */#define DMAC_DTCR(n) (DMAC_BASE + (0x08 + (n) * 0x20)) /* DMA transfer count */#define DMAC_DRSR(n) (DMAC_BASE + (0x0c + (n) * 0x20)) /* DMA request source */#define DMAC_DCCSR(n) (DMAC_BASE + (0x10 + (n) * 0x20)) /* DMA control/status */#define DMAC_DCMD(n) (DMAC_BASE + (0x14 + (n) * 0x20)) /* DMA command */#define DMAC_DDA(n) (DMAC_BASE + (0x18 + (n) * 0x20)) /* DMA descriptor address */#define DMAC_DMACR (DMAC_BASE + 0x0300) /* DMA control register */#define DMAC_DMAIPR (DMAC_BASE + 0x0304) /* DMA interrupt pending */#define DMAC_DMADBR (DMAC_BASE + 0x0308) /* DMA doorbell */#define DMAC_DMADBSR (DMAC_BASE + 0x030C) /* DMA doorbell set */// channel 0#define DMAC_DSAR0 DMAC_DSAR(0)#define DMAC_DTAR0 DMAC_DTAR(0)#define DMAC_DTCR0 DMAC_DTCR(0)#define DMAC_DRSR0 DMAC_DRSR(0)#define DMAC_DCCSR0 DMAC_DCCSR(0)#define DMAC_DCMD0 DMAC_DCMD(0)#define DMAC_DDA0 DMAC_DDA(0)// channel 1#define DMAC_DSAR1 DMAC_DSAR(1)#define DMAC_DTAR1 DMAC_DTAR(1)#define DMAC_DTCR1 DMAC_DTCR(1)#define DMAC_DRSR1 DMAC_DRSR(1)#define DMAC_DCCSR1 DMAC_DCCSR(1)#define DMAC_DCMD1 DMAC_DCMD(1)#define DMAC_DDA1 DMAC_DDA(1)// channel 2#define DMAC_DSAR2 DMAC_DSAR(2)#define DMAC_DTAR2 DMAC_DTAR(2)#define DMAC_DTCR2 DMAC_DTCR(2)#define DMAC_DRSR2 DMAC_DRSR(2)#define DMAC_DCCSR2 DMAC_DCCSR(2)#define DMAC_DCMD2 DMAC_DCMD(2)#define DMAC_DDA2 DMAC_DDA(2)// channel 3#define DMAC_DSAR3 DMAC_DSAR(3)#define DMAC_DTAR3 DMAC_DTAR(3)#define DMAC_DTCR3 DMAC_DTCR(3)#define DMAC_DRSR3 DMAC_DRSR(3)#define DMAC_DCCSR3 DMAC_DCCSR(3)#define DMAC_DCMD3 DMAC_DCMD(3)#define DMAC_DDA3 DMAC_DDA(3)// channel 4#define DMAC_DSAR4 DMAC_DSAR(4)#define DMAC_DTAR4 DMAC_DTAR(4)#define DMAC_DTCR4 DMAC_DTCR(4)#define DMAC_DRSR4 DMAC_DRSR(4)#define DMAC_DCCSR4 DMAC_DCCSR(4)#define DMAC_DCMD4 DMAC_DCMD(4)#define DMAC_DDA4 DMAC_DDA(4)// channel 5#define DMAC_DSAR5 DMAC_DSAR(5)#define DMAC_DTAR5 DMAC_DTAR(5)#define DMAC_DTCR5 DMAC_DTCR(5)#define DMAC_DRSR5 DMAC_DRSR(5)#define DMAC_DCCSR5 DMAC_DCCSR(5)#define DMAC_DCMD5 DMAC_DCMD(5)#define DMAC_DDA5 DMAC_DDA(5)#define REG_DMAC_DSAR(n) REG32(DMAC_DSAR((n)))#define REG_DMAC_DTAR(n) REG32(DMAC_DTAR((n)))#define REG_DMAC_DTCR(n) REG32(DMAC_DTCR((n)))#define REG_DMAC_DRSR(n) REG32(DMAC_DRSR((n)))#define REG_DMAC_DCCSR(n) REG32(DMAC_DCCSR((n)))#define REG_DMAC_DCMD(n) REG32(DMAC_DCMD((n)))#define REG_DMAC_DDA(n) REG32(DMAC_DDA((n)))#define REG_DMAC_DMACR REG32(DMAC_DMACR)#define REG_DMAC_DMAIPR REG32(DMAC_DMAIPR)#define REG_DMAC_DMADBR REG32(DMAC_DMADBR)#define REG_DMAC_DMADBSR REG32(DMAC_DMADBSR)// DMA request source register#define DMAC_DRSR_RS_BIT 0#define DMAC_DRSR_RS_MASK (0x1f << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_AUTO (8 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_UART0OUT (20 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_UART0IN (21 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_SSIOUT (22 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_SSIIN (23 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_AICOUT (24 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_AICIN (25 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_MSCOUT (26 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_MSCIN (27 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_TCU (28 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_SADC (29 << DMAC_DRSR_RS_BIT) #define DMAC_DRSR_RS_SLCD (30 << DMAC_DRSR_RS_BIT)// DMA channel control/status register#define DMAC_DCCSR_NDES (1 << 31) /* descriptor (0) or not (1) ? */#define DMAC_DCCSR_CDOA_BIT 16 /* copy of DMA offset address */#define DMAC_DCCSR_CDOA_MASK (0xff << DMAC_DCCSR_CDOA_BIT)#define DMAC_DCCSR_INV (1 << 6) /* descriptor invalid */#define DMAC_DCCSR_AR (1 << 4) /* address error */#define DMAC_DCCSR_TT (1 << 3) /* transfer terminated */#define DMAC_DCCSR_HLT (1 << 2) /* DMA halted */#define DMAC_DCCSR_CT (1 << 1) /* count terminated */#define DMAC_DCCSR_EN (1 << 0) /* channel enable bit */// DMA channel command register #define DMAC_DCMD_SAI (1 << 23) /* source address increment */#define DMAC_DCMD_DAI (1 << 22) /* dest address increment */#define DMAC_DCMD_RDIL_BIT 16 /* request detection interval length */#define DMAC_DCMD_RDIL_MASK (0x0f << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_IGN (0 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_2 (1 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_4 (2 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_8 (3 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_12 (4 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_16 (5 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_20 (6 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_24 (7 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_28 (8 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_32 (9 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_48 (10 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_60 (11 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_64 (12 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_124 (13 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_128 (14 << DMAC_DCMD_RDIL_BIT) #define DMAC_DCMD_RDIL_200 (15 << DMAC_DCMD_RDIL_BIT)#define DMAC_DCMD_SWDH_BIT 14 /* source port width */#define DMAC_DCMD_SWDH_MASK (0x03 << DMAC_DCMD_SWDH_BIT) #define DMAC_DCMD_SWDH_32 (0 << DMAC_DCMD_SWDH_BIT) #define DMAC_DCMD_SWDH_8 (1 << DMAC_DCMD_SWDH_BIT) #define DMAC_DCMD_SWDH_16 (2 << DMAC_DCMD_SWDH_BIT)#define DMAC_DCMD_DWDH_BIT 12 /* dest port width */#define DMAC_DCMD_DWDH_MASK (0x03 << DMAC_DCMD_DWDH_BIT) #define DMAC_DCMD_DWDH_32 (0 << DMAC_DCMD_DWDH_BIT) #define DMAC_DCMD_DWDH_8 (1 << DMAC_DCMD_DWDH_BIT) #define DMAC_DCMD_DWDH_16 (2 << DMAC_DCMD_DWDH_BIT)#define DMAC_DCMD_DS_BIT 8 /* transfer data size of a data unit */#define DMAC_DCMD_DS_MASK (0x07 << DMAC_DCMD_DS_BIT) #define DMAC_DCMD_DS_32BIT (0 << DMAC_DCMD_DS_BIT) #define DMAC_DCMD_DS_8BIT (1 << DMAC_DCMD_DS_BIT) #define DMAC_DCMD_DS_16BIT (2 << DMAC_DCMD_DS_BIT) #define DMAC_DCMD_DS_16BYTE (3 << DMAC_DCMD_DS_BIT) #define DMAC_DCMD_DS_32BYTE (4 << DMAC_DCMD_DS_BIT)#define DMAC_DCMD_TM (1 << 7) /* transfer mode: 0-single 1-block */#define DMAC_DCMD_DES_V (1 << 4) /* descriptor valid flag */#define DMAC_DCMD_DES_VM (1 << 3) /* descriptor valid mask: 1:support V-bit */#define DMAC_DCMD_DES_VIE (1 << 2) /* DMA valid error interrupt enable */#define DMAC_DCMD_TIE (1 << 1) /* DMA transfer interrupt enable */#define DMAC_DCMD_LINK (1 << 0) /* descriptor link enable */// DMA descriptor address register#define DMAC_DDA_BASE_BIT 12 /* descriptor base address */#define DMAC_DDA_BASE_MASK (0x0fffff << DMAC_DDA_BASE_BIT)#define DMAC_DDA_OFFSET_BIT 4 /* descriptor offset address */#define DMAC_DDA_OFFSET_MASK (0x0ff << DMAC_DDA_OFFSET_BIT)// DMA control register#define DMAC_DMACR_PR_BIT 8 /* channel priority mode */#define DMAC_DMACR_PR_MASK (0x03 << DMAC_DMACR_PR_BIT) #define DMAC_DMACR_PR_012345 (0 << DMAC_DMACR_PR_BIT) #define DMAC_DMACR_PR_023145 (1 << DMAC_DMACR_PR_BIT) #define DMAC_DMACR_PR_201345 (2 << DMAC_DMACR_PR_BIT) #define DMAC_DMACR_PR_RR (3 << DMAC_DMACR_PR_BIT) /* round robin */#define DMAC_DMACR_HLT (1 << 3) /* DMA halt flag */#define DMAC_DMACR_AR (1 << 2) /* address error flag */#define DMAC_DMACR_DMAE (1 << 0) /* DMA enable bit */// DMA doorbell register#define DMAC_DMADBR_DB5 (1 << 5) /* doorbell for channel 5 */#define DMAC_DMADBR_DB4 (1 << 5) /* doorbell for channel 4 */#define DMAC_DMADBR_DB3 (1 << 5) /* doorbell for channel 3 */#define DMAC_DMADBR_DB2 (1 << 5) /* doorbell for channel 2 */#define DMAC_DMADBR_DB1 (1 << 5) /* doorbell for channel 1 */#define DMAC_DMADBR_DB0 (1 << 5) /* doorbell for channel 0 */// DMA doorbell set register#define DMAC_DMADBSR_DBS5 (1 << 5) /* enable doorbell for channel 5 */#define DMAC_DMADBSR_DBS4 (1 << 5) /* enable doorbell for channel 4 */#define DMAC_DMADBSR_DBS3 (1 << 5) /* enable doorbell for channel 3 */#define DMAC_DMADBSR_DBS2 (1 << 5) /* enable doorbell for channel 2 */#define DMAC_DMADBSR_DBS1 (1 << 5) /* enable doorbell for channel 1 */#define DMAC_DMADBSR_DBS0 (1 << 5) /* enable doorbell for channel 0 */// DMA interrupt pending register#define DMAC_DMAIPR_CIRQ5 (1 << 5) /* irq pending status for channel 5 */#define DMAC_DMAIPR_CIRQ4 (1 << 4) /* irq pending status for channel 4 */#define DMAC_DMAIPR_CIRQ3 (1 << 3) /* irq pending status for channel 3 */#define DMAC_DMAIPR_CIRQ2 (1 << 2) /* irq pending status for channel 2 */#define DMAC_DMAIPR_CIRQ1 (1 << 1) /* irq pending status for channel 1 */#define DMAC_DMAIPR_CIRQ0 (1 << 0) /* irq pending status for channel 0 *//************************************************************************* * GPIO (General-Purpose I/O Ports) *************************************************************************/#define MAX_GPIO_NUM 128//n = 0,1,2,3#define GPIO_PXPIN(n) (GPIO_BASE + (0x00 + (n)*0x100)) /* PIN Level Register */#define GPIO_PXDAT(n) (GPIO_BASE + (0x10 + (n)*0x100)) /* Port Data Register */#define GPIO_PXDATS(n) (GPIO_BASE + (0x14 + (n)*0x100)) /* Port Data Set Register */#define GPIO_PXDATC(n) (GPIO_BASE + (0x18 + (n)*0x100)) /* Port Data Clear Register */#define GPIO_PXIM(n) (GPIO_BASE + (0x20 + (n)*0x100)) /* Interrupt Mask Register */#define GPIO_PXIMS(n) (GPIO_BASE + (0x24 + (n)*0x100)) /* Interrupt Mask Set Reg */#define GPIO_PXIMC(n) (GPIO_BASE + (0x28 + (n)*0x100)) /* Interrupt Mask Clear Reg */#define GPIO_PXPE(n) (GPIO_BASE + (0x30 + (n)*0x100)) /* Pull Enable Register */#define GPIO_PXPES(n) (GPIO_BASE + (0x34 + (n)*0x100)) /* Pull Enable Set Reg. */#define GPIO_PXPEC(n) (GPIO_BASE + (0x38 + (n)*0x100)) /* Pull Enable Clear Reg. */#define GPIO_PXFUN(n) (GPIO_BASE + (0x40 + (n)*0x100)) /* Function Register */#define GPIO_PXFUNS(n) (GPIO_BASE + (0x44 + (n)*0x100)) /* Function Set Register */#define GPIO_PXFUNC(n) (GPIO_BASE + (0x48 + (n)*0x100)) /* Function Clear Register */#define GPIO_PXSEL(n) (GPIO_BASE + (0x50 + (n)*0x100)) /* Select Register */#define GPIO_PXSELS(n) (GPIO_BASE + (0x54 + (n)*0x100)) /* Select Set Register */#define GPIO_PXSELC(n) (GPIO_BASE + (0x58 + (n)*0x100)) /* Select Clear Register */#define GPIO_PXDIR(n) (GPIO_BASE + (0x60 + (n)*0x100)) /* Direction Register */#define GPIO_PXDIRS(n) (GPIO_BASE + (0x64 + (n)*0x100)) /* Direction Set Register */#define GPIO_PXDIRC(n) (GPIO_BASE + (0x68 + (n)*0x100)) /* Direction Clear Register */#define GPIO_PXTRG(n) (GPIO_BASE + (0x70 + (n)*0x100)) /* Trigger Register */#define GPIO_PXTRGS(n) (GPIO_BASE + (0x74 + (n)*0x100)) /* Trigger Set Register */#define GPIO_PXTRGC(n) (GPIO_BASE + (0x78 + (n)*0x100)) /* Trigger Set Register */#define GPIO_PXFLG(n) (GPIO_BASE + (0x80 + (n)*0x100)) /* Port Flag Register */#define REG_GPIO_PXPIN(n) REG32(GPIO_PXPIN((n))) /* PIN level */#define REG_GPIO_PXDAT(n) REG32(GPIO_PXDAT((n))) /* 1: interrupt pending */#define REG_GPIO_PXDATS(n) REG32(GPIO_PXDATS((n)))#define REG_GPIO_PXDATC(n) REG32(GPIO_PXDATC((n)))#define REG_GPIO_PXIM(n) REG32(GPIO_PXIM((n))) /* 1: mask pin interrupt */#define REG_GPIO_PXIMS(n) REG32(GPIO_PXIMS((n)))#define REG_GPIO_PXIMC(n) REG32(GPIO_PXIMC((n)))#define REG_GPIO_PXPE(n) REG32(GPIO_PXPE((n))) /* 1: disable pull up/down */#define REG_GPIO_PXPES(n) REG32(GPIO_PXPES((n)))#define REG_GPIO_PXPEC(n) REG32(GPIO_PXPEC((n)))#define REG_GPIO_PXFUN(n) REG32(GPIO_PXFUN((n))) /* 0:GPIO or intr, 1:FUNC */#define REG_GPIO_PXFUNS(n) REG32(GPIO_PXFUNS((n)))#define REG_GPIO_PXFUNC(n) REG32(GPIO_PXFUNC((n)))#define REG_GPIO_PXSEL(n) REG32(GPIO_PXSEL((n))) /* 0:GPIO/Fun0,1:intr/fun1*/#define REG_GPIO_PXSELS(n) REG32(GPIO_PXSELS((n)))#define REG_GPIO_PXSELC(n) REG32(GPIO_PXSELC((n)))#define REG_GPIO_PXDIR(n) REG32(GPIO_PXDIR((n))) /* 0:input/low-level-trig/falling-edge-trig, 1:output/high-level-trig/rising-edge-trig */#define REG_GPIO_PXDIRS(n) REG32(GPIO_PXDIRS((n)))#define REG_GPIO_PXDIRC(n) REG32(GPIO_PXDIRC((n)))#define REG_GPIO_PXTRG(n) REG32(GPIO_PXTRG((n))) /* 0:level-trigger, 1:edge-trigger */#define REG_GPIO_PXTRGS(n) REG32(GPIO_PXTRGS((n)))#define REG_GPIO_PXTRGC(n) REG32(GPIO_PXTRGC((n)))#define REG_GPIO_PXFLG(n) REG32(GPIO_PXFLG((n))) /* interrupt flag *//************************************************************************* * UART *************************************************************************/#define IRDA_BASE UART0_BASE#define UART_BASE UART0_BASE#define UART_OFF 0x1000/* Register Offset */#define OFF_RDR (0x00) /* R 8b H'xx */#define OFF_TDR (0x00) /* W 8b H'xx */#define OFF_DLLR (0x00) /* RW 8b H'00 */#define OFF_DLHR (0x04) /* RW 8b H'00 */#define OFF_IER (0x04) /* RW 8b H'00 */#define OFF_ISR (0x08) /* R 8b H'01 */#define OFF_FCR (0x08) /* W 8b H'00 */#define OFF_LCR (0x0C) /* RW 8b H'00 */#define OFF_MCR (0x10) /* RW 8b H'00 */#define OFF_LSR (0x14) /* R 8b H'00 */#define OFF_MSR (0x18) /* R 8b H'00 */#define OFF_SPR (0x1C) /* RW 8b H'00 */#define OFF_SIRCR (0x20) /* RW 8b H'00, UART0 */#define OFF_UMR (0x24) /* RW 8b H'00, UART M Register */#define OFF_UACR (0x28) /* RW 8b H'00, UART Add Cycle Register *//* Register Address */#define UART0_RDR (UART0_BASE + OFF_RDR)#define UART0_TDR (UART0_BASE + OFF_TDR)#define UART0_DLLR (UART0_BASE + OFF_DLLR)#define UART0_DLHR (UART0_BASE + OFF_DLHR)#define UART0_IER (UART0_BASE + OFF_IER)#define UART0_ISR (UART0_BASE + OFF_ISR)#define UART0_FCR (UART0_BASE + OFF_FCR)#define UART0_LCR (UART0_BASE + OFF_LCR)#define UART0_MCR (UART0_BASE + OFF_MCR)#define UART0_LSR (UART0_BASE + OFF_LSR)#define UART0_MSR (UART0_BASE + OFF_MSR)#define UART0_SPR (UART0_BASE + OFF_SPR)#define UART0_SIRCR (UART0_BASE + OFF_SIRCR)#define UART0_UMR (UART0_BASE + OFF_UMR)#define UART0_UACR (UART0_BASE + OFF_UACR)/* * Define macros for UART_IER * UART Interrupt Enable Register
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -