IP2315 应用笔记

news/2025/1/15 15:05:50/

随着电子产品的不断发展,人们对于电子产品充电的速度要求越来越高,今年刚好有个项目用到了IP2315,回顾后整理了一下


一、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,发送nACKuint8_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();//发送nACKelseIIC_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充电相对来说是很快,自动识别充电协议,高输出的同时不会把充电器拉死


http://www.ppmy.cn/news/723550.html

相关文章

C++中typedef和typedef struct的区别

该文只是对以下原文中C部分单独进行了归纳&#xff0c;原文地址&#xff1a;https://blog.csdn.net/shanshanhi/article/details/52268167 typedef是类型定义的意思 &#xff08;1)struct Student struct Student{ int a; }stu1; //stu1是结构体变量 使用时只需通过st…

MapstructPlus的快速集成

https://www.mapstruct.plus/https://www.mapstruct.plus/ # 博主技术栈如下 springboot:2.4.5 lombok:1.8.20 mapstruct-plus:1.3.4 knife4j:4.0.0目录 一、添加依赖&#xff08;谨防依赖冲突&#xff09; 二、如果依赖下不下来&#xff0c;要在maven的setting文件中加入腾讯…

转-云计算、大数据和人工智能的科普类文件

作者&#xff1a; 刘超 www.cnblogs.com/popsuper1982/p/8505203.html 原标题&#xff1a;不是技术也能看懂云计算&#xff0c;大数据&#xff0c;人工智能 我今天要讲这三个话题&#xff0c;一个是云计算&#xff0c;一个大数据&#xff0c;一个人工智能&#xff0c;我为什么要…

通俗易懂的讲:云计算、大数据和人工智能

文章转自&#xff1a; 刘超的通俗云计算 https://www.cnblogs.com/popsuper1982/p/8505203.html 我今天要讲这三个话题&#xff0c;一个是云计算&#xff0c;一个大数据&#xff0c;一个人工智能&#xff0c;我为什么要讲这三个东西呢&#xff1f;因为这三个东西现在非常非常的…

浅谈云计算,大数据和人工智能

原文链接&#xff1a; https://www.cnblogs.com/popsuper1982/p/8505203.html 我今天要讲这三个话题&#xff0c;一个是云计算&#xff0c;一个大数据&#xff0c;一个人工智能&#xff0c;我为什么要讲这三个东西呢&#xff1f;因为这三个东西现在非常非常的火&#xff0c;它们…

周鸿祎力荐|纽约客16000字重磅刊文:区块链是回归互联网本质的唯一希望

奇虎360创始人周鸿祎曾在朋友圈表示&#xff1a;迄今我认为说的最深入浅出最明明白白的一篇文章&#xff0c;没有大道理&#xff0c;没有空洞的口号&#xff0c;没有吓唬人的概念&#xff0c;这才是学习区块链技术最需要的基础。 来源&#xff1a;《纽约客》杂志 本文首发于机器…

jmeter性能测试重要指标以及性能结果分析

目录 一、Aggregate Report 是jmeter常用的一个 Listener&#xff0c;中文被翻译为“聚合报告 二、描述性统计与性能结果分析 总结&#xff1a; 一、Aggregate Report 是jmeter常用的一个 Listener&#xff0c;中文被翻译为“聚合报告 如果大家都是web应用的性能测试例如只…

区块链是回归互联网本来意义的唯一希望

区块链就是未来&#xff0c;也是一种回到互联网本来意义的方式。 这组词序并没有任何意义&#xff0c;真正让它们有价值的地方在于&#xff0c;这个词序是由一个被称为 MetaMask 的软件专门为我一个人生产的。 用密码学&#xff08;cryptography&#xff09;术语表达&#xff0…