118 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #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
 | 
