bq25703电源管理芯片电池充放电管理快充芯片PD充电宝芯片

序言:

    写这篇博客的主要原因是因为公司的产品涉及到电池充放电管理,而且充电电压和电池电压可能会有多种组合,针对这种设计需求,发现目前流行的PD快充协议正好是多级电压,所以在TI支持PD快充的芯片中选择支持多节电池充放电管理的芯片。基于上述原因,选择了国内比较容易买到,价格也适中的bq25703。

    从了解芯片到Demo板调试基本完成,林林总总共历时大约1个月,整理成博客也是为了日后有个参考。

    好了,不多说,踩坑的日志开始~

涉及到的链接:

 

介绍bq25703:

官方的介绍大家可以参考芯片的DataSheet,我就不复制粘贴了,重点功能如下:

  1. 支持1~4节锂电池充电,或者其他自定义充电电压(1.024V~19.2V),自定义充电电流(0.064A~8.128A);
  2. 支持3.5V~24V宽电压输入
  3. 无论是否充电状态,都可以向系统提供自定义电压(这里有坑,后面会说);
  4. 可以反过来向输入接口输出自定义电压(OTG功能),所以常被用来做快充充电宝电源管理芯片(这里有坑,后面会说)
  5. 充放电等详细设置均通过内部寄存器的配置完成,使用I2C与控制芯片通讯

知道基本功能,下面介绍如何实现这些功能,附上Demo板的原理图截图,后面的设计都会根据这个图来介绍:

 

这个图和DataSheet中的推荐应用图完全一样(事实上也没有自由发挥的空间 (0.0))

简单介绍一下核心芯片bq25703外围电路的主要功能:

  • P1为电源输入口,支持3.5V~24V宽电压输入,一般接在TYPE-C的接口上,负责充电时的输入和OTG时的输出
  • R14是自己放置的采样电阻,后面加上运放后,目的是为了用单片机ADC功能呢获取到充/放电的电流大小和方向
  • ACP与ACN中间的采样电阻是BQ25703要求的,也是为了采集充放电电流,但实际似乎没有输出(后面详解)
  • Q1,Q2,Q3,Q4和L3共同组成BUCK-BOOST升降压电路,也是整个电路的核心,所以电感的电流尽可能选择的大一点,当然尺寸也要考虑在内,做Demo板当然无所谓尺寸,但是日后设计成形产品时,为了能够整体散热,能够让导热硅胶尽可能贴合MOS、芯片、电感,最终电感的选型肯定是尽可能的薄
  • SYS这个地方就是为整个系统提供自定义电压的地方,如果是在笔记本或者平板当中使用,就是为整个主板供电的地方
  • BAT+就是接电池正极的地方,可以是1~4节锂电池,也可以是特殊电压
  • R20采样电阻就是BQ25703检测电池充放电电流的地方
  • R23+R24就是负责在电路中设置为几节锂电池充电,具体的设置方法后面会说,图上的配置是为两节电池(8.4V)充电

 

电池保护部分:

因为Demo板的设计采用了18650电池,而且是无保护板的18650,所以需要DW01KA+两个SC8205S的NMOS作为保护。

实际上,这样的保护板常常出现在锂聚合物电池上,那个跟买来的电池总是包在一起的小小的条状保护板,基本都是类似的设计,这样的设计可以实现:

  • 防止过充,电池电压上升超过4.3V就会断开电流流入电池的通路以阻止继续充电,但是放电依然畅通
  • 防止过放,电池电压低于3.5V就会断开电流流出的通路,但是充电通路畅通
  • 防止过流,在电流超过2A就会断开电流流出通路,然后很快恢复,继续检测是否过流,反复如此

各部分电压电流检测,由单片机内部ADC采样完成,又快又准:

从上到下依次是:

  • 外部接入的电流大小及方向检测
  • 外部接入电压检测
  • 电池电压检测
  • 电池充放电电流大小及方向检测

Q:电流检测在第二级运放的同相输入端为什么要接偏置电阻?

A:因为单片机的ADC只能检测0-5V,如果没有偏置电阻,那么至少有一个方向的电流是检测不到大小的,除非增加一路采样和运放,成本增加不说,还要多一路AD采样,编程和处理都会复杂;而且电流检测不需要太高精度,偏置后,两个方向都可以检测到电流大小,编程也方便

Q:为什么电压采样还要用运放,而且是直接电压跟随,并没有放大?

A:这里的运放主要起到保护作用,单片机ADC引脚最高输入不能超过5V,否则有击穿风险,所以用运放隔离了采样电压,保护芯片

