/** ########################################################################## ** 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__ */