SN_ADC.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef SN_ADC_H
  2. #define SN_ADC_H
  3. #include "ciu32f003_std.h"
  4. //再封装接口
  5. uint8_t SN_ADC_IN_init(uint32_t channel); //初始ADC通道
  6. void SN_ADC_start(void); //开始进行ADC转换
  7. uint16_t SN_ADC_Get(uint32_t channel); //获得对应通道的ADC转换值
  8. float SN_ADC_Get_float(uint32_t list_next); //获得对应通道的ADC信号的电压值
  9. void SN_ADC_Deinit(void); //ADC去初始化
  10. void bsp_adc_software_calibrate(void); //官方调整函数,精度不够,不使用
  11. float SN_ADC_MCU_VDD(void); //MCU的vdd电压大小
  12. //ADC静态参数
  13. #define SN_ADC_E0 3 //偏移误差,来源于物理ADC工艺
  14. #define SN_ADC_EN 2 //满量程误差,来源于参考源的物理工艺
  15. //备用参数,是官方的调整函数,经测试,会导致较大的误差,所有我们不使用官方调整函数,直接用E0 EG 来纠正.
  16. /* ADC采样次数,根据实际需求可调整此值 */
  17. #define ADC_SAMPLE_NUM (10U)
  18. /* 校准系数的最值 */
  19. #define CALFACT_MAX (31)
  20. #define CALFACT_MIN (-31)
  21. /* ADC校准系数的符号位 */
  22. #define ADC_CALFACT_SYMBOL (ADC_CALFACT_CALFACT_5)
  23. /* ADC补偿值 */
  24. #define ADC_COMPENSATION_VALUE (*(int32_t *)(0x1FFF03CC))
  25. //通道宏定义
  26. #define ADC_CHANNEL_0_PB1 ADC_CHANNEL_0
  27. #define ADC_CHANNEL_1_PA3 ADC_CHANNEL_1
  28. #define ADC_CHANNEL_2_PA4 ADC_CHANNEL_2
  29. #define ADC_CHANNEL_3_PA6 ADC_CHANNEL_3
  30. #define ADC_CHANNEL_4_PA7 ADC_CHANNEL_4
  31. #define ADC_CHANNEL_5_PB3 ADC_CHANNEL_5
  32. #define ADC_CHANNEL_6_PB6 ADC_CHANNEL_6
  33. #define ADC_CHANNEL_7_PB0 ADC_CHANNEL_7
  34. //----------------------------------------------------------------------------------------------------------------------------------------------------------
  35. //ADC中断优先级
  36. #define ADC_NVIC_PRIO_x NVIC_PRIO_0 // NVIC_PRIO_0, NVIC_PRIO_1, NVIC_PRIO_2, NVIC_PRIO_3, 数字越小,优先级越高
  37. //开启BGR反推VDD,电池且无LDO供电场景
  38. #define ADC_BGR_Rectify
  39. //开启后台中断adc转换
  40. #define ADC_IRQ_Handle 0 //0 :不开启,直接占用cpu时间等待 1 : 开启中断读取ADC值,单周期 2:开启中断读取ADC值,周期性更新ADC数据
  41. #endif