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