170 lines
5.7 KiB
C
170 lines
5.7 KiB
C
/** ##########################################################################
|
||
** Filename :
|
||
** Project :
|
||
** Module :
|
||
** Processor :
|
||
** Version :
|
||
** Compiler :
|
||
** Date/Time :
|
||
** Abstract :
|
||
** Contents :
|
||
** Note :
|
||
**
|
||
** (c) Copyright dmdz Co.,Ltd
|
||
** --------------------------------------------------------------------------
|
||
** R E V I S I O N H I S T O R Y
|
||
** --------------------------------------------------------------------------
|
||
** Date Ver Author Description
|
||
|
||
** -20230602- --V1.0-- --mingyea--- --修改--
|
||
|
||
** #########################################################################*/
|
||
#ifndef ADC_CFG_H__
|
||
#define ADC_CFG_H__
|
||
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- I N C L U D E F I L E S
|
||
----------------------------------------------------------------------------*/
|
||
#include "common_cfg.h"
|
||
#include "cpu.h"
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- D E F I N E S / M A C R O S
|
||
----------------------------------------------------------------------------*/
|
||
|
||
#define ADC_VREF1P2 1200u //mv
|
||
#define ADC_VREFH 5000u //mv
|
||
#define ADC_RESOLUTION_BIT 12u //分辨率
|
||
#define ADC_RESOLUTION_MASK 4096u //分辨率換算成的值
|
||
|
||
#define ADC_DEBUG_BY_SOFTWARE_TRIG 0
|
||
#define ADC_DEBUG_BY_TIMER_TRIG 1
|
||
#define ADC_DEBUG_BY_PWM_TRIG 2
|
||
#define ADC_DEBUG_BY_ANALOG_MONITOR 3
|
||
#define ADC_DEBUG_BY_TSENSOR_ADC 4
|
||
|
||
|
||
|
||
#define ADC_LOGIC_CHANNEL_VREF1P2 0u //1.2V
|
||
#define ADC_LOGIC_CHANNEL_NTC 1u //--13
|
||
#define ADC_LOGIC_CHANNEL_AD1 2u //--12
|
||
#define ADC_LOGIC_CHANNEL_AD2 3u //ad2 --7
|
||
#define ADC_LOGIC_CHANNEL_SNS 4u // --6
|
||
#define ADC_LOGIC_CHANNEL_AD3 5u //ad3 --5
|
||
#define ADC_LOGIC_CHANNEL_VBAT 6u //12V --1
|
||
#define ADC_LOGIC_CHANNEL_ADRH 7u //--0
|
||
|
||
#define ADC_LOGIC_CHANNEL_USE_START 1u //除了最前面的通道是给 1.2,从1开始就是用户的
|
||
|
||
|
||
#define ADC_LOGIC_CHANNEL_START 0u
|
||
#define ADC_LOGIC_CHANNEL_END 7u
|
||
#define ADC_LOGIC_CHANNEL_MAX (ADC_LOGIC_CHANNEL_END-ADC_LOGIC_CHANNEL_START+1u) //又加1把VREF1P2放在buf0
|
||
//#define ADC_LOGIC_CHANNEL_ADD_VREF1P2_MAX (ADC_LOGIC_CHANNEL_MAX+1u)
|
||
|
||
|
||
//滤波
|
||
#define ADC0_CHANNEL_FILTER_TIME 10u //滤波的缓存次数,
|
||
|
||
//#define ADC0_CHANNEL_FILETER_EN 1u //使能滤波
|
||
|
||
/*****各通道***ADC manage的***/
|
||
#define ADC_LOGIC_MANAGE_CHANEL_1 0u //AD4,物理AN3, S14,S15
|
||
#define ADC_LOGIC_MANAGE_CHANEL_2 1u //AD3,物理AN2, S12,S13
|
||
#define ADC_LOGIC_MANAGE_CHANEL_3 2u //AD2,物理AN1, S10,S11
|
||
#define ADC_LOGIC_MANAGE_CHANEL_4 3u //AD1,物理AN0, S8,S9
|
||
#define ADC_LOGIC_MANAGE_CHANEL_5 4u //AD7,物理AN5,S4 S3 S1
|
||
#define ADC_LOGIC_MANAGE_CHANEL_6 5u //AD5,温度
|
||
#define ADC_LOGIC_MANAGE_CHANEL_7 6u //AD7,SNS
|
||
#define ADC_LOGIC_MANAGE_CHANEL_MAX 7u //
|
||
//实际配置,各通道的用处。
|
||
|
||
|
||
#define ADC0_LOGIC_CHN_NORMAL_KEY_MAX 5u //有几个通道用于按键
|
||
#define ADC0_LOGIC_CHN_FUNC_SAFE_KEY_MAX 2u //功能安全按键通道的起始id --其是就一个通道,分出,单独按,和同时多个按
|
||
|
||
#define ADC0_LOGIC_CHN_NORMAL_KEY_START ADC_LOGIC_MANAGE_CHANEL_1 //普通按键通道的起始id
|
||
#if 1 //测试用 //TEMP_CLOSE
|
||
#define ADC0_LOGIC_CHN_FUNC_SAFE_KEY_START ADC_LOGIC_MANAGE_CHANEL_1 //功能安全按键通道的起始id
|
||
#else
|
||
#define ADC0_LOGIC_CHN_FUNC_SAFE_KEY_START ADC_LOGIC_MANAGE_CHANEL_6 //功能安全按键通道的起始id
|
||
#endif
|
||
|
||
#define ADC_CHANNEL_SBAT ADC_LOGIC_CHANNEL_VBAT
|
||
|
||
#define ADC_SBAT_COEFFICIENT_DIV (680u+124u)/124u
|
||
#define ADC_SBAT_DIODE_DIFF 700u //mv
|
||
|
||
#define ADC_ENABLE_DMA_MODE 0u //改用DMA循环模式 0 单次 1 循环 //
|
||
#define ADC_TASK_PERIOD_TIME 1u
|
||
#define ADC_TASK_TIMEOUT (100u/ADC_TASK_PERIOD_TIME)
|
||
|
||
|
||
#define adc_manage_get_syspower adc_manage_get_sbat_voltage
|
||
|
||
#define ADC_DEBUG_EN 1u
|
||
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- T Y P E D E F I N I T I O N S
|
||
----------------------------------------------------------------------------*/
|
||
typedef u8 ADC_ChannelType ;
|
||
typedef u16 ADC_SampleTimeType ;
|
||
|
||
typedef u16 adc_voltage_t;
|
||
typedef u16 adc_result_t;
|
||
typedef u16 adc_org_value_t;
|
||
|
||
typedef struct
|
||
{
|
||
ADC_Type* base;
|
||
ADC_ChannelType channel;
|
||
ADC_SampleTimeType sample_time;
|
||
u8 logic_id;
|
||
}adc_group_cfg_s;
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- G L O B A L V A R I A B L E S
|
||
- only configuration table allowed here,variables are not allowed!
|
||
----------------------------------------------------------------------------*/
|
||
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- C O N S T A N T S
|
||
----------------------------------------------------------------------------*/
|
||
extern const FL_ADC_CommonInitTypeDef g_ADC_CommonInitStruct;
|
||
extern const FL_ADC_InitTypeDef g_ADC_InitStruct ;
|
||
extern const u32 g_adc_drv_channel[ADC_LOGIC_CHANNEL_MAX] ;
|
||
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- F U N C T I O N P R O T O T Y P E
|
||
----------------------------------------------------------------------------*/
|
||
|
||
/*****各通道***ADC原始的***/
|
||
|
||
void adc_callback(void *device, uint32_t wpara, uint32_t lpara);
|
||
void adc_dma_callback(void *device, uint32_t wpara, uint32_t lpara);
|
||
|
||
#if 0
|
||
extern const adc_group_cfg_s g_adc_reg_channel_table[ADC_LOGIC_CHANNEL_REG_MAX];
|
||
extern const adc_group_cfg_s g_adc_inj_channel_table[ADC_LOGIC_CHANNEL_INJ_MAX];
|
||
extern const ADC_ConfigType g_adc_config_table ;
|
||
extern const DMA_ConfigType g_adc_dma_cfg_table ;
|
||
extern const CTU_ConfigType g_ctu_cfg ;
|
||
#endif
|
||
|
||
adc_voltage_t adc_manage_get_voltage(u8 id);
|
||
adc_voltage_t adc_manage_get_sbat_voltage(void);
|
||
void adc_manage_task(void);
|
||
|
||
|
||
#endif /* __ADC_CFG_H__ */
|
||
|
||
|
||
|
||
|
||
|
||
|