182 lines
6.2 KiB
C
182 lines
6.2 KiB
C
/** ##########################################################################
|
||
** Filename :
|
||
** Project :
|
||
** Module :
|
||
** Processor :
|
||
** Version : 1.0
|
||
** 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--- --修改--
|
||
|
||
** #########################################################################*/
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- I N C L U D E F I L E S
|
||
----------------------------------------------------------------------------*/
|
||
#include "cpu.h"
|
||
#include "gpio.h"
|
||
#include "adc.h"
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- D E F I N E S / M A C R O S
|
||
----------------------------------------------------------------------------*/
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- T Y P E D E F I N I T I O N S
|
||
----------------------------------------------------------------------------*/
|
||
typedef struct
|
||
{
|
||
u16 system_voltage ; //bat 转换成总电压值
|
||
u16 md_voltage;
|
||
u16 channel[ADC_LOGIC_MANAGE_CHANEL_MAX];
|
||
}adc_manage_s;
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- S T A T I C V A R I A B L E S
|
||
----------------------------------------------------------------------------*/
|
||
static adc_manage_s g_adc_manage;
|
||
|
||
/*---------------------------------------------------------------------------
|
||
* G L O B A L V A R I A B L E S
|
||
----------------------------------------------------------------------------*/
|
||
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- C O N S T A N T S
|
||
----------------------------------------------------------------------------*/
|
||
//倒序--原来底层根据通道的大小值排的 FL_ADC_INTERNAL_VREF1P2 排第一,FL_ADC_EXTERNAL_CH15排第二,以此类推
|
||
const u32 g_adc_drv_channel[ADC_LOGIC_CHANNEL_MAX] =
|
||
{
|
||
FL_ADC_INTERNAL_VREF1P2,
|
||
//ADC_CHANNEL_4_PHY_ID,
|
||
//ADC_CHANNEL_3_PHY_ID,
|
||
ADC_CHANNEL_0_PHY_ID,
|
||
ADC_CHANNEL_1_PHY_ID,
|
||
ADC_CHANNEL_6_PHY_ID,
|
||
ADC_CHANNEL_8_PHY_ID,
|
||
ADC_CHANNEL_2_PHY_ID,
|
||
ADC_CHANNEL_5_PHY_ID,
|
||
ADC_CHANNEL_7_PHY_ID,
|
||
};
|
||
|
||
/* ADC 时钟设置 */
|
||
const FL_ADC_CommonInitTypeDef g_ADC_CommonInitStruct =
|
||
{
|
||
FL_CMU_ADC_CLK_SOURCE_RCHF, /** ADC工作时钟源选择 */
|
||
FL_ADC_CLK_PSC_DIV8, /** ADCCLK预分频配置 */
|
||
FL_ADC_REF_SOURCE_VDDA, /** ADC基准源选择 */
|
||
FL_ADC_BIT_WIDTH_12B /** ADC数据位选择 */
|
||
};
|
||
|
||
const FL_ADC_InitTypeDef g_ADC_InitStruct =
|
||
{
|
||
#if ADC_ENABLE_DMA_MODE == 0u
|
||
FL_ADC_CONV_MODE_SINGLE, /** 连续转换模式配置 */
|
||
#else
|
||
FL_ADC_CONV_MODE_CONTINUOUS, /** 连续转换模式配置 */
|
||
#endif
|
||
FL_ADC_SINGLE_CONV_MODE_AUTO, /** 单次自动转换模式配置 */
|
||
FL_DISABLE, /** 等待模式配置 */ //DMA必须关闭
|
||
FL_ENABLE, /** 覆盖模式配置 */
|
||
FL_ADC_SEQ_SCAN_DIR_BACKWARD, /* 通道正序扫描 */ //倒序,是想先采集1.2v //FL_ADC_SEQ_SCAN_DIR_FORWARD
|
||
FL_ADC_TRIGGER_EDGE_NONE, /** 触发信号使能配置 */
|
||
FL_ADC_TRGI_LUT0, /** 触发源选择 */
|
||
FL_ADC_FAST_CH_SAMPLING_TIME_2_ADCCLK, /** 快速通道采样时间配置 */
|
||
FL_ADC_SLOW_CH_SAMPLING_TIME_192_ADCCLK, /** 慢速通道采样时间配置 */
|
||
FL_ENABLE, /* 过采样打开 */
|
||
FL_ADC_OVERSAMPLING_MUL_8X, /** 过采样率配置 */ /* 8倍过采样 */
|
||
FL_ADC_OVERSAMPLING_SHIFT_3B, /** 过采样移位配置 */ /* 数据右移, /8 */
|
||
};
|
||
|
||
/*---------------------------------------------------------------------------
|
||
- F U N C T I O N P R O T O T Y P E
|
||
----------------------------------------------------------------------------*/
|
||
|
||
|
||
/*---------------------------------------------------------------------------
|
||
|Prototype :
|
||
|Called by :
|
||
|Preconditions :
|
||
|Input parameters :
|
||
|Output parameters :
|
||
|Return value :
|
||
|Description :
|
||
----------------------------------------------------------------------------*/
|
||
void adc_manage_task(void)
|
||
{
|
||
u16 l_voltage;
|
||
|
||
l_voltage = adc_get_voltage_value(ADC_LOGIC_CHANNEL_VBAT);
|
||
g_adc_manage.system_voltage = l_voltage*ADC_SBAT_COEFFICIENT_DIV + ADC_SBAT_DIODE_DIFF;//+ 700u; //mv 三极管
|
||
|
||
//g_adc_manage.system_voltage += 700; //mv 三极管
|
||
//电机反馈
|
||
//l_voltage = adc_get_voltage_value(ADC_LOGIC_CHANNEL_AD_MD);
|
||
//g_adc_manage.md_voltage = l_voltage;
|
||
|
||
//AD4-物理AN3, S14,S15
|
||
//g_adc_manage.channel[ADC_LOGIC_MANAGE_CHANEL_1] = adc_get_voltage_value(ADC_LOGIC_CHANNEL_AD4);
|
||
//AD3,物理AN2, S12,S13
|
||
g_adc_manage.channel[ADC_LOGIC_MANAGE_CHANEL_1] = adc_get_voltage_value(ADC_LOGIC_CHANNEL_AD3);
|
||
//AD2,物理AN1, S10,S11
|
||
g_adc_manage.channel[ADC_LOGIC_MANAGE_CHANEL_2] = adc_get_voltage_value(ADC_LOGIC_CHANNEL_AD2);
|
||
//AD1,物理AN0, S8,S9
|
||
g_adc_manage.channel[ADC_LOGIC_MANAGE_CHANEL_3] = adc_get_voltage_value(ADC_LOGIC_CHANNEL_AD1);
|
||
//AD7,物理AN5,S4 S3 S1
|
||
g_adc_manage.channel[ADC_LOGIC_MANAGE_CHANEL_4] = adc_get_voltage_value(ADC_LOGIC_CHANNEL_ADRH);
|
||
|
||
//AD5 温度
|
||
g_adc_manage.channel[ADC_LOGIC_MANAGE_CHANEL_5] = adc_get_voltage_value(ADC_LOGIC_CHANNEL_NTC);
|
||
|
||
//AD7,SNS
|
||
g_adc_manage.channel[ADC_LOGIC_MANAGE_CHANEL_6] = adc_get_voltage_value(ADC_LOGIC_CHANNEL_SNS);
|
||
|
||
}
|
||
|
||
/*---------------------------------------------------------------------------
|
||
|Prototype :
|
||
|Called by :
|
||
|Preconditions :
|
||
|Input parameters :
|
||
|Output parameters :
|
||
|Return value :
|
||
|Description :
|
||
----------------------------------------------------------------------------*/
|
||
adc_voltage_t adc_manage_get_sbat_voltage(void)
|
||
{
|
||
|
||
return g_adc_manage.system_voltage;
|
||
|
||
}
|
||
|
||
/*---------------------------------------------------------------------------
|
||
|Prototype :
|
||
|Called by :
|
||
|Preconditions :
|
||
|Input parameters :
|
||
|Output parameters :
|
||
|Return value :
|
||
|Description :
|
||
----------------------------------------------------------------------------*/
|
||
adc_voltage_t adc_manage_get_voltage(u8 id)
|
||
{
|
||
adc_voltage_t l_result =0u;
|
||
if(id<ADC_LOGIC_MANAGE_CHANEL_MAX)
|
||
{
|
||
l_result = g_adc_manage.channel[id];
|
||
}
|
||
return l_result;
|
||
}
|
||
|
||
/* [] END OF FILE */
|