m68901Sio.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:9k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* m68901Sio.h - Motorola MC68901 MFP (Multi-Function Peripheral) */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,25may96,sub  wrote from m68901.h
  7. */
  8. #ifndef __INCm68901Sioh
  9. #define __INCm68901Sioh
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. /*
  14.  * The macro MFP_REG_ADDR_INTERVAL must be defined
  15.  * when including this header.
  16.  */
  17. #ifdef _ASMLANGUAGE
  18. #define CAST
  19. #else /* _ASMLANGUAGE */
  20. #define CAST (char *)
  21. #include "sioLib.h"
  22. typedef struct
  23.     {
  24.     SIO_DRV_FUNCS  * pDrvFuncs; /* Driver functions */
  25. /* CallBacks */
  26.     STATUS   (*getTxChar)();
  27.     STATUS   (*putRcvChar)();
  28.     void *   getTxArg;
  29.     void *   putRcvArg;
  30.     
  31.     uint32_t baudFreq; /* reference clock, in Hz                       */
  32.     uint32_t baudRate; /* Baud rate                                    */
  33.     uint16_t baudMin; /* minimum baud rate                            */
  34.     uint16_t baudMax; /* maximum baud rate                            */
  35.     char *ucr; /* USART control register                       */
  36.     char *rsr; /* receiver status register                     */
  37.     char *tsr; /* transmit status register                     */
  38.     char *udr; /* USART data register                          */
  39.     char *imra;
  40.     char *imrb;
  41.     char *iera;
  42.     char *ierb;
  43.     char *baud1; /* baud rate 1 generator data register */
  44.     char *baud2; /* baud rate 2 generator data register */
  45. /* Mode configuration info */
  46.     uint_t  mode;
  47.     char    intVec;
  48.     char    intType;
  49.     uint_t  channel;
  50.     } M68901_CHAN;
  51. #endif /* _ASMLANGUAGE */
  52. #define MFP_ADRS(base,reg)   (CAST (base+(reg*MFP_REG_ADDR_INTERVAL)))
  53. /* register definitions */
  54. #define MFP_GPIP(base) MFP_ADRS(base,0x00) /* Data I/O port           */
  55. #define MFP_AER(base) MFP_ADRS(base,0x01) /* active edge register    */
  56. #define MFP_DDR(base) MFP_ADRS(base,0x02) /* data direction reg.     */
  57. #define MFP_IERA(base) MFP_ADRS(base,0x03) /* interrupt enable reg A  */
  58. #define MFP_IERB(base) MFP_ADRS(base,0x04) /* interrupt enable reg B  */
  59. #define MFP_IPRA(base) MFP_ADRS(base,0x05) /* int. pending reg A      */
  60. #define MFP_IPRB(base) MFP_ADRS(base,0x06) /* int. pending reg B      */
  61. #define MFP_ISRA(base) MFP_ADRS(base,0x07) /* int. in-service reg A   */
  62. #define MFP_ISRB(base) MFP_ADRS(base,0x08) /* int. in-service reg B   */
  63. #define MFP_IMRA(base) MFP_ADRS(base,0x09) /* interrupt mask reg A    */
  64. #define MFP_IMRB(base) MFP_ADRS(base,0x0a) /* interrupt mask reg B    */
  65. #define MFP_VR(base) MFP_ADRS(base,0x0b) /* vector reg              */
  66. #define MFP_TACR(base)  MFP_ADRS(base,0x0c) /* timer A control reg     */
  67. #define MFP_TBCR(base)  MFP_ADRS(base,0x0d) /* timer B control reg     */
  68. #define MFP_TCDCR(base) MFP_ADRS(base,0x0e) /* timers C&D control reg  */
  69. #define MFP_TADR(base)  MFP_ADRS(base,0x0f) /* timer A data reg        */
  70. #define MFP_TBDR(base)  MFP_ADRS(base,0x10) /* timer B data reg        */
  71. #define MFP_TCDR(base)  MFP_ADRS(base,0x11) /* timer C data reg        */
  72. #define MFP_TDDR(base)  MFP_ADRS(base,0x12) /* timer D data reg        */
  73. #define MFP_SCR(base) MFP_ADRS(base,0x13) /* sync char reg           */
  74. #define MFP_UCR(base) MFP_ADRS(base,0x14) /* USART control reg       */
  75. #define MFP_RSR(base) MFP_ADRS(base,0x15) /* receiver status reg     */
  76. #define MFP_TSR(base) MFP_ADRS(base,0x16) /* transmitter status reg  */
  77. #define MFP_UDR(base)   MFP_ADRS(base,0x17) /* USART data reg          */
  78. /* vector number offsets */
  79. #define MFP_INT_GP0 0x00 /* general purpose I0 */
  80. #define MFP_INT_GP1 0x01 /* general purpose I1 */
  81. #define MFP_INT_GP2 0x02 /* general purpose I2 */
  82. #define MFP_INT_GP3 0x03 /* general purpose I3 */
  83. #define MFP_INT_TIMER_D 0x04 /* timer D */
  84. #define MFP_INT_TIMER_C 0x05 /* timer C */
  85. #define MFP_INT_GP4 0x06 /* general purpose I4 */
  86. #define MFP_INT_GP5 0x07 /* general purpose I5 */
  87. #define MFP_INT_TIMER_B 0x08 /* timer B */
  88. #define MFP_INT_TX_ERR 0x09 /* transmit error */
  89. #define MFP_INT_TRANS 0x0a /* transmit buffer empty */
  90. #define MFP_INT_RX_ERR 0x0b /* receive error */
  91. #define MFP_INT_RECV 0x0c /* receive buffer full */
  92. #define MFP_INT_TIMER_A 0x0d /* timer A */
  93. #define MFP_INT_GP6 0x0e /* general purpose I6 */
  94. #define MFP_INT_GP7 0x0f /* general purpose I7 */
  95. /* fields of vector register (VR) */
  96. #define MFP_VR_SOFT 0x08 /* software acknowledge interrupts */
  97. /* fields of interrupt enable A (IERA), interrupt pending A (IPRA), */
  98. /* interrupt in-service A (ISRA), interrupt mask A (IMRA) */
  99. #define MFP_A_TIMER_B 0x01 /* timer B */
  100. #define MFP_A_TX_ERR 0x02 /* transmitter error */
  101. #define MFP_A_TX_EMPTY 0x04 /* transmitter buffer empty */
  102. #define MFP_A_RX_ERR 0x08 /* receiver error */
  103. #define MFP_A_RX_FULL 0x10 /* receiver buffer full */
  104. #define MFP_A_TIMER_A 0x20 /* timer A */
  105. #define MFP_A_GPIP6 0x40 /* general purpose i/o 6 */
  106. #define MFP_A_GPIP7 0x80 /* general purpose i/o 7 */
  107. /* fields of interrupt enable B (IERB), interrupt pending B (IPRB), */
  108. /* interrupt in-service B (ISRB), interrupt mask B (IMRB) */
  109. #define MFP_B_GPIP0 0x01 /* general purpose i/o 0 */
  110. #define MFP_B_GPIP1 0x02 /* general purpose i/o 1 */
  111. #define MFP_B_GPIP2 0x04 /* general purpose i/o 2 */
  112. #define MFP_B_GPIP3 0x08 /* general purpose i/o 3 */
  113. #define MFP_B_TIMER_D 0x10 /* timer D */
  114. #define MFP_B_TIMER_C 0x20 /* timer C */
  115. #define MFP_B_GPIP4 0x40 /* general purpose i/o 4 */
  116. #define MFP_B_GPIP5 0x80 /* general purpose i/o 5 */
  117. /* fields of usart control register (UCR) */
  118. #define MFP_UCR_16X 0x80 /* divide clock souce by 16 */
  119. #define MFP_UCR_8BIT 0x00 /* 8 bit word length */
  120. #define MFP_UCR_7BIT 0x20 /* 7 bit word length */
  121. #define MFP_UCR_6BIT 0x40 /* 6 bit word length */
  122. #define MFP_UCR_5BIT 0x60 /* 5 bit word length */
  123. #define MFP_UCR_SYNC 0x00 /* synchronous */
  124. #define MFP_UCR_1STOP 0x08 /* one stop bit */
  125. #define MFP_UCR_1_AND_HALF_STOP 0x10 /* one and a half stop bits */
  126. #define MFP_UCR_2STOP 0x18 /* two stop bits */
  127. #define MFP_UCR_NO_PARITY 0x00 /* disable parity */
  128. #define MFP_UCR_EVEN_PARITY 0x06 /* enable even parity */
  129. #define MFP_UCR_ODD_PARITY 0x04 /* enable odd parity */
  130. /* fields of receiver status register (RSR) */
  131. #define MFP_RSR_RX_ENABLE 0x01 /* enable receiver */
  132. #define MFP_RSR_SYNC_STRIP_ENABLE 0x02 /* strip sync characters */
  133. #define MFP_RSR_CHAR_IN_PROGRESS 0x04 /* receiving a character */
  134. #define MFP_RSR_BREAK_DETECT 0x08 /* break detect */
  135. #define MFP_RSR_FRAME_ERROR 0x10 /* framing error */
  136. #define MFP_RSR_PARITY_ERROR 0x20 /* parity error */
  137. #define MFP_RSR_OVERRUN_ERROR 0x40 /* overrun error */
  138. #define MFP_RSR_BUFFER_FULL 0x80 /* receive buffer full */
  139. /* fields of transmitter status register (TSR) */
  140. #define MFP_TSR_TX_ENABLE 0x01 /* enable receiver */
  141. #define MFP_TSR_HI_Z 0x00 /* hi - Z */
  142. #define MFP_TSR_LOW 0x02 /* LOW */
  143. #define MFP_TSR_HIGH 0x04 /* HIGH */
  144. #define MFP_TSR_LOOP 0x06 /* LOOP */
  145. #define MFP_TSR_BREAK 0x08 /* transmit break */
  146. #define MFP_TSR_EOT 0x10 /* end of transmission */
  147. #define MFP_TSR_AUTO_TURNAROUND 0x20 /* parity error */
  148. #define MFP_TSR_UNDERRUN_ERROR 0x40 /* overrun error */
  149. #define MFP_TSR_BUFFER_EMPTY 0x80 /* transmit buffer empty */
  150. /* fields of timer control registers */
  151. #define MFP_TCR_A_MASK 0xf /* timer A mask                       */
  152. #define MFP_TCR_B_MASK 0xf /* timer B mask                       */
  153. #define MFP_TCR_C_MASK 0x70 /* timer C mask                       */
  154. #define MFP_TCR_D_MASK 0x7 /* timer D mask                       */
  155. #define MFP_TCR_RESET 0x10 /* reset timer A&B       */
  156. #define MFP_TCR_STOP 0x00 /* stop timer        */
  157. #define MFP_TCR_DELAY_4 0x11 /* delay mode, divide by 4 prescale   */
  158. #define MFP_TCR_DELAY_10 0x22 /* delay mode, divide by 10 prescale  */
  159. #define MFP_TCR_DELAY_16 0x33 /* delay mode, divide by 16 prescale  */
  160. #define MFP_TCR_DELAY_50 0x44 /* delay mode, divide by 50 prescale  */
  161. #define MFP_TCR_DELAY_64 0x55 /* delay mode, divide by 64 prescale  */
  162. #define MFP_TCR_DELAY_100 0x66 /* delay mode, divide by 100 prescale */
  163. #define MFP_TCR_DELAY_200 0x77 /* delay mode, divide by 200 prescale */
  164. #define MFP_TCR_EVENT 0x8 /* event count mode       */
  165. #define MFP_TCR_PULSE_4 0x9 /* pulse mode, divide by 4 prescale   */
  166. #define MFP_TCR_PULSE_10 0xa /* pulse mode, divide by 10 prescale  */
  167. #define MFP_TCR_PULSE_16 0xb /* pulse mode, divide by 16 prescale  */
  168. #define MFP_TCR_PULSE_50 0xc /* pulse mode, divide by 50 prescale  */
  169. #define MFP_TCR_PULSE_64 0xd /* pulse mode, divide by 64 prescale  */
  170. #define MFP_TCR_PULSE_100 0xe /* pulse mode, divide by 100 prescale */
  171. #define MFP_TCR_PULSE_200 0xf /* pulse mode, divide by 200 prescale */
  172. /* function declarations */
  173. #if defined(__STDC__) || defined(__cplusplus)
  174. IMPORT void m68901DevInit (M68901_CHAN *pChan);
  175. IMPORT  void    m68901IntWr   (M68901_CHAN *pChan);
  176. IMPORT  void    m68901IntRd   (M68901_CHAN *pChan);
  177. #else /* __STDC__ */
  178. IMPORT void m68901DevInit ();
  179. IMPORT  void    m68901IntWr   ();
  180. IMPORT  void    m68901IntRd   ();
  181. #endif /* __STDC__ */
  182. #ifdef __cplusplus
  183. }
  184. #endif
  185. #endif /* __INCm68901Sioh */