nu_adc.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. /**************************************************************************//**
  2. * @file adc.h
  3. * @version V1.00
  4. * $Revision: 6 $
  5. * $Date: 15/10/05 7:00p $
  6. * @brief NUC980 ADC driver header file
  7. *
  8. * @note
  9. * SPDX-License-Identifier: Apache-2.0
  10. * Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
  11. *****************************************************************************/
  12. #ifndef __NU_ADC_H__
  13. #define __NU_ADC_H__
  14. #ifdef __cplusplus
  15. extern "C"
  16. {
  17. #endif
  18. /** @addtogroup Standard_Driver Standard Driver
  19. @{
  20. */
  21. /** @addtogroup ADC_Driver ADC Driver
  22. @{
  23. */
  24. /** @addtogroup ADC_EXPORTED_CONSTANTS ADC Exported Constants
  25. @{
  26. */
  27. #define ADC_ERR_ARGS 1 /*!< The arguments is wrong */
  28. #define ADC_ERR_CMD 2 /*!< The command is wrong */
  29. /// @cond HIDDEN_SYMBOLS
  30. typedef int32_t(*ADC_CALLBACK)(uint32_t status, uint32_t userData);
  31. /// @endcond HIDDEN_SYMBOLS
  32. /*---------------------------------------------------------------------------------------------------------*/
  33. /* ADC_CTL constant definitions */
  34. /*---------------------------------------------------------------------------------------------------------*/
  35. #define ADC_CTL_ADEN 0x00000001 /*!< ADC Power Control */
  36. #define ADC_CTL_VBGEN 0x00000002 /*!< ADC Internal Bandgap Power Control */
  37. #define ADC_CTL_PWKPEN 0x00000004 /*!< ADC Keypad Power Enable Control */
  38. #define ADC_CTL_MST 0x00000100 /*!< Menu Start Conversion */
  39. #define ADC_CTL_PEDEEN 0x00000200 /*!< Pen Down Event Enable */
  40. #define ADC_CTL_WKPEN 0x00000400 /*!< Keypad Press Wake Up Enable */
  41. #define ADC_CTL_WKTEN 0x00000800 /*!< Touch Wake Up Enable */
  42. #define ADC_CTL_WMSWCH 0x00010000 /*!< Wire Mode Switch For 5-Wire/4-Wire Configuration */
  43. /*---------------------------------------------------------------------------------------------------------*/
  44. /* ADC_CONF constant definitions */
  45. /*---------------------------------------------------------------------------------------------------------*/
  46. #define ADC_CONF_TEN 0x00000001 /*!< Touch Enable */
  47. #define ADC_CONF_ZEN 0x00000002 /*!< Press Enable */
  48. #define ADC_CONF_NACEN 0x00000004 /*!< Normal AD Conversion Enable */
  49. #define ADC_CONF_VBATEN 0x00000100 /*!< Voltage Battery Enable */
  50. #define ADC_CONF_KPCEN 0x00000200 /*!< Keypad Press Conversion Enable */
  51. #define ADC_CONF_SELFTEN 0x00000400 /*!< Selft Test Enable */
  52. #define ADC_CONF_DISTMAVEN (1<<20) /*!< Display T Mean Average Enable */
  53. #define ADC_CONF_DISZMAVEN (1<<21) /*!< Display Z Mean Average Enable */
  54. #define ADC_CONF_HSPEED (1<<22) /*!< High Speed Enable */
  55. #define ADC_CONF_CHSEL_Pos 3 /*!< Channel Selection Position */
  56. #define ADC_CONF_CHSEL_Msk (7<<3) /*!< Channel Selection Mask */
  57. #define ADC_CONF_CHSEL_VBT (0<<3) /*!< ADC input channel select VBT */
  58. #define ADC_CONF_CHSEL_VHS (1<<3) /*!< ADC input channel select VHS */
  59. #define ADC_CONF_CHSEL_A2 (2<<3) /*!< ADC input channel select A2 */
  60. #define ADC_CONF_CHSEL_A3 (3<<3) /*!< ADC input channel select A3 */
  61. #define ADC_CONF_CHSEL_YM (4<<3) /*!< ADC input channel select YM */
  62. #define ADC_CONF_CHSEL_YP (5<<3) /*!< ADC input channel select YP */
  63. #define ADC_CONF_CHSEL_XM (6<<3) /*!< ADC input channel select XM */
  64. #define ADC_CONF_CHSEL_XP (7<<3) /*!< ADC input channel select XP */
  65. #define ADC_CONF_REFSEL_Pos 6 /*!< Reference Selection Position */
  66. #define ADC_CONF_REFSEL_Msk (3<<6) /*!< Reference Selection Mask */
  67. #define ADC_CONF_REFSEL_VREF (0<<6) /*!< ADC reference select VREF input or 2.5v buffer output */
  68. #define ADC_CONF_REFSEL_YMYP (1<<6) /*!< ADC reference select YM vs YP */
  69. #define ADC_CONF_REFSEL_XMXP (2<<6) /*!< ADC reference select XM vs XP */
  70. #define ADC_CONF_REFSEL_AVDD33 (3<<6) /*!< ADC reference select AGND33 vs AVDD33 */
  71. /*---------------------------------------------------------------------------------------------------------*/
  72. /* ADC_IER constant definitions */
  73. /*---------------------------------------------------------------------------------------------------------*/
  74. #define ADC_IER_MIEN 0x00000001 /*!< Menu Interrupt Enable */
  75. #define ADC_IER_KPEIEN 0x00000002 /*!< Keypad Press Event Interrupt Enable */
  76. #define ADC_IER_PEDEIEN 0x00000004 /*!< Pen Down Even Interrupt Enable */
  77. #define ADC_IER_WKTIEN 0x00000008 /*!< Wake Up Touch Interrupt Enable */
  78. #define ADC_IER_WKPIEN 0x00000010 /*!< Wake Up Keypad Press Interrupt Enable */
  79. #define ADC_IER_KPUEIEN 0x00000020 /*!< Keypad Press Up Event Interrupt Enable */
  80. #define ADC_IER_PEUEIEN 0x00000040 /*!< Pen Up Event Interrupt Enable */
  81. /*---------------------------------------------------------------------------------------------------------*/
  82. /* ADC_ISR constant definitions */
  83. /*---------------------------------------------------------------------------------------------------------*/
  84. #define ADC_ISR_MF 0x00000001 /*!< Menu Complete Flag */
  85. #define ADC_ISR_KPEF 0x00000002 /*!< Keypad Press Event Flag */
  86. #define ADC_ISR_PEDEF 0x00000004 /*!< Pen Down Event Flag */
  87. #define ADC_ISR_KPUEF 0x00000008 /*!< Keypad Press Up Event Flag */
  88. #define ADC_ISR_PEUEF 0x00000010 /*!< Pen Up Event Flag */
  89. #define ADC_ISR_TF 0x00000100 /*!< Touch Conversion Finish */
  90. #define ADC_ISR_ZF 0x00000200 /*!< Press Conversion Finish */
  91. #define ADC_ISR_NACF 0x00000400 /*!< Normal AD Conversion Finish */
  92. #define ADC_ISR_VBF 0x00000800 /*!< Voltage Battery Conversion Finish */
  93. #define ADC_ISR_KPCF 0x00001000 /*!< Keypad Press Conversion Finish */
  94. #define ADC_ISR_SELFTF 0x00002000 /*!< Self-Test Conversion Finish */
  95. #define ADC_ISR_INTKP 0x00010000 /*!< Interrupt Signal For Keypad Detection */
  96. #define ADC_ISR_INTTC 0x00020000 /*!< Interrupt Signal For Touch Screen Touching Detection */
  97. /*---------------------------------------------------------------------------------------------------------*/
  98. /* ADC_WKISR constant definitions */
  99. /*---------------------------------------------------------------------------------------------------------*/
  100. #define ADC_WKISR_WKPEF 0x00000001 /*!< Wake Up Pen Down Event Flag */
  101. #define ADC_WKISR_WPEDEF 0x00000002 /*!< Wake Up Keypad Press Event Flage */
  102. /** \brief Structure type of ADC_CHAN
  103. */
  104. typedef enum
  105. {
  106. AIN0 = ADC_CONF_CHSEL_VBT, /*!< ADC input channel select \ref ADC_CONF_CHSEL_VBT */
  107. AIN1 = ADC_CONF_CHSEL_VHS, /*!< ADC input channel select \ref ADC_CONF_CHSEL_VHS */
  108. AIN2 = ADC_CONF_CHSEL_A2, /*!< ADC input channel select \ref ADC_CONF_CHSEL_A2 */
  109. AIN3 = ADC_CONF_CHSEL_A3, /*!< ADC input channel select \ref ADC_CONF_CHSEL_A3 */
  110. AIN4 = ADC_CONF_CHSEL_YM, /*!< ADC input channel select \ref ADC_CONF_CHSEL_YM */
  111. AIN5 = ADC_CONF_CHSEL_XP, /*!< ADC input channel select \ref ADC_CONF_CHSEL_XP */
  112. AIN6 = ADC_CONF_CHSEL_XM, /*!< ADC input channel select \ref ADC_CONF_CHSEL_XM */
  113. AIN7 = ADC_CONF_CHSEL_XP /*!< ADC input channel select \ref ADC_CONF_CHSEL_XP */
  114. } ADC_CHAN;
  115. /** \brief Structure type of ADC_CMD
  116. */
  117. typedef enum
  118. {
  119. START_MST, /*!<Menu Start Conversion with interrupt */
  120. START_MST_POLLING, /*!<Menu Start Conversion with polling */
  121. VBPOWER_ON, /*!<Enable ADC Internal Bandgap Power */
  122. VBPOWER_OFF, /*!<Disable ADC Internal Bandgap Power */
  123. VBAT_ON, /*!<Enable Voltage Battery conversion function */
  124. VBAT_OFF, /*!<Disable Voltage Battery conversion function */
  125. KPPOWER_ON, /*!<Enable ADC Keypad power */
  126. KPPOWER_OFF, /*!<Disable ADC Keypad power */
  127. KPCONV_ON, /*!<Enable Keypad conversion function */
  128. KPCONV_OFF, /*!<Disable Keypad conversion function */
  129. KPPRESS_ON, /*!<Enable Keypad press event */
  130. KPPRESS_OFF, /*!<Disable Keypad press event */
  131. KPUP_ON, /*!<Enable Keypad up event */
  132. KPUP_OFF, /*!<Disable Keypad up event */
  133. PEPOWER_ON, /*!<Enable Pen Down Power ,It can control pen down event */
  134. PEPOWER_OFF, /*!<Disable Pen Power */
  135. PEDEF_ON, /*!<Enable Pen Down Event Flag */
  136. PEDEF_OFF, /*!<Disable Pen Down Event Flag */
  137. WKP_ON, /*!<Enable Keypad Press Wake Up */
  138. WKP_OFF, /*!<Disable Keypad Press Wake Up */
  139. WKT_ON, /*!<Enable Pen Down Wake Up */
  140. WKT_OFF, /*!<Disable Pen Down Wake Up */
  141. SWITCH_5WIRE_ON, /*!<Wire Mode Switch to 5-Wire Configuration */
  142. SWITCH_5WIRE_OFF, /*!<Wire Mode Switch to 4-Wire Configuration */
  143. T_ON, /*!<Enable Touch detection function */
  144. T_OFF, /*!<Disable Touch detection function */
  145. TAVG_ON, /*!<Enable Touch Mean average for X and Y function */
  146. TAVG_OFF, /*!<Disable Touch Mean average for X and Y function */
  147. Z_ON, /*!<Enable Press measure function */
  148. Z_OFF, /*!<Disable Press measure function */
  149. TZAVG_ON, /*!<Enable Pressure Mean average for Z1 and Z2 function */
  150. TZAVG_OFF, /*!<Disable Pressure Mean average for Z1 and Z2 function */
  151. NAC_ON, /*!<Enable Normal AD Conversion */
  152. NAC_OFF, /*!<Disable Normal AD Conversion */
  153. SWITCH_CH, /*!<Switch Channel */
  154. } ADC_CMD;
  155. /*@}*/ /* end of group ADC_EXPORTED_CONSTANTS */
  156. /** @addtogroup ADC_EXPORTED_FUNCTIONS ADC Exported Functions
  157. @{
  158. */
  159. int adcOpen(void);
  160. int adcOpen2(uint32_t freq);
  161. int adcClose(void);
  162. int adcReadXY(short *bufX, short *bufY, int dataCnt);
  163. int adcReadZ(short *bufZ1, short *bufZ2, int dataCnt);
  164. int adcIoctl(ADC_CMD cmd, int arg1, int arg2);
  165. int adcChangeChannel(int channel);
  166. /*@}*/ /* end of group ADC_EXPORTED_FUNCTIONS */
  167. /*@}*/ /* end of group ADC_Driver */
  168. /*@}*/ /* end of group Standard_Driver */
  169. #ifdef __cplusplus
  170. }
  171. #endif
  172. #endif //__NU_ADC_H__