acmp.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /**************************************************************************//**
  2. * @file acmp.c
  3. * @version V1.00
  4. * $Revision: 4 $
  5. * $Date: 15/11/04 7:32p $
  6. * @brief NUC472/NUC442 Analog Comparator(ACMP) driver source file
  7. *
  8. * @note
  9. * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
  10. *****************************************************************************/
  11. #include "NUC472_442.h"
  12. #ifdef __cplusplus
  13. extern "C"
  14. {
  15. #endif
  16. /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
  17. @{
  18. */
  19. /** @addtogroup NUC472_442_ACMP_Driver ACMP Driver
  20. @{
  21. */
  22. /** @addtogroup NUC472_442_ACMP_EXPORTED_FUNCTIONS ACMP Exported Functions
  23. @{
  24. */
  25. /**
  26. * @brief Configure the specified ACMP module
  27. *
  28. * @param[in] acmp The base address of ACMP module
  29. * @param[in] u32ChNum comparator number, could be 0, 1, 2
  30. * @param[in] u32NegSrc is comparator negative input selection. Including:
  31. * - \ref ACMP_VNEG_PIN
  32. * - \ref ACMP_VNEG_BANDGAP
  33. * - \ref ACMP_VNEG_4_OVER_24_VDD
  34. * - \ref ACMP_VNEG_5_OVER_24_VDD
  35. * - \ref ACMP_VNEG_6_OVER_24_VDD
  36. * - \ref ACMP_VNEG_7_OVER_24_VDD
  37. * - \ref ACMP_VNEG_8_OVER_24_VDD
  38. * - \ref ACMP_VNEG_9_OVER_24_VDD
  39. * - \ref ACMP_VNEG_10_OVER_24_VDD
  40. * - \ref ACMP_VNEG_11_OVER_24_VDD
  41. * - \ref ACMP_VNEG_12_OVER_24_VDD
  42. * - \ref ACMP_VNEG_13_OVER_24_VDD
  43. * - \ref ACMP_VNEG_14_OVER_24_VDD
  44. * - \ref ACMP_VNEG_15_OVER_24_VDD
  45. * - \ref ACMP_VNEG_16_OVER_24_VDD
  46. * - \ref ACMP_VNEG_17_OVER_24_VDD
  47. * - \ref ACMP_VNEG_18_OVER_24_VDD
  48. * - \ref ACMP_VNEG_19_OVER_24_VDD
  49. * - \ref ACMP_VNEG_4_OVER_24_IREF
  50. * - \ref ACMP_VNEG_5_OVER_24_IREF
  51. * - \ref ACMP_VNEG_6_OVER_24_IREF
  52. * - \ref ACMP_VNEG_7_OVER_24_IREF
  53. * - \ref ACMP_VNEG_8_OVER_24_IREF
  54. * - \ref ACMP_VNEG_9_OVER_24_IREF
  55. * - \ref ACMP_VNEG_10_OVER_24_IREF
  56. * - \ref ACMP_VNEG_11_OVER_24_IREF
  57. * - \ref ACMP_VNEG_12_OVER_24_IREF
  58. * - \ref ACMP_VNEG_13_OVER_24_IREF
  59. * - \ref ACMP_VNEG_14_OVER_24_IREF
  60. * - \ref ACMP_VNEG_15_OVER_24_IREF
  61. * - \ref ACMP_VNEG_16_OVER_24_IREF
  62. * - \ref ACMP_VNEG_17_OVER_24_IREF
  63. * - \ref ACMP_VNEG_18_OVER_24_IREF
  64. * - \ref ACMP_VNEG_19_OVER_24_IREF
  65. *
  66. * @param[in] u32HysteresisEn is the hysteresis function option. Including:
  67. * - \ref ACMP_HYSTERESIS_ENABLE
  68. * - \ref ACMP_HYSTERESIS_DISABLE
  69. * @return None
  70. */
  71. void ACMP_Open(ACMP_T *acmp, uint32_t u32ChNum, uint32_t u32NegSrc, uint32_t u32HysteresisEn)
  72. {
  73. if((u32NegSrc != ACMP_VNEG_PIN) && (u32NegSrc != ACMP_VNEG_BANDGAP))
  74. ACMP->VREF = u32NegSrc | ACMP_VREF_IREFSEL_Msk;
  75. ACMP->CTL[u32ChNum] = (ACMP->CTL[u32ChNum] & (~(ACMP_CTL_NEGSEL_Msk | ACMP_CTL_HYSEN_Msk))) |
  76. ((u32NegSrc != ACMP_VNEG_PIN ? ACMP_CTL_NEGSEL_Msk : 0) | u32HysteresisEn | ACMP_CTL_ACMPEN_Msk);
  77. }
  78. /**
  79. * @brief This function close comparator
  80. *
  81. * @param[in] acmp The base address of ACMP module
  82. * @param[in] u32ChNum comparator number.
  83. *
  84. * @return None
  85. */
  86. void ACMP_Close(ACMP_T *acmp, uint32_t u32ChNum)
  87. {
  88. ACMP->CTL[u32ChNum] &= (~ACMP_CTL_ACMPEN_Msk);
  89. }
  90. /*@}*/ /* end of group NUC472_442_ACMP_EXPORTED_FUNCTIONS */
  91. /*@}*/ /* end of group NUC472_442_ACMP_Driver */
  92. /*@}*/ /* end of group NUC472_442_Device_Driver */
  93. #ifdef __cplusplus
  94. }
  95. #endif
  96. /*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/