reg2410.h
上传用户:wealth48
上传日期:2022-06-24
资源大小:1701k
文件大小:9k
源码类别:

uCOS

开发平台:

C/C++

  1. /***************************************************************************
  2. Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.
  3. by threewter 2004.4.26
  4. ***************************************************************************/
  5. /***************************************************************************
  6.     #说明: s3c2410 寄存器定义
  7. ----------------------------------  Bug  --------------------------------------
  8. ----------------------------------  TODO list  --------------------------------------
  9. ----------------------------------修正--------------------------------------
  10. 2004-4-26 创建
  11. ***************************************************************************/
  12. #ifndef __REG2410_H__
  13. #define __REG2410_H__
  14. #include "../inc/macro.h"
  15. #include "gpio.h"
  16. #include "cpu.h"
  17. #define SDRAM_BASE 0x30000000
  18. #define SDRAM_SIZE (64*SIZE_1MB)
  19. //串口地址定义
  20. #define UART_CTL_BASE 0x50000000
  21. #define UART0_CTL_BASE UART_CTL_BASE
  22. #define UART1_CTL_BASE UART_CTL_BASE + 0x4000
  23. #define UART2_CTL_BASE UART_CTL_BASE + 0x8000
  24. #define bUART(x, Nb) __REG(UART_CTL_BASE + (x)*0x4000 + (Nb))
  25. /* Offset */
  26. #define oULCON 0x00 /* R/W, UART line control register */
  27. #define oUCON 0x04 /* R/W, UART control register */
  28. #define oUFCON 0x08 /* R/W, UART FIFO control register */
  29. #define oUMCON 0x0C /* R/W, UART modem control register */
  30. #define oUTRSTAT 0x10 /* R  , UART Tx/Rx status register */
  31. #define oUERSTAT 0x14 /* R  , UART Rx error status register */
  32. #define oUFSTAT 0x18 /* R  , UART FIFO status register */
  33. #define oUMSTAT 0x1C /* R  , UART Modem status register */
  34. #define oUTXHL 0x20 /*   W, UART transmit(little-end) buffer */
  35. #define oUTXHB 0x23 /*   W, UART transmit(big-end) buffer */
  36. #define oURXHL 0x24 /* R  , UART receive(little-end) buffer */
  37. #define oURXHB 0x27 /* R  , UART receive(big-end) buffer */
  38. #define oUBRDIV 0x28 /* R/W, Baud rate divisor register */
  39. //时钟
  40. #define CLK_CTL_BASE 0x4C000000
  41. #define bCLKCTL(Nb) __REG(CLK_CTL_BASE + (Nb))
  42. /* Offset */
  43. #define oLOCKTIME 0x00 /* R/W, PLL lock time count register */
  44. #define oMPLLCON 0x04 /* R/W, MPLL configuration register */
  45. #define oUPLLCON 0x08 /* R/W, UPLL configuration register */
  46. #define oCLKCON 0x0C /* R/W, Clock generator control reg. */
  47. #define oCLKSLOW 0x10 /* R/W, Slow clock control register */
  48. #define oCLKDIVN 0x14 /* R/W, Clock divider control */
  49. /* Registers */
  50. #define rLOCKTIME bCLKCTL(oLOCKTIME)
  51. #define rMPLLCON bCLKCTL(oMPLLCON)
  52. #define rUPLLCON bCLKCTL(oUPLLCON)
  53. #define rCLKCON bCLKCTL(oCLKCON)
  54. #define rCLKSLOW bCLKCTL(oCLKSLOW)
  55. #define rCLKDIVN bCLKCTL(oCLKDIVN)
  56. /* Fields */
  57. #define fPLL_MDIV Fld(8,12)
  58. #define fPLL_PDIV Fld(6,4)
  59. #define fPLL_SDIV Fld(2,0)
  60. /* bits */
  61. #define CLKCON_SPI (1<<18)
  62. #define CLKCON_IIS (1<<17)
  63. #define CLKCON_IIC (1<<16)
  64. #define CLKCON_ADC (1<<15)
  65. #define CLKCON_RTC (1<<14)
  66. #define CLKCON_GPIO (1<<13)
  67. #define CLKCON_UART2 (1<<12)
  68. #define CLKCON_UART1 (1<<11)
  69. #define CLKCON_UART0 (1<<10)
  70. #define CLKCON_SDI (1<<9)
  71. #define CLKCON_PWM (1<<8)
  72. #define CLKCON_USBD (1<<7)
  73. #define CLKCON_USBH (1<<6)
  74. #define CLKCON_LCDC (1<<5)
  75. #define CLKCON_NAND (1<<4)
  76. #define CLKCON_POWEROFF (1<<3)
  77. #define CLKCON_IDLE (1<<2)
  78. // PWM Timer
  79. #define TIMER_BASE 0x51000000
  80. #define rTCFG0 __REG(TIMER_BASE) //Timer 0 configuration
  81. #define rTCFG1 __REG(TIMER_BASE+0x4) //Timer 1 configuration
  82. #define rTCON __REG(TIMER_BASE+0x8) //Timer control
  83. #define rTCNTB0 __REG(TIMER_BASE+0xc) //Timer count buffer 0
  84. #define rTCMPB0 __REG(TIMER_BASE+0x10) //Timer compare buffer 0
  85. #define rTCNTO0 __REG(TIMER_BASE+0x14) //Timer count observation 0
  86. #define rTCNTB1 __REG(TIMER_BASE+0x18) //Timer count buffer 1
  87. #define rTCMPB1 __REG(TIMER_BASE+0x1c) //Timer compare buffer 1
  88. #define rTCNTO1 __REG(TIMER_BASE+0x20) //Timer count observation 1
  89. #define rTCNTB2 __REG(TIMER_BASE+0x24) //Timer count buffer 2
  90. #define rTCMPB2 __REG(TIMER_BASE+0x28) //Timer compare buffer 2
  91. #define rTCNTO2 __REG(TIMER_BASE+0x2c) //Timer count observation 2
  92. #define rTCNTB3 __REG(TIMER_BASE+0x30) //Timer count buffer 3
  93. #define rTCMPB3 __REG(TIMER_BASE+0x34) //Timer compare buffer 3
  94. #define rTCNTO3 __REG(TIMER_BASE+0x38) //Timer count observation 3
  95. #define rTCNTB4 __REG(TIMER_BASE+0x3c) //Timer count buffer 4
  96. #define rTCNTO4 __REG(TIMER_BASE+0x40) //Timer count observation 4
  97. #define TCON_4_AUTO (1 << 22) /* auto reload on/off for Timer 4 */
  98. #define TCON_4_UPDATE (1 << 21) /* manual Update TCNTB4 */
  99. #define TCON_4_ONOFF (1 << 20) /* 0: Stop, 1: start Timer 4 */
  100. #define TCON_3_AUTO     (1 << 19)       /* auto reload on/off for Timer 3 */
  101. #define TCON_3_INVERT   (1 << 18)       /* 1: Inverter on for TOUT3 */
  102. #define TCON_3_MAN      (1 << 17)       /* manual Update TCNTB3,TCMPB3 */
  103. #define TCON_3_ONOFF    (1 << 16)       /* 0: Stop, 1: start Timer 3 */
  104. #define TCON_2_AUTO     (1 << 15)       /* auto reload on/off for Timer 3 */
  105. #define TCON_2_INVERT   (1 << 14)       /* 1: Inverter on for TOUT3 */
  106. #define TCON_2_MAN      (1 << 13)       /* manual Update TCNTB3,TCMPB3 */
  107. #define TCON_2_ONOFF    (1 << 12)       /* 0: Stop, 1: start Timer 3 */
  108. #define TCON_1_AUTO     (1 << 11)       /* auto reload on/off for Timer 3 */
  109. #define TCON_1_INVERT   (1 << 10)       /* 1: Inverter on for TOUT3 */
  110. #define TCON_1_MAN      (1 << 9)       /* manual Update TCNTB3,TCMPB3 */
  111. #define TCON_1_ONOFF    (1 << 8)       /* 0: Stop, 1: start Timer 3 */
  112. #define TCON_0_AUTO     (1 << 3)       /* auto reload on/off for Timer 3 */
  113. #define TCON_0_INVERT   (1 << 2)       /* 1: Inverter on for TOUT3 */
  114. #define TCON_0_MAN      (1 << 1)       /* manual Update TCNTB3,TCMPB3 */
  115. #define TCON_0_ONOFF    (1 << 0)       /* 0: Stop, 1: start Timer 3 */
  116. // WATCH DOG TIMER
  117. #define WATCHDOG_BASE 0x53000000
  118. #define rWTCON __REG(WATCHDOG_BASE) //Watch-dog timer mode
  119. #define rWTDAT __REG(WATCHDOG_BASE+4) //Watch-dog timer data
  120. #define rWTCNT __REG(WATCHDOG_BASE+8) //Eatch-dog timer count
  121. // INTERRUPT
  122. #define INTERRUPT_BASE 0x4a000000
  123. #define rSRCPND __REG(INTERRUPT_BASE) //Interrupt request status
  124. #define rINTMOD __REG(INTERRUPT_BASE+0x4) //Interrupt mode control
  125. #define rINTMSK __REG(INTERRUPT_BASE+0x8) //Interrupt mask control
  126. #define rPRIORITY __REG(INTERRUPT_BASE+0xc) //IRQ priority control
  127. #define rINTPND __REG(INTERRUPT_BASE+0x10) //Interrupt request status
  128. #define rINTOFFSET __REG(INTERRUPT_BASE+0x14) //Interruot request source offset
  129. #define rSUBSRCPND __REG(INTERRUPT_BASE+0x18) //Sub source pending
  130. #define rINTSUBMSK __REG(INTERRUPT_BASE+0x1c) //Interrupt sub mask
  131. //LCD
  132. #define bLCD_CTL(Nb) __REG(0x4d000000 + (Nb))
  133. #define rLCDCON1 bLCD_CTL(0x00)
  134. #define rLCDCON2 bLCD_CTL(0x04)
  135. #define rLCDCON3 bLCD_CTL(0x08)
  136. #define rLCDCON4 bLCD_CTL(0x0c)
  137. #define rLCDCON5 bLCD_CTL(0x10)
  138. #define rLCDADDR1 bLCD_CTL(0x14)
  139. #define rLCDADDR2 bLCD_CTL(0x18)
  140. #define rLCDADDR3 bLCD_CTL(0x1c)
  141. #define rREDLUT bLCD_CTL(0x20)
  142. #define rGREENLUT bLCD_CTL(0x24)
  143. #define rBLUELUT bLCD_CTL(0x28)
  144. #define rDITHMODE bLCD_CTL(0x4c)
  145. #define rTPAL bLCD_CTL(0x50)
  146. #define rLCDINTPND bLCD_CTL(0x54)
  147. #define rLCDSRCPND bLCD_CTL(0x58)
  148. #define rLCDINTMSK bLCD_CTL(0x5c)
  149. #define rLCDLPCSEL bLCD_CTL(0x60)
  150. //nand flash
  151. #define bNAND_CTL(Nb) __REG(0x4e000000 + (Nb))
  152. #define rNFCONF (*(volatile unsigned *)0x4e000000)      //NAND Flash configuration
  153. #define rNFCMD (*(volatile U8 *)0x4e000004)            //NADD Flash command
  154. #define rNFADDR (*(volatile U8 *)0x4e000008)            //NAND Flash address
  155. #define rNFDATA (*(volatile U8 *)0x4e00000c)            //NAND Flash data
  156. #define rNFSTAT (*(volatile unsigned *)0x4e000010)      //NAND Flash operation status
  157. #define rNFECC (*(volatile unsigned *)0x4e000014)      //NAND Flash ECC
  158. #define rNFECC0 (*(volatile U8  *)0x4e000014)
  159. #define rNFECC1 (*(volatile U8  *)0x4e000015)
  160. #define rNFECC2 (*(volatile U8  *)0x4e000016)
  161. /****************************************************************
  162. iic register
  163. ****************************************************************/
  164. #define bIIC(Nb) __REG(0x54000000 + (Nb))
  165. #define rIICCON bIIC(0x00) //IIC control
  166. #define rIICSTAT bIIC(0x04) //IIC status
  167. #define rIICADD bIIC(0x08) //IIC address
  168. #define rIICDS bIIC(0x0c) //IIC data shift
  169. /****************************************************************
  170. spi register
  171. ****************************************************************/
  172. #define bSPI(Nb) __REG(0x59000000 + (Nb))
  173. #define rSPCON0 bSPI(0x00)
  174. #define rSPSTA0 bSPI(0x04)
  175. #define rSPPIN0 bSPI(0x08)
  176. #define rSPPRE0 bSPI(0x0c)
  177. #define rSPTDAT0 bSPI(0x10)
  178. #define rSPRDAT0 bSPI(0x14)
  179. #define rSPCON1 bSPI(0x20 + 0x00)
  180. #define rSPSTA1 bSPI(0x20 + 0x04)
  181. #define rSPPIN1 bSPI(0x20 + 0x08)
  182. #define rSPPRE1 bSPI(0x20 + 0x0c)
  183. #define rSPTDAT1 bSPI(0x20 + 0x10)
  184. #define rSPRDAT1 bSPI(0x20 + 0x14)
  185. #endif //#ifndef __REG2410_H__