Initial Arduino library for BQ25628E I2C Battery Charger

- Add basic library structure with constructor, destructor, and begin()
- Include chip ID verification (0x22) in begin() function
- Add register address definitions for all BQ25628E registers
- Include test example sketch with basic functionality verification
- Add GitHub CI workflow and clang-format configuration
- Set up project structure following Adafruit library conventions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Limor Fried 2025-08-04 11:03:42 -04:00
commit f45c1521a4
7 changed files with 316 additions and 0 deletions

13
.clang-format Normal file
View file

@ -0,0 +1,13 @@
Language: Cpp
BasedOnStyle: Google
IndentWidth: 2
ColumnLimit: 80
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
BinPackArguments: true
BinPackParameters: true
BreakBeforeBraces: Attach
DerivePointerAlignment: false
PointerAlignment: Left
SpacesBeforeTrailingComments: 1

32
.github/workflows/githubci.yml vendored Normal file
View file

@ -0,0 +1,32 @@
name: Arduino Library CI
on: [pull_request, push, repository_dispatch]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v2
- uses: actions/checkout@v2
with:
repository: adafruit/ci-arduino
path: ci
- name: pre-install
run: bash ci/actions_install.sh
- name: clang
run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r .
- name: test platforms
run: python3 ci/build_platform.py main_platforms
- name: doxygen
env:
GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }}
PRETTYNAME : "Adafruit BQ25628E Arduino Library"
run: bash ci/doxy_gen_and_deploy.sh

48
.gitignore vendored Normal file
View file

@ -0,0 +1,48 @@
# Datasheet files
*.pdf
*.txt
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# IDE files
.vscode/
*.swp
*.swo
*~
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

75
Adafruit_BQ25628E.cpp Normal file
View file

@ -0,0 +1,75 @@
/*!
* @file Adafruit_BQ25628E.cpp
*
* @mainpage Adafruit BQ25628E I2C Battery Charger
*
* @section intro_sec Introduction
*
* This is a library for the BQ25628E I2C Battery Charger
*
* Designed specifically to work with the Adafruit BQ25628E Breakout
* ----> http://www.adafruit.com/products/
*
* Pick one up today in the adafruit shop!
*
* These chips use I2C to communicate, 2 pins are required to interface.
*
* Adafruit invests time and resources providing this open source code,
* please support Adafruit and open-source hardware by purchasing products
* from Adafruit!
*
* @section author Author
*
* Limor 'ladyada' Fried with assistance from Claude Code
*
* @section license License
*
* MIT (see license.txt)
*/
#include "Adafruit_BQ25628E.h"
/*!
* @brief Instantiates a new BQ25628E class
*/
Adafruit_BQ25628E::Adafruit_BQ25628E() {}
/*!
* @brief Cleans up the BQ25628E
*/
Adafruit_BQ25628E::~Adafruit_BQ25628E() {
if (i2c_dev) {
delete i2c_dev;
}
}
/*!
* @brief Sets up the hardware and initializes I2C
* @param i2c_addr
* The I2C address to be used.
* @param wire
* The Wire object to be used for I2C connections.
* @return True if initialization was successful, otherwise false.
*/
bool Adafruit_BQ25628E::begin(uint8_t i2c_addr, TwoWire *wire) {
if (i2c_dev) {
delete i2c_dev;
}
i2c_dev = new Adafruit_I2CDevice(i2c_addr, wire);
if (!i2c_dev->begin()) {
return false;
}
// Verify chip connection by reading part information register
Adafruit_BusIO_Register part_info_reg = Adafruit_BusIO_Register(i2c_dev, BQ25628E_REG_PART_INFORMATION);
uint8_t part_info = part_info_reg.read();
// Check for valid BQ25628E part ID (0x22)
if (part_info != 0x22) {
return false;
}
return true;
}

83
Adafruit_BQ25628E.h Normal file
View file

