第08章 充放电控制
约 401 字大约 1 分钟
2026-07-21
8.1 充放电控制原理
通过修改 SYS_CTRL2 寄存器的 DSG_ON 和 CHG_ON 两个位来控制充放电开关:
| 位 | 说明 |
|---|---|
| CHG_ON | 0: 关闭充电;1: 开启充电 |
| DSG_ON | 0: 关闭放电;1: 开启放电 |
当检测到过压、过流、短路等故障时,BQ769芯片会自动关闭对应FET,切断充/放电回路,保护电池安全。

8.2 代码实现
App_Bat.h - 添加函数声明
/**
* @brief 充电启动和关闭
* @param is_on 1: 充电启动, 0: 充电关闭
*/
void App_Bat_Charge(uint8_t is_on);
/**
* @brief 放电启动和关闭
* @param is_on 1: 放电启动, 0: 放电关闭
*/
void App_Bat_Discharge(uint8_t is_on);App_Bat.c - 充放电控制实现
/**
* @brief 充电启动和关闭
* @param is_on 1: 充电启动, 0: 充电关闭
*/
void App_Bat_Charge(uint8_t is_on)
{
bq769_reg_group.SysCtrl2.SysCtrl2Bit.CHG_ON = is_on;
Int_BQ769_WriteReg(BQ_SYS_CTRL2, bq769_reg_group.SysCtrl2.SysCtrl2Byte);
DEBUG_PRINTLN("充电状态: %d", is_on);
}
/**
* @brief 放电启动和关闭
* @param is_on 1: 放电启动, 0: 放电关闭
*/
void App_Bat_Discharge(uint8_t is_on)
{
bq769_reg_group.SysCtrl2.SysCtrl2Bit.DSG_ON = is_on;
Int_BQ769_WriteReg(BQ_SYS_CTRL2, bq769_reg_group.SysCtrl2.SysCtrl2Byte);
DEBUG_PRINTLN("放电状态: %d", is_on);
}8.3 应用场景
充放电控制可以通过以下方式触发:
- 上位机通过Modbus RTU协议远程控制充放电开关
- 上位机通过CAN总线发送充放电控制指令
- BMS系统自动保护:检测到过压、过流、短路等故障时自动关闭
后续章节将介绍如何通过CAN通信实现远程充放电控制。
文档生成于: 2026-07-21