上位机通讯部分:

采用CH340C作为与上位机通讯的串口,是因为外部电路太简单(只有一个电容),没有晶振,没有容易摔坏的风险

主控芯片:

主控芯片用的是新唐的NUC029单片机,采用ARM-M0构架,50MHz主频,64K编程空间,支持串口升级,内部EEPROM

软件部分:

    bq25703这款芯片大部分功能都要通过I2C通讯,修改内部寄存器才能实现,所以务必需要至少一颗逻辑控制芯片负责通讯。

如果没有主控芯片,就连最基本的充电功能都无法实现(充电电流为0)

I2C的通信形式是标准,在网上有资料,大部分单片机也自带I2C接口,直接配置单片机寄存器就可以完成通讯

这里简单介绍一下通过I2C是如何控制bq25703

指令有两类:按地址写入数据,按地址读取数据

按地址写入数据:  开始→写地址+0→从机应答→写寄存器地址→从机应答→写寄存器数据→从机应答→结束

按地址读取数据: 开始→写地址+0→从机应答→写寄存器地址→从机应答→ 再次开始→写地址+1→从机应答→读取寄存器数据                                 →结束

读取数据都是一次一个地址读取的,写入数据大部分都是直接一次一个地址写入,但是如下4个寄存器,需要一次写入两个地址,而且必须遵循先写小端,再写大端的形式,且必须在一次I2C通讯中完成,通讯顺序如下:

开始→写地址+0→从机应答→写寄存器基址(偶数地址)→从机应答→ 写低位寄存器数据→从机应答→写高位寄存器数据→从机应  答→结束

需要这样操作的特殊寄存器如下:

  • ChargeCurrent(0x02,0x03)充电电流
  • MaxChargeVoltage(0x04,0x05)充满电压
  • OTGVoltage(0x06,0x07)反向供电电压
  • InputVoltage(0x0a,0x0b)最小输入电压
     

详细的寄存器表在DataSheet里有详细说明

上位机软件配合调试:

因为为大量的寄存器需要配置,那么如果每次试验数据都是使用串口调试,不够直观,也不够方便。

在TI官网上发现一个这个软件,是IT官方制作的,支持全系列芯片的寄存器管理软件,为什么我不用这个软件而是自己写呢?因为这个软件需要配套一个调试工具,类似烧录器,已经做好的调试板在官网也有,但是价格实在比较感人,最终决定自己写上位机软件,配合单片机,自己定的协议进行调试,所以这个工具用上,但是可以用来参考

 

自己做的开发板使用CH340C串口转USB设备,通过USB线与电脑相连,在系统中识别为CH340设备

通过串口调试工具,测试进行测试,确定所有寄存器都可以写入并且读取到对应的值,那么就开始上位机的编写

其实编写图形化软件,作为一个软件小白,似乎VB,MFC,QT等才是最优先的选择,但是,既然都是从头开始,为什么不选一个更加大胆的选择呢?

最终决定使用 Electron 开发上位机软件,效果如下

左侧可以看到所有的寄存器都被显示在表格里,而且通过颜色区别出当前的状态,点击可以改变寄存器的数值,实测下来方便了很多

实际调试:

那么硬件软件都准备好了,就开始激动人心的测试吧~

我这边的硬件测试环境除了Demo板以外,还有一个DC-DC的升降压可调模块作为输入,用来模拟DP快充的多级电压

插上电池 插上供电 调整输入为12V 插入上位机USB线 看到调试工具红红绿绿的小方块一个一个出现时,成就感还是很高的

紧接着发现充电电流是0A,VSYS为7.6V(与电池电压相同),电池也没有输入和输出电流

拔掉电池后,VSYS输出为6.14V

 

 

<think>好的,我现在需要帮助用户了解如何在STM32微控制器上外接电池以实现供电的设计方案。首先,我需要回顾用户提供的引用内容,看看有没有相关的信息可以直接使用。 用户提到了引用[2]和引用[4],其中引用[2]涉及STM32单片机智能多通道手机锂电池无线充电器设计,提到了锂电池充电模块电路和电源电路。引用[4]则提到了锂电池平衡充电电路和BQ25703ARSNR充电管理芯片的使用,以及USB PD协议。这些信息都和外接电池供电有关,需要整合到回答中。 接下来,我需要考虑STM32外接电池供电的几个关键方面: 1. **电池选型**:常用的电池类型如锂电池,可能需要考虑电压范围,比如3.7V的锂离子电池,或者多节串联的情况。这里用户提到的引用[2]和[4]都涉及锂电池,所以应该重点讨论锂电池的应用。 2. **电压转换与稳压**:STM32通常需要3.3V的稳定电压。电池的电压可能高于或低于这个值,所以需要稳压电路,比如LDO或DC-DC转换器。例如,引用[2]中的电源电路可能包含这样的稳压模块。 3. **充电管理**:如果电池需要充电充电管理芯片是必须的。引用[4]提到了BQ25703ARSNR芯片,这是一个锂电池充电管理芯片,支持协议,适合用于充电管理部分。需要解释如何通过单片机控制充电逻辑,比如使用I2C接口与STM32通信。 4. **电源路径切换**:在电池供电和外接电源之间切换可能需要继电器或MOSFET电路,如引用[2]中的继电器电路。需要说明如何设计这部分电路以实现无缝切换。 5. **低功耗设计**:为了延长电池寿命,STM32的低功耗模式(如Stop模式)需要被利用。用户可能希望了解如何配置这些模式,以及如何通过软件控制外设的电源管理。 6. **监测与保护**:电池电压监测可以通过ADC模块实现,过、过放保护电路也是必要的,可能涉及硬件保护芯片或软件保护逻辑。引用[4]提到的平衡充电电路可能与此相关。 现在需要将上述方面组织成一个结构清晰的回答,并引用用户提供的参考文献中的相关部分。例如,在充电管理部分引用[4],在电源切换部分引用[2]。 此外,用户要求生成相关问题,需要根据回答内容提出相关问题,例如关于具体芯片的使用、低功耗配置、电路设计细节等。 最后,确保回答符合格式要求,使用正确的中文表达,LaTeX公式格式正确,引用标识自然添加在段落末尾。</think>在STM32微控制器上设计外接电池供电方案,需综合考虑电池选型、电压转换、充电管理和低功耗优化等环节。以下是具体实现步骤与技术要点: --- ### 一、电池选型与特性分析 1. **锂电池应用** 常用$3.7\text{V}$锂离子电池(如18650或聚合物电池),满电电压可达$4.2\text{V}$,放电截止电压$3.0\text{V}$。多节电池串联需搭配平衡充电电路(如引用[4]中锂电池平衡充电方案)[^4]。 2. **电压适配要求** STM32主控芯片工作电压为$1.8\text{V}-3.6\text{V}$(典型$3.3\text{V}$),需通过稳压电路将电池电压转换为系统电压。 --- ### 二、电源转换与稳压设计 1. **LDO线性稳压方案** 对低功耗场景,使用低压差稳压芯片(如AMS1117-3.3),输入电压范围$4.2\text{V}-2.5\text{V}$,输出稳定$3.3\text{V}$。 $$V_{out} = 3.3\text{V}, \quad I_{max} \leq 1\text{A}$$ 2. **DC-DC降压方案** 高能效场景采用开关稳压器(如LM2596),支持宽输入电压(如$5\text{V}-12\text{V}$),效率可达$85\%$以上。 --- ### 三、电池充电管理实现 1. **充电芯片集成** 使用专用芯片BQ25703ARSNR(引用[4]),支持USB PD协议,可通过STM32的I²C接口配置充电参数(电压/电流)[^4]。 ```c // 示例:I²C配置充电电流 HAL_I2C_Mem_Write(&hi2c1, BQ25703_ADDR, REG_CHARGE_CURRENT, I2C_MEMADD_SIZE_8BIT, &current_setting, 1, 100); ``` 2. **电源路径切换** 通过继电器或MOSFET实现外部电源与电池的自动切换(如引用[2]中继电器电路设计)[^2]。 --- ### 四、低功耗优化策略 1. **STM32电源模式控制** 启用低功耗模式(如Stop模式),关闭未使用的外设时钟: ```c HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); ``` 2. **动态电压调节** 通过PWR_MODE引脚调整内核电压(仅限支持动态电压调节的型号)。 --- ### 五、监测与保护电路 1. **电池电压监测** 使用STM32内置ADC采集电池电压: $$V_{bat} = \frac{ADC_{value} \times V_{ref}}{4096} \times (R1+R2)/R2$$ 2. **硬件保护机制** 添加DW01A芯片实现过/过放保护,或通过软件阈值触发关断(如引用[4]中的保护逻辑)。 --- ### 六、参考设计框架 ```plaintext 电池组 → 保护电路 → 充电管理芯片 → DC-DC/LDO → STM32 ↑ ↑ |———STM32控制———| ```
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值