@ -0,0 +1,83 @@
/*!
* @file Adafruit_BQ25628E.h
*
* This is a library for the BQ25628E I2C Battery Charger
*
* Designed specifically to work with the Adafruit BQ25628E Breakout
* ----> http://www.adafruit.com/products/
*
* Pick one up today in the adafruit shop!
*
* These displays use I2C to communicate, 2 pins are required to interface.
*
* Adafruit invests time and resources providing this open source code,
* please support Adafruit and open-source hardware by purchasing products
* from Adafruit!
*
* @author Limor 'ladyada' Fried with assistance from Claude Code
* @license MIT (see license.txt)
*/
#ifndef _ADAFRUIT_BQ25628E_H
#define _ADAFRUIT_BQ25628E_H
#include "Arduino.h"
#include <Adafruit_BusIO_Register.h>
#include <Adafruit_I2CDevice.h>
/*! Default I2C address for the BQ25628E */
#define BQ25628E_DEFAULT_ADDR 0x6A
/*! Register addresses for the BQ25628E */
#define BQ25628E_REG_CHARGE_CURRENT_LIMIT 0x02
#define BQ25628E_REG_CHARGE_VOLTAGE_LIMIT 0x04
#define BQ25628E_REG_INPUT_CURRENT_LIMIT 0x06
#define BQ25628E_REG_INPUT_VOLTAGE_LIMIT 0x08
#define BQ25628E_REG_MINIMAL_SYSTEM_VOLTAGE 0x0E
#define BQ25628E_REG_PRECHARGE_CONTROL 0x10
#define BQ25628E_REG_TERMINATION_CONTROL 0x12
#define BQ25628E_REG_CHARGE_CONTROL 0x14
#define BQ25628E_REG_CHARGE_TIMER_CONTROL 0x15
#define BQ25628E_REG_CHARGER_CONTROL_0 0x16
#define BQ25628E_REG_CHARGER_CONTROL_1 0x17
#define BQ25628E_REG_CHARGER_CONTROL_2 0x18
#define BQ25628E_REG_CHARGER_CONTROL_3 0x19
#define BQ25628E_REG_NTC_CONTROL_0 0x1A
#define BQ25628E_REG_NTC_CONTROL_1 0x1B
#define BQ25628E_REG_NTC_CONTROL_2 0x1C
#define BQ25628E_REG_CHARGER_STATUS_0 0x1D
#define BQ25628E_REG_CHARGER_STATUS_1 0x1E
#define BQ25628E_REG_FAULT_STATUS_0 0x1F
#define BQ25628E_REG_CHARGER_FLAG_0 0x20
#define BQ25628E_REG_CHARGER_FLAG_1 0x21
#define BQ25628E_REG_FAULT_FLAG_0 0x22
#define BQ25628E_REG_CHARGER_MASK_0 0x23
#define BQ25628E_REG_CHARGER_MASK_1 0x24
#define BQ25628E_REG_FAULT_MASK_0 0x25
#define BQ25628E_REG_ADC_CONTROL 0x26
#define BQ25628E_REG_ADC_FUNCTION_DISABLE_0 0x27
#define BQ25628E_REG_IBUS_ADC 0x28
#define BQ25628E_REG_IBAT_ADC 0x2A
#define BQ25628E_REG_VBUS_ADC 0x2C
#define BQ25628E_REG_VPMID_ADC 0x2E
#define BQ25628E_REG_VBAT_ADC 0x30
#define BQ25628E_REG_VSYS_ADC 0x32
#define BQ25628E_REG_TS_ADC 0x34
#define BQ25628E_REG_TDIE_ADC 0x36
#define BQ25628E_REG_PART_INFORMATION 0x38
/*!
* @brief Class that stores state and functions for interacting with
* the BQ25628E I2C Battery Charger
*/
class Adafruit_BQ25628E {
public:
Adafruit_BQ25628E();
~Adafruit_BQ25628E();
bool begin(uint8_t i2c_addr = BQ25628E_DEFAULT_ADDR, TwoWire *wire = &Wire);
private:
Adafruit_I2CDevice *i2c_dev; /*!< Pointer to I2C bus interface */
};
#endif

34
README.md Normal file
View file

@ -0,0 +1,34 @@
# Adafruit BQ25628E Library [![Build Status](https://github.com/adafruit/Adafruit_BQ25628E/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_BQ25628E/actions)[![Documentation](https://github.com/adafruit/ci-arduino/blob/master/assets/doxygen_badge.svg)](http://adafruit.github.io/Adafruit_BQ25628E/html/index.html)
Arduino library for the BQ25628E I2C Battery Charger with Power Path Management
## About the BQ25628E
The BQ25628E is a 1-cell Li-Ion battery charger with power path management:
- 2A charging current capability
- I2C interface for control and monitoring
- Power path management for seamless operation
- Integrated ADC for voltage and current monitoring
- Configurable charging parameters
- Safety features including thermal regulation
## Installation
Download and install the library using the Arduino Library Manager or by downloading the latest release from GitHub.
### Dependencies
This library requires:
- [Adafruit BusIO](https://github.com/adafruit/Adafruit_BusIO)
## Hardware
Connect the BQ25628E to your microcontroller via I2C. The default I2C address is 0x6A.
## License
MIT License. See LICENSE file for details.
## Contributing
Contributions are welcome! Please read the contributing guidelines and submit pull requests to the main repository.

View file

@ -0,0 +1,31 @@
/*!
* Test sketch for the Adafruit BQ25628E I2C Battery Charger library
*
* Designed specifically to work with the Adafruit BQ25628E Breakout
* Pick one up today in the adafruit shop!
*
* Author: Limor 'ladyada' Fried with assistance from Claude Code
* License: MIT
*/
#include "Adafruit_BQ25628E.h"
Adafruit_BQ25628E bq;
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
Serial.println("Adafruit BQ25628E Test!");
if (!bq.begin()) {
Serial.println("Failed to find BQ25628E chip");
while (1) delay(10);
}
Serial.println("BQ25628E Found!");
}
void loop() {
delay(1000);
}