Files
checker_slave/source/elec_det/hardware/power.h
2023-10-31 18:12:21 +08:00

118 lines
3.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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 EWChecker_ChgEnger_Sample_R R100_0p2mA_3mA_MC
//模块通信采样电阻
#define XTDriver_Sample_R R10_2mA_30mA_MC
#define JQDriver_Sample_R R10_2mA_30mA_MC
#define EWDriver_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