大家好,欢迎来到IT知识分享网。
随着电子产品的不断发展,人们对于电子产品充电的速度要求越来越高,今年刚好有个项目用到了IP2315,回顾后整理了一下
一、IP2315是什么?
是一款集成
MOS
和输入快充协议的高效同步降压转换充电 IC
。
1.用于单节锂电池的充电IC
单节锂电池同步开关降压 4.8A 充电 IC
具体说明直接上图了
这里我以4.2V为满电电压, 应用电路按推荐电路设计 如下:
IP2315的NTC温度保护需要根据自己项目需求配置对应电阻 ,根据推荐的参数如下
IP2315
集成
NTC
温度保护功能,配合
NTC
热敏电阻,当检测到温度在
0~55
度范围内时正常充电;当温 度高于 45
度或低于
0
度时,停止充电。
电阻是可以根据实际项目需求调整的,由于实际项目PCB板太小,散热问题不好解决,而且对实际产品影响不大,NTC功能直接删减掉了
IP2315是可以通过硬件和软件控制充电电流的,这个也是为了保护电池,因为有些电池承受不来大电流,且过载会减少电池寿命,早期的时候是直接调节外部电阻来控制电流,
测试是是外接的200K电阻 接到IP2315的27脚 ICHGSET
手册说的3000mA 根据实际情况会有所耗损 比如接电池的电源线的长度和大小
外置电阻控制存在一个问题 就是 5V的时候 9V 和12V的时候对应的充电功率是不一样的
以理想充电电流3000mA 5V时 最高15W 9V时最高27W 12V时最高36W
客户要求12V时电流调小,这个时候就遇到问题了,硬件控制的都是统一的不管你多少V电流最大都是3000mA ,如果调小会导致整体充电电流变小,这时候没办法了,只能用软件IIC发协议来工作充电电流和开关了
首先看一下介绍
有关IIC介绍参考:【通信协议】IIC通信协议详解_狂飙的笨牛的博客-CSDN博客_iic通信协议
相关操作如下
#define I2C_SCL RA1 //I2C SCL引脚 #define I2C_SDA RA0 //I2C SDA引脚 #define I2C_SCL_IO TRISA1 #define I2C_SDA_IO TRISA0 #define POWER_SCL(n) n?(RA0 = 1):(RA0 = 0) #define POWER_SDA(n) n?(RA1 = 1):(RA1 = 0) #define SDA_Read RA1 #define IP2315_ADDRESS (0xea>>1) //IP2315地址写地址 #define IP2315_ADDRESS1 (0xeb>>1) //IP2315地址读地址 #define SetIIC (~(0x38)&0x38) static void SDA_OUT(void) { TRISA1 = 0; } static void SDA_IN(void) { TRISA1 = 1; } void IIC_Start(void) { SDA_OUT(); POWER_SCL(0); SysDelay_us(2); POWER_SDA(1); SysDelay_us(2); POWER_SCL(1); SysDelay_us(2); POWER_SDA(0); SysDelay_us(2); POWER_SCL(0); SysDelay_us(2); } void IIC_Stop(void) { SDA_OUT(); POWER_SCL(0); SysDelay_us(2); POWER_SDA(0); SysDelay_us(2); POWER_SCL(1); SysDelay_us(2); POWER_SDA(1); SysDelay_us(2); } //等待应答 unsigned char IIC_WaitAck(void) { unsigned char Time_Out=0; SDA_IN(); SysDelay_us(4); POWER_SCL(1);SysDelay_us(2); while(SDA_Read){ Time_Out++; SysDelay_us(2); if(Time_Out>5){ IIC_Stop(); return 0; } } SDA_OUT(); POWER_SDA(0);SysDelay_us(2); return 1; } //发送应答 void IIC_SendACK(void) { SDA_OUT(); POWER_SDA(0);SysDelay_us(2); SysDelay_us(2); POWER_SCL(1);SysDelay_us(2); POWER_SCL(0);SysDelay_us(2); } //不使用ACK应答 void IIC_SendNoAck(void) { SDA_OUT(); POWER_SDA(1);SysDelay_us(2); POWER_SCL(1);SysDelay_us(2); POWER_SCL(0);SysDelay_us(2); } //IIC发送一个字节 void IIC_SendByte(unsigned char Byte) { unsigned char i; for(i=0;i<8;i++){ POWER_SCL(0);SysDelay_us(2); POWER_SDA((Byte&0x80)>>7); SysDelay_us(4); Byte<<=1; SysDelay_us(4); POWER_SCL(1); SysDelay_us(2); } POWER_SCL(0); SysDelay_us(2); } //写一个字节 uint8_t IP2315_Write_Byte(uint8_t reg,uint8_t data) { WDT_FEED(); IIC_Start(); IIC_SendByte((IP2315_ADDRESS<<1)|0);//发送器件地址 IIC_WaitAck(); IIC_SendByte(reg); IIC_WaitAck(); IIC_SendByte(data); IIC_WaitAck(); IIC_Stop(); return 0; } uint8_t IP2315_Byte(uint8_t reg) { uint8_t res; IIC_Start(); IIC_SendByte((IP2315_ADDRESS<<1)|0);//发送器件地址 IIC_WaitAck(); IIC_SendByte(reg); IIC_WaitAck(); IIC_Start(); IIC_SendByte((IP2315_ADDRESS<<1)|1);//发送器件地址 IIC_WaitAck(); res=IIC_Read_IP2315_Byte(0); IIC_Stop(); return res; } //IP2315读1个字节,ack=1时,发送ACK,ack=0,发送nACK uint8_t IIC_Read_IP2315_Byte(unsigned char ack) { unsigned char R_Data = 0; IIC_Start(); IIC_SendByte((IP2315_ADDRESS<<1)|0);//发送器件地址 IIC_WaitAck(); IIC_SendByte(ack); IIC_WaitAck(); IIC_Start(); IIC_SendByte((IP2315_ADDRESS1<<1)|1);//发送器件地址 IIC_WaitAck(); R_Data = IIC_Read_Byte1(0); IIC_SendNoAck(); IIC_Stop(); return R_Data; } //读1个字节,ack=1时,发送ACK,ack=0,发送nACK uint8_t IIC_Read_Byte1(unsigned char ack) { unsigned char i,receive=0; SDA_IN();//SDA设置为输入 for (i = 0; i < 8; i++) { POWER_SCL(0); SysDelay_us(2); POWER_SCL(1); receive <<= 1; if (SDA_Read==1) receive++; SysDelay_us(2); } if (!ack) IIC_SendNoAck();//发送nACK else IIC_WaitAck(); //发送ACK return receive; } // IP2315_Write_Byte(0X1E,SetIIC);//通过寄存器控制充电电流 IP2315_Write_Byte(0x01,0x00);//关闭充电使能 IP2315_Write_Byte(0x01,0x01);//开启充电使能 IP2315_Write_Byte(0X26,61);//设置5V 1.5A IP2315_Write_Byte(0X29,61);//设置9V 1.5A IP2315_Write_Byte(0X2A,61);//设置12V 1.5A IIC_Read_IP2315_Byte(0XC7);//读电池是否充满
总结
总的来说这款充电IC充电相对来说是很快,自动识别充电协议,高输出的同时不会把充电器拉死
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/141508.html