Files
checker_slave/source/elec_det/hardware/power.h

116 lines
3.0 KiB
C
Raw Normal View History

#ifndef __POWER_H__
#define __POWER_H__
#include "base/define.h"
#include "dac_cfg.h"
#include "adc_cfg.h"
#include "gpio_cfg.h"
#define R10_ON_Out PBout(R10_ON_Pin_Nu)
#define R10_SW_ON R10_ON_Out=1
#define R10_SW_OFF R10_ON_Out=0
#define R510_ON_Out PBout(R510_ON_Pin_Nu)
#define R510_SW_ON R510_ON_Out=1
#define R510_SW_OFF R510_ON_Out=0
#define R100_ON_Out PCout(R100_ON_Pin_Nu)
#define R100_SW_ON R100_ON_Out=1
#define R100_SW_OFF R100_ON_Out=0
#define POWER_DEF_V 60
typedef enum{
R510_0uA_32uA_UC = (uint8_t)0,//x201
R510_0uA_580uA_MC = (uint8_t)1,//x11
R100_0uA_160uA_UC = (uint8_t)2,//x201
R100_0p2mA_3mA_MC = (uint8_t)3,//x11
R10_0p1mA_1p6mA_UC = (uint8_t)4,//x201
R10_2mA_30mA_MC = (uint8_t)5,//x11
Current_Max = (uint8_t)6,
Current_SampleR_OFF = (uint8_t)9,
} CurrentSample_Range_eu;
typedef struct {
uint16_t V_LAH;
uint16_t V_LAM;
uint16_t V_LAH_DAC;
uint16_t V_LAM_DAC;
}PowerInfo_st;
/*
@brief 线
*/
uint32_t Power_GetBousV(void);
/*
@brief
*/
uint32_t Power_GetHPowerV(void);
/*
@brief
*/
uint32_t Power_GetMPowerV(void);
/*
@brief 1.2V电压对应的AD
*/
uint32_t Power_GetBaseVAD(void);
//获取总线电流
uint32_t Power_GetCurrent(void);
//根据电流大小的范围,设置采样电阻
CurrentSample_Range_eu Power_SetSampleCurrentRange(CurrentSample_Range_eu range) ;
#define CurrentSampleR_Def Power_SetSampleCurrentRange(Current_Max);
/*
@brief AD采样配置
*/
CurrentSample_Range_eu Power_SetSampleRange_Seep(CurrentSample_Range_eu range , uint32_t speed);
//检测方案,上电充能采样电阻
#define Checker_PowerOn_Sample_R R100_0p2mA_3mA_MC
#define Checker_OnLine_Sample_R R100_0uA_160uA_UC
#define Checker_MonitorBuf_Sample_R R100_0p2mA_3mA_MC
#define JQChecker_ChgEnger_Sample_R R100_0p2mA_3mA_MC
#define XTChecker_ChgEnger_Sample_R R10_2mA_30mA_MC
//模块通信采样电阻
#define XTDriver_Sample_R R10_2mA_30mA_MC
#define JQDriver_Sample_R R10_2mA_30mA_MC
//电压调节的关系为线性函数
void PowerCalibration(PowerInfo_st* info_st);
//设置总线电压
void PowerSetVoltage(PowerInfo_st* info_st);
//获取当前电压配置值
void PowerGetSet(PowerInfo_st* info_st);
/*
@brief 线
@param h_v/10
@param m_v/10
@rtv 0 1
*/
uint8_t PowerCalibration_set(uint16_t h_v,uint16_t m_v);
/*
@brief ADC值转换为电压值
@param1 ul_adv AD原始值
@rtv AD采集到的电压值 1000000
*/
uint32_t Power_ADVGetCalVal_106(uint16_t ul_adv);
/*
@brief 线
@rtv 0
*/
uint8_t PowerCalPrapare(void);
/*
@brief adc
@param adv adc
@param rang
@rtv uint32_t 0.1uA
*/
uint32_t Power_ConvCur(uint16_t adv,CurrentSample_Range_eu range);
#endif