luat_adc.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /******************************************************************************
  2. * ADC设备操作抽象层
  3. * @author wendal
  4. * @since 0.1.5
  5. *****************************************************************************/
  6. #ifndef Luat_ADC_H
  7. #define Luat_ADC_H
  8. #include "luat_base.h"
  9. /**
  10. * @defgroup luatos_device_adc ADC接口
  11. * @{
  12. */
  13. #define LUAT_ADC_CH_CPU (-1)
  14. #define LUAT_ADC_CH_VBAT (-2)
  15. typedef enum
  16. {
  17. ADC_SET_GLOBAL_RANGE = 0x80,
  18. }ADC_SET_CMD_ENUM;
  19. /**
  20. * @brief ADC控制命令
  21. */
  22. typedef enum LUAT_ADC_CTRL_CMD
  23. {
  24. LUAT_ADC_SET_GLOBAL_RANGE,/**< 量程 */
  25. }LUAT_ADC_CTRL_CMD_E;
  26. /// @brief ADC量程
  27. typedef enum LUAT_ADC_RANGE
  28. {
  29. LUAT_ADC_AIO_RANGE_1_2,
  30. LUAT_ADC_AIO_RANGE_1_4,
  31. LUAT_ADC_AIO_RANGE_1_6,
  32. LUAT_ADC_AIO_RANGE_1_9,
  33. LUAT_ADC_AIO_RANGE_2_4,
  34. LUAT_ADC_AIO_RANGE_2_6,
  35. LUAT_ADC_AIO_RANGE_2_7,
  36. LUAT_ADC_AIO_RANGE_3_2,
  37. LUAT_ADC_AIO_RANGE_3_8,
  38. LUAT_ADC_AIO_RANGE_4_0,
  39. LUAT_ADC_AIO_RANGE_4_8,
  40. LUAT_ADC_AIO_RANGE_6_4,
  41. LUAT_ADC_AIO_RANGE_9_6,
  42. LUAT_ADC_AIO_RANGE_19_2,
  43. LUAT_ADC_AIO_RANGE_MAX,
  44. LUAT_ADC_VBAT_RANGE_2_0_RATIO,
  45. LUAT_ADC_VBAT_RANGE_2_2_RATIO,
  46. LUAT_ADC_VBAT_RANGE_2_6_RATIO,
  47. LUAT_ADC_VBAT_RANGE_3_2_RATIO,
  48. LUAT_ADC_VBAT_RANGE_4_0_RATIO,
  49. LUAT_ADC_VBAT_RANGE_5_3_RATIO,
  50. LUAT_ADC_VBAT_RANGE_8_0_RATIO,
  51. LUAT_ADC_VBAT_RANGE_16_0_RATIO,
  52. }LUAT_ADC_RANGE_E;
  53. /**
  54. * @brief ADC控制参数
  55. */
  56. typedef union luat_adc_ctrl_param
  57. {
  58. LUAT_ADC_RANGE_E range;/**< adc量程*/
  59. void *userdata;/**< 预留 */
  60. } luat_adc_ctrl_param_t;
  61. /**
  62. * luat_adc_open
  63. * Description: 打开一个adc通道
  64. * @param pin[in] adc通道的序号
  65. * @param args[in] 保留用,传NULL
  66. * @return 0 成功, 其他值为失败
  67. */
  68. int luat_adc_open(int pin, void* args);
  69. /**
  70. * luat_adc_read
  71. * Description: 读取adc通道的值
  72. * @param pin[in] adc通道的序号
  73. * @param val[out] adc通道的原始值
  74. * @param val2[out] adc通道的计算值,与具体通道有关
  75. * @return 0 成功, 其他值为失败
  76. */
  77. int luat_adc_read(int pin, int* val, int* val2);
  78. /**
  79. * luat_adc_close
  80. * Description: 关闭adc通道
  81. * @param pin[in] adc通道的序号
  82. * @return 0 成功, 其他值为失败
  83. */
  84. int luat_adc_close(int pin);
  85. /**
  86. * luat_adc_global_config
  87. * Description: 设置adc全局参数
  88. * @param tp[in] 参数类型
  89. * @param val[in] 参数值
  90. * @return 0 成功, 其他值为失败
  91. */
  92. int luat_adc_global_config(int tp, int val);
  93. /**
  94. * luat_adc_ctrl
  95. * Description: 设置ADC参数,部分功能会与luat_adc_global_config有相同的想过
  96. * @param id[in] adc通道的序号
  97. * @param cmd[in] 参数类型
  98. * @param param[in] 参数值
  99. * @return 0 成功, 其他值为失败
  100. */
  101. int luat_adc_ctrl(int id, LUAT_ADC_CTRL_CMD_E cmd, luat_adc_ctrl_param_t param);
  102. /**
  103. * luat_adc_open_and_disable_lowpower
  104. * Description: 打开一个adc通道,并且阻止系统进入休眠
  105. * @param pin[in] adc通道的序号
  106. * @return 0 成功, 其他值为失败
  107. */
  108. int luat_adc_open_and_disable_lowpower(int id);
  109. /**
  110. * luat_adc_read_fast
  111. * Description: 读取adc通道的值,必须由luat_adc_open_and_disable_lowpower初始化过的通道
  112. * @param pin[in] adc通道的序号
  113. * @param val[out] adc通道的原始值
  114. * @param val2[out] adc通道的计算值,与具体通道有关
  115. * @return 0 成功, 其他值为失败
  116. */
  117. int luat_adc_read_fast(int id, int* val, int* val2);
  118. /**
  119. * luat_adc_close_and_enable_lowpower
  120. * Description: 关闭adc通道,并且允许系统进入休眠
  121. * @param pin[in] adc通道的序号
  122. * @return 0 成功, 其他值为失败
  123. */
  124. int luat_adc_close_and_enable_lowpower(int id);
  125. /** @}*/
  126. #endif