//*********************************************************************************** // Ver 1.0 // 2020.04.18 1、新建文件。 //*********************************************************************************** #ifndef __SP1268__H #define __SP1268__H //*********************************************************************************** #define SP1268_GpioInit() do{ \ SP1268_CeInit(); \ SP1268_DirInit(); \ SP1268_PgInit(); \ }while(0) //SP1268 CE控制,低电平使能,PB9 #define SP1268_CeInit() GPIO_Init(GPIOB, GPIO_Pin_9, 1, IO_OUT) #define SP1268_CeHigh() GPIO_SetBit(GPIOB, GPIO_Pin_9) #define SP1268_CeLow() GPIO_ClrBit(GPIOB, GPIO_Pin_9) //SP1268 DIR控制,低电平对电池充电模式,高电平工作在OTG模式,未使用,PB5 #define SP1268_DirInit() GPIO_Init(GPIOB, GPIO_Pin_5, 0, IO_OUT) #define SP1268_ChargerMode() GPIO_ClrBit(GPIOB, GPIO_Pin_5) #define SP1268_OtgMode() GPIO_SetBit(GPIOB, GPIO_Pin_5) //SP1268PG检测,电量显示用,高电平电压输出正常,PB8 #define SP1268_PgInit() GPIO_Init(GPIOB, GPIO_Pin_8, 1, IO_IN_PU) #define SP1268_PgRead() KEY_WriteFlag(PG, New, (!GPIO_ReadPin(GPIOB, GPIO_Pin_8))) #define SP1268_PgIntInit(NewState) GPIO_IrqInit(GPIOB, GPIO_Pin_8, GpioIrqFalling, NewState) #define SP1268_ReadPgFlag() GPIO_GetIrqStatus(GPIOB, GPIO_Pin_8) #define SP1268_ClrPgFlag() GPIO_ClearIrq(GPIOB, GPIO_Pin_8) //I2C地址 #define SP1268_ADDR (0x74<<1) #define SP1268_I2cInit() I2CS_Init(I2CS1, 10000) #define SP1268_I2cReadByte(Reg, ptr,len) I2CS_ReadMultiByte(I2CS1, SP1268_ADDR, Reg, ptr, len) #define SP1268_I2cWriteByte(Reg, ptr,len) I2CS_WriteMultiByte(I2CS1, SP1268_ADDR, Reg, ptr, len) //*********************************************************************************** //寄存器地址 #define SP1268_REG_VREF 0x01 #define SP1268_REG_IVBUS 0x03 #define SP1268_REG_IOUT 0x04 #define SP1268_REG_VBUSREG 0x05 #define SP1268_REG_CTRL1 0x06 #define SP1268_REG_CTRL2 0x06 //电池端电压设置 #define SP1268_BATTV_MAX 31500 //电池充电电压最大31.5V #define SP1268_BATTV_MIN 14000 //电池充电电压最小14.0V #define SP1268_FB2_RH 560 #define SP1268_FB2_RL 24 #define SP1268_VREF_MAX 2047 #define SP1268_VREF_MIN 1 #define SP1268_FB2_GAIN ((SP1268_FB2_RL*1000UL)/(SP1268_FB2_RL+SP1268_FB2_RH)) // //输入电流配置 #define SP1268_OTGC_MAX 5000 //最充电电流5000mA #define SP1268_OTGC_MIN 100 //最小充电电流100mA #define SP1268_RCS1P 2 #define SP1268_RCS1 2 #define SP1268_RSENSE1 20 //20mR采样电阻,电压分辨率4.8mV,对应电流分辨率240mA #define SP1268_RS1_VREF 1220UL //1.22V比较电压 #define SP1268_RS1_GAIN (((SP1268_RCS1*SP1268_RSENSE1*255UL*1000UL)/(SP1268_RS1_VREF*SP1268_RCS1P))) //输出电流配置 #define SP1268_BATTC_MAX 5000 //最大放电电流5000mA #define SP1268_BATTC_MIN 100 //最小放电电流100mA #define SP1268_RCS2P 2 #define SP1268_RCS2 2 #define SP1268_RSENSE2 20 //20mR采样电阻,电压分辨率4.8mV,对应电流分辨率240mA #define SP1268_RS2_VREF 1220UL //1.22V比较电压 #define SP1268_RS2_GAIN (((SP1268_RCS2*SP1268_RSENSE2*255UL*1000UL)/(SP1268_RS2_VREF*SP1268_RCS2P))) //OTG USB端电压配置 #define SP1268_FB1_RH 200 #define SP1268_FB1_RL 10 #define SP1268_VREF_MAX 2047 #define SP1268_VREF_MIN 1 #define SP1268_FB1_GAIN ((SP1268_FB1_RL*1000UL)/(SP1268_FB1_RL+SP1268_FB1_RH)) //SR速率配置 enum { SR_0D45mV = 0, SR_0D90mV, SR_1D80mV, SR_3D60mV, }; typedef struct { INT8U REFH; INT8U REFL; INT8U ILIM1; INT8U ILIM2; INT8U REF2; INT8U CONTROL1; INT8U CONTROL2; } SP1268_Str; extern SP1268_Str SP1268_Info; #define SP1268_InfoInit() MEM_Fill((INT8U *)&SP1268_Info, 0, sizeof(SP1268_Str)) //*********************************************************************************** extern void SP1268_Init(void); extern void SP1268_VSet(INT32U Value); extern void SP1268_ISet(INT32U Value); extern void SP1268_DisChargeCurrent(INT32U Value); extern void SP1268_CrtlSr(INT8U Value); #endif