newPtz/drivers/drv_adc.h

122 lines
4.0 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __DRV_ADC_H_
#define __DRV_ADC_H_
#include "tmp75.h"
#include "stdlib.h"
#include "stdbool.h"
#include "string.h"
#include "gd32f4xx.h"
#include "gd32f4xx_adc.h"
#include "gd32f4xx_dma.h"
#include "rtthread.h"
/* 自定义宏,方便修改通道和引脚 */
#define ADCX ADC1
#define VOLTAGE_ADC_CHANNEL ADC_CHANNEL_12
#define CURRENT_ADC_CHANNEL ADC_CHANNEL_13
#define ADC_GPIO_PORT GPIOC
#define VOLTAGE_ADC_PIN GPIO_PIN_2
#define CURRENT_ADC_PIN GPIO_PIN_3
#define LB_V_TIMES 7 //电压采样滤波次数
#define LB_I_TIMES 12 //电流采样滤波次数
#define LB_T_TIMES 7 //温度采样滤波次数
#define LB_V_DEL 1 //电压滤波最高最低各删除个数
#define LB_I_DEL 2 //电流滤波最高最低各删除个数
#define LB_T_DEL 1 //温度滤波最高最低各删除个数
#define ADC_MODE_0 //规则组、单次转换、非扫描
// #define ADC_MODE_1 //注入组、单次转换、扫描、转换结束标志位采集
// #define ADC_MODE_2 //注入组、单次转换、扫描、中断转换结束标志位采集
// #define ADC_MODE_3 //规则组、连续转换、扫描、DMA采集
/*
adc模式配置参数
ENABLE
DISABLE
*/
#ifdef ADC_MODE_0
#define CONTINUOUS_STATUS DISABLE // 是否开启连续转换
#define SEQUENCE_CHANNEL ADC_ROUTINE_CHANNEL // 规则组
#define SCAN_STATUS DISABLE // 是否开启扫描模式
#define CHANNEL_LENGTH 1 // 通道数量:1~16
#endif
#ifdef ADC_MODE_1
#define CONTINUOUS_STATUS DISABLE // 是否开启连续转换
#define SEQUENCE_CHANNEL ADC_INSERTED_CHANNEL // 注入组
#define SCAN_STATUS ENABLE // 是否开启扫描模式
#define CHANNEL_LENGTH 2 // 通道数量:1~16
#endif
#ifdef ADC_MODE_2
#define CONTINUOUS_STATUS DISABLE // 不开启连续转换
#define SEQUENCE_CHANNEL ADC_INSERTED_CHANNEL // 注入组
#define SCAN_STATUS ENABLE // 是否开启扫描模式
#define CHANNEL_LENGTH 2 // 通道数量:1~16
#define ADCX_IRQn ADC_IRQn
#endif
#ifdef ADC_MODE_3
#define CONTINUOUS_STATUS ENABLE // 开启连续转换
#define SEQUENCE_CHANNEL ADC_ROUTINE_CHANNEL // 规则组
#define SCAN_STATUS ENABLE // 是否开启扫描模式
#define CHANNEL_LENGTH 2 // 通道数量:1~16
#define DMAX DMA1
#endif
/* adc dma */
#ifdef DMAX
#define USER_DMA_ADC_CHANNEL DMA_CH3 //DMA通道ADC0:DMA_CH0 DMA_CH4
// ADC1:DMA_CH2 DMA_CH3
// ADC2:DMA_CH0 DMA_CH3
#define USER_DMA_ADC_SUBPERI DMA_SUBPERI1 //DMA外设源:ADC0:DMA_SUBPERI0
// ADC1:DMA_SUBPERI1
// ADC2:DMA_SUBPERI2
#define DMA_ADC_IRQn DMA1_Channel0_IRQn //DMA1_Channel0_IRQn
//DMA1_Channel1_IRQn
//DMA1_Channel2_IRQn
//DMA1_Channel3_IRQn
//DMA1_Channel4_IRQn
#define DMA_ADC_PRIORITY_PRE 0 //抢占优先级
#define DMA_ADC_PRIORITY_SUB 1 //子优先级
#endif
#ifdef ADCX_IRQn
#define ADCX_PRIORITY_PRE 2U //抢占优先级
#define ADCX_PRIORITY_SUB 0U //子优先级
#endif
void adc_init(void);
void adc_rcu_config(void);
void adc_gpio_config(void);
void adc_config(void);
float ptz_Voltage_collect_adc1_task();
float ptz_Current_collect_adc1_task();
float ptz_temperature_collect_tmp75_task();
float Filtering(float *filter, uint8_t filterlens, uint8_t filterdel);
#ifdef ADCX_IRQn
void adc_interrupt_int(void);
#endif
#ifdef DMAX
void adc_dma_config(void);
__weak void DMA1_Channel0_IRQHandler(void);
uint16_t BSP_ADCDataAcquire(uint8_t _index);
#endif
#endif