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