uart.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. #ifndef UART_PRINT_H__
  2. #define UART_PRINT_H__
  3. /* UART Register Offsets. */
  4. #define UART_DR 0x00 /* Data read or written from the interface. */
  5. #define UART_RSR 0x04 /* Receive status register (Read). */
  6. #define UART_FR 0x18 /* Flag register (Read only). */
  7. #define UART_ILPR 0x20 /* IrDA low power counter register. */
  8. #define UART_IBRD 0x24 /* Integer baud rate divisor register. */
  9. #define UART_FBRD 0x28 /* Fractional baud rate divisor register. */
  10. #define UART_LCRH 0x2c /* Line control register. */
  11. #define UART_CR 0x30 /* Control register. */
  12. #define UART_IFLS 0x34 /* Interrupt fifo level select. */
  13. #define UART_IMSC 0x38 /* Interrupt mask. */
  14. #define UART_RIS 0x3c /* Raw interrupt status. */
  15. #define UART_MIS 0x40 /* Masked interrupt status. */
  16. #define UART_ICR 0x44 /* Interrupt clear register. */
  17. #define UART_DMACR 0x48 /* DMA control register. */
  18. #define UART_DR_OE (1 << 11)
  19. #define UART_DR_BE (1 << 10)
  20. #define UART_DR_PE (1 << 9)
  21. #define UART_DR_FE (1 << 8)
  22. #define UART_RSR_OE 0x08
  23. #define UART_RSR_BE 0x04
  24. #define UART_RSR_PE 0x02
  25. #define UART_RSR_FE 0x01
  26. #define UART_FR_RI 0x100
  27. #define UART_FR_TXFE 0x080
  28. #define UART_FR_RXFF 0x040
  29. #define UART_FR_TXFF 0x020
  30. #define UART_FR_RXFE 0x010
  31. #define UART_FR_BUSY 0x008
  32. #define UART_FR_DCD 0x004
  33. #define UART_FR_DSR 0x002
  34. #define UART_FR_CTS 0x001
  35. #define UART_FR_TMSK (UART_FR_TXFF + UART_FR_BUSY)
  36. #define UART_CR_CTSEN 0x8000 /* CTS hardware flow control */
  37. #define UART_CR_RTSEN 0x4000 /* RTS hardware flow control */
  38. #define UART_CR_OUT2 0x2000 /* OUT2 */
  39. #define UART_CR_OUT1 0x1000 /* OUT1 */
  40. #define UART_CR_RTS 0x0800 /* RTS */
  41. #define UART_CR_DTR 0x0400 /* DTR */
  42. #define UART_CR_RXE 0x0200 /* receive enable */
  43. #define UART_CR_TXE 0x0100 /* transmit enable */
  44. #define UART_CR_LBE 0x0080 /* loopback enable */
  45. #define UART_CR_RTIE 0x0040
  46. #define UART_CR_TIE 0x0020
  47. #define UART_CR_RIE 0x0010
  48. #define UART_CR_MSIE 0x0008
  49. #define UART_CR_IIRLP 0x0004 /* SIR low power mode */
  50. #define UART_CR_SIREN 0x0002 /* SIR enable */
  51. #define UART_CR_UARTEN 0x0001 /* UART enable */
  52. #define UART_LCRH_SPS 0x80
  53. #define UART_LCRH_WLEN_8 0x60
  54. #define UART_LCRH_WLEN_7 0x40
  55. #define UART_LCRH_WLEN_6 0x20
  56. #define UART_LCRH_WLEN_5 0x00
  57. #define UART_LCRH_FEN 0x10
  58. #define UART_LCRH_STP2 0x08
  59. #define UART_LCRH_EPS 0x04
  60. #define UART_LCRH_PEN 0x02
  61. #define UART_LCRH_BRK 0x01
  62. #define UART_IFLS_RX1_8 (0 << 3)
  63. #define UART_IFLS_RX2_8 (1 << 3)
  64. #define UART_IFLS_RX4_8 (2 << 3)
  65. #define UART_IFLS_RX6_8 (3 << 3)
  66. #define UART_IFLS_RX7_8 (4 << 3)
  67. #define UART_IFLS_TX1_8 (0 << 0)
  68. #define UART_IFLS_TX2_8 (1 << 0)
  69. #define UART_IFLS_TX4_8 (2 << 0)
  70. #define UART_IFLS_TX6_8 (3 << 0)
  71. #define UART_IFLS_TX7_8 (4 << 0)
  72. #define UART_OEIM (1 << 10) /* overrun error interrupt mask */
  73. #define UART_BEIM (1 << 9) /* break error interrupt mask */
  74. #define UART_PEIM (1 << 8) /* parity error interrupt mask */
  75. #define UART_FEIM (1 << 7) /* framing error interrupt mask */
  76. #define UART_RTIM (1 << 6) /* receive timeout interrupt mask */
  77. #define UART_TXIM (1 << 5) /* transmit interrupt mask */
  78. #define UART_RXIM (1 << 4) /* receive interrupt mask */
  79. #define UART_DSRMIM (1 << 3) /* DSR interrupt mask */
  80. #define UART_DCDMIM (1 << 2) /* DCD interrupt mask */
  81. #define UART_CTSMIM (1 << 1) /* CTS interrupt mask */
  82. #define UART_RIMIM (1 << 0) /* RI interrupt mask */
  83. #define UART_OEIS (1 << 10) /* overrun error interrupt status */
  84. #define UART_BEIS (1 << 9) /* break error interrupt status */
  85. #define UART_PEIS (1 << 8) /* parity error interrupt status */
  86. #define UART_FEIS (1 << 7) /* framing error interrupt status */
  87. #define UART_RTIS (1 << 6) /* receive timeout interrupt status */
  88. #define UART_TXIS (1 << 5) /* transmit interrupt status */
  89. #define UART_RXIS (1 << 4) /* receive interrupt status */
  90. #define UART_DSRMIS (1 << 3) /* DSR interrupt status */
  91. #define UART_DCDMIS (1 << 2) /* DCD interrupt status */
  92. #define UART_CTSMIS (1 << 1) /* CTS interrupt status */
  93. #define UART_RIMIS (1 << 0) /* RI interrupt status */
  94. #define UART485_RBR_THR_DLL 0x000
  95. #define UART485_DLH_IER 0x004
  96. #define UART485_IIR_FCR 0x008
  97. #define UART485_RBR 0x000
  98. #define UART485_THR 0x000
  99. #define UART485_DLL 0x000
  100. #define UART485_DLH 0x004
  101. #define UART485_IER 0x004
  102. #define UART485_IIR 0x008
  103. #define UART485_FCR 0x008
  104. #define UART485_LCR 0x00C
  105. #define UART485_MCR 0x010
  106. #define UART485_LSR 0x014
  107. #define UART485_MSR 0x018
  108. #define UART485_SCR 0x01C
  109. #define UART485_LPDLL 0x020
  110. #define UART485_LPDLH 0x024
  111. #define UART485_RESERVED 0x028
  112. #define UART485_SRBR 0x030
  113. #define UART485_STHR 0x06C
  114. #define UART485_FAR 0x070
  115. #define UART485_TFR 0x074
  116. #define UART485_RFW 0x078
  117. #define UART485_USR 0x07C
  118. #define UART485_TFL 0x080
  119. #define UART485_RFL 0x084
  120. #define UART485_SRR 0x088
  121. #define UART485_SRTS 0x08C
  122. #define UART485_SBCR 0x090
  123. #define UART485_SDMAM 0x094
  124. #define UART485_SFE 0x098
  125. #define UART485_SRT 0x09C
  126. #define UART485_STET 0x0A0
  127. #define UART485_HTX 0x0A4
  128. #define UART485_DMASA 0x0A8
  129. #define UART485_TCR 0x0AC
  130. #define UART485_DE_EN 0x0B0
  131. #define UART485_RE_EN 0x0B4
  132. #define UART485_DET 0x0B8
  133. #define UART485_TAT 0x0BC
  134. #define UART485_DLF 0x0C0
  135. #define UART485_RAR 0x0C4
  136. #define UART485_TAR 0x0C8
  137. #define UART485_LCR_EXT 0x0CC
  138. #define UART485_CPR 0x0F4
  139. #define UART485_UCV 0x0F8
  140. #define UART485_CTR 0x0FC
  141. #define UART485_LSR_RFE (1 << 7)
  142. #define UART485_LSR_TEMT (1 << 6)
  143. #define UART485_LSR_THRE (1 << 5)
  144. #define UART485_LSR_BI (1 << 4)
  145. #define UART485_LSR_FE (1 << 3)
  146. #define UART485_LSR_PE (1 << 2)
  147. #define UART485_LSR_OE (1 << 1)
  148. #define UART485_LSR_DR (1 << 0)
  149. #define UART485_IIR_IID_MASK (0xf << 0)
  150. #define UART485_IIR_IID_MODEM_STATUS 0x0
  151. #define UART485_IIR_IID_NO_INT_PENDING 0x1
  152. #define UART485_IIR_IID_THR_EMPTY 0x2
  153. #define UART485_IIR_IID_REV_DATA_AVAIL 0x4
  154. #define UART485_IIR_IID_REV_LINE_STATUS 0x6
  155. #define UART485_IIR_IID_BUSY_DETECT 0x7
  156. #define UART485_IIR_IID_CHAR_TIMEOUT 0xc
  157. #define CSIZE 0x0003
  158. #define CS8 0x0000
  159. #define CS6 0x0001
  160. #define CS7 0x0002
  161. #define CS5 0x0003
  162. #define CSTOPB 0x0004
  163. #define PARENB 0x0010
  164. #define PARODD 0x0020
  165. #define CMSPAR 0x0100 /* mark or space (stick) parity */
  166. #define CRTSCTS 0x0200 /* flow control */
  167. typedef enum {
  168. UART_ID0 = 0,
  169. UART_ID1,
  170. UART_ID2,
  171. UART_ID3,
  172. UART_NUM,
  173. } eUartID;
  174. void InitUart(unsigned int baud);
  175. void SendUartString(char * buf);
  176. void SendUartChar(char ch);
  177. void PrintVariableValueHex(char * variable, unsigned int value);
  178. void SendUartWord(unsigned int data);
  179. void IntToStr(unsigned int value, char *str);
  180. void uart_init(int id, unsigned int baud, unsigned int flags);
  181. void updateFromUart(int id);
  182. #endif