ps2.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. /**************************************************************************//**
  2. * @file PS2.h
  3. * @version V0.10
  4. * $Revision: 6 $
  5. * $Date: 14/10/06 1:58p $
  6. * @brief NUC472/NUC442 PS2 Driver Header File
  7. *
  8. * @note
  9. * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
  10. ******************************************************************************/
  11. #ifndef __PS2_H__
  12. #define __PS2_H__
  13. /*---------------------------------------------------------------------------------------------------------*/
  14. /* Include related headers */
  15. /*---------------------------------------------------------------------------------------------------------*/
  16. #include "NUC472_442.h"
  17. #ifdef __cplusplus
  18. extern "C"
  19. {
  20. #endif
  21. /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
  22. @{
  23. */
  24. /** @addtogroup NUC472_442_PS2_Driver PS2 Driver
  25. @{
  26. */
  27. /** @addtogroup NUC472_442_PS2_EXPORTED_FUNCTIONS PS2 Exported Functions
  28. @{
  29. */
  30. /**
  31. * @brief This function use to set TX FIFO length.
  32. *
  33. * @param[in] u32Count TX FIFO length
  34. *
  35. * @return None
  36. * \hideinitializer
  37. */
  38. #define PS2_SET_TX_BYTE_CNT(u32Count) (PS2->CTL = (PS2->CTL & ~PS2_CTL_TXFDEPTH_Msk) \
  39. | ((u32Count-1) << PS2_CTL_TXFDEPTH_Pos))
  40. /**
  41. * @brief This function use to get PS2 status.
  42. *
  43. * @param None
  44. *
  45. * @return PS2 status
  46. * \hideinitializer
  47. */
  48. #define PS2_GET_STATUS() (PS2->STATUS)
  49. /**
  50. * @brief This function use to clear PS2 status.
  51. *
  52. * @param[in] u32Mask Clear the specified status of Ps2 module:
  53. * \ref PS2_STATUS_FRAMEERR_Msk , \ref PS2_STATUS_RXOV_Msk
  54. *
  55. * @return None
  56. */
  57. #define PS2_CLR_STATUS(u32Mask) (PS2D->PS2STATUS = u32Mask)
  58. /**
  59. * @brief This function use to clear PS2 Tx FIFO.
  60. *
  61. * @param None
  62. *
  63. * @return None
  64. * \hideinitializer
  65. */
  66. __STATIC_INLINE void PS2_CLEAR_TX_FIFO(void)
  67. {
  68. PS2->CTL |= PS2_CTL_CLRFIFO_Msk;
  69. PS2->CTL &= ~PS2_CTL_CLRFIFO_Msk;
  70. }
  71. /**
  72. * @brief This function use to clear PS2 Rx interrupt.
  73. *
  74. * @param None
  75. *
  76. * @return None
  77. * \hideinitializer
  78. */
  79. #define PS2_CLR_RX_INT_FLAG() (PS2->INTSTS = PS2_INTSTS_RXIF_Msk)
  80. /**
  81. * @brief This function use to clear PS2 Tx interrupt.
  82. *
  83. * @param None
  84. *
  85. * @return None
  86. * \hideinitializer
  87. */
  88. #define PS2_CLR_TX_INT_FLAG() (PS2->INTSTS = PS2_INTSTS_TXIF_Msk)
  89. /**
  90. * @brief This function use to get PS2 interrupt.
  91. *
  92. * @param[in] u32IntFlag interrupt flag: \ref PS2_INTSTS_TXIF_Msk , \ref PS2_INTSTS_RXIF_Msk
  93. *
  94. * @return 1: interrupt occurs
  95. * 0: interrupt not occurs
  96. * \hideinitializer
  97. */
  98. #define PS2_GET_INT_FLAG(u32IntFlag) ((PS2->INTSTS & u32IntFlag)?1:0)
  99. /**
  100. * @brief This function use to set PS2CLK and PS2DATA pins are controlled by hardware.
  101. *
  102. * @param None
  103. *
  104. * @return None
  105. * \hideinitializer
  106. */
  107. #define PS2_DISABLE_OVERRIDE() (PS2->CTL &= ~PS2_CTL_PS2EN_Msk)
  108. /**
  109. * @brief This function use to set PS2CLK and PS2DATA pins are controlled by software.
  110. *
  111. * @param None
  112. *
  113. * @return None
  114. * \hideinitializer
  115. */
  116. #define PS2_ENABLE_OVERRIDE() (PS2->CTL |= PS2_CTL_PS2EN_Msk)
  117. /**
  118. * @brief This function use to get indicates which data byte in transmit data shift register.
  119. *
  120. * @param None
  121. *
  122. * @return The indicates which data byte in transmit data shift register.
  123. * \hideinitializer
  124. */
  125. #define PS2_GET_TX_BYTE_INDEX() ((PS2->STATUS & PS2_STATUS_BYTEIDX_Msk) >> PS2_STATUS_BYTEIDX_Pos)
  126. /**
  127. * @brief This function use to set PS2DATA Pin low.
  128. *
  129. * @param None
  130. *
  131. * @return None.
  132. * \hideinitializer
  133. */
  134. #define PS2_SET_DATA_LOW() (PS2->CTL &= ~PS2_CTL_FPS2DAT_Msk)
  135. /**
  136. * @brief This function use to set PS2DATA Pin high.
  137. *
  138. * @param None
  139. *
  140. * @return None.
  141. * \hideinitializer
  142. */
  143. #define PS2_SET_DATA_HIGH() (PS2->CTL |= PS2_CTL_FPS2DAT_Msk)
  144. /**
  145. * @brief This function use to set PS2CLK Pin low.
  146. *
  147. * @param None
  148. *
  149. * @return None.
  150. * \hideinitializer
  151. */
  152. #define PS2_SET_CLK_LOW() (PS2->CTL &= ~PS2_CTL_FPS2CLK_Msk)
  153. /**
  154. * @brief This function use to set PS2CLK Pin high.
  155. *
  156. * @param None
  157. *
  158. * @return None.
  159. * \hideinitializer
  160. */
  161. #define PS2_SET_CLK_HIGH() (PS2->CTL |= PS2_CTL_FPS2CLK_Msk)
  162. /**
  163. * @brief If Parity error or Stop bit is Not Received Correctly, Acknowledge will Not be Sent to host at 12th clock.
  164. *
  165. * @param None
  166. *
  167. * @return None.
  168. * \hideinitializer
  169. */
  170. #define PS2_DISABLE_ACK_ALWAYS() (PS2->CTL |= PS2_CTL_ACK_Msk)
  171. /**
  172. * @brief Always sends acknowledge to host at 12th clock for host to device communication.
  173. *
  174. * @param None
  175. *
  176. * @return None.
  177. * \hideinitializer
  178. */
  179. #define PS2_ENABLE_ACK_ALWAYS() (PS2->CTL &= ~PS2_CTL_ACK_Msk)
  180. /*---------------------------------------------------------------------------------------------------------*/
  181. /* Define Function Prototypes */
  182. /*---------------------------------------------------------------------------------------------------------*/
  183. void PS2_Open(void);
  184. void PS2_Close(void);
  185. uint8_t PS2_Read(void);
  186. int32_t PS2_Write(uint32_t *pu32Buf, uint32_t u32ByteCount);
  187. void PS2_EnableInt(uint32_t u32Mask);
  188. void PS2_DisableInt(uint32_t u32Mask);
  189. /*@}*/ /* end of group NUC472_442_PS2_EXPORTED_FUNCTIONS */
  190. /*@}*/ /* end of group NUC472_442_PS2_Driver */
  191. /*@}*/ /* end of group NUC472_442_Device_Driver */
  192. #ifdef __cplusplus
  193. }
  194. #endif
  195. #endif //__PS2_H__
  196. /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/