Skip to content

Commit fd09513

Browse files
committed
NanoMotorCarrier: add battery charge API
1 parent d8cf819 commit fd09513

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

src/MotorController.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@
1818
#include "Common.h"
1919
#include "Wire.h"
2020

21+
#define PMIC_ADDRESS 0x6B
22+
#define PMIC_REG00 0x00
23+
#define PMIC_REG01 0x01
24+
#define PMIC_REG02 0x02
25+
#define PMIC_REG04 0x04
26+
#define PMIC_REG05 0x05
27+
2128
String mc::MotorController::getFWVersion() {
2229
char ret[5];
2330
getData(GET_VERSION, (uint8_t*)ret);
@@ -42,6 +49,14 @@ float mc::MotorController::getTemperature() {
4249

4350
int mc::MotorController::begin() {
4451
Wire.begin();
52+
53+
// PMIC initialization raw APIs: are sused to initialize the
54+
// PMIC when used with nano 33 iot
55+
#ifdef ARDUINO_SAMD_NANO_33_IOT
56+
Serial.println("Board: Nano 33 IoT");
57+
enable_battery_charging();
58+
Serial.println("Charging enabled....");
59+
#endif
4560
String version = getFWVersion();
4661
if (version.c_str()[0] == '0') {
4762
return 1;
@@ -59,4 +74,27 @@ int mc::MotorController::getFreeRam() {
5974
int ret;
6075
getData(GET_FREE_RAM, (uint8_t*)&ret);
6176
return ret;
77+
}
78+
79+
void mc::MotorController::enable_battery_charging() {
80+
Wire.beginTransmission(PMIC_ADDRESS);
81+
Wire.write(PMIC_REG00);
82+
Wire.write(0x06); // min sys voltage 3.88V + max input current 2.0 A
83+
Wire.endTransmission();
84+
Wire.beginTransmission(PMIC_ADDRESS);
85+
Wire.write(PMIC_REG01);
86+
Wire.write(0x1B); // Charge Battery + Minimum System Voltage 3.5V
87+
Wire.endTransmission();
88+
Wire.beginTransmission(PMIC_ADDRESS);
89+
Wire.write(PMIC_REG02);
90+
Wire.write(0x00); // Charge current 512 mA
91+
Wire.endTransmission();
92+
Wire.beginTransmission(PMIC_ADDRESS);
93+
Wire.write(PMIC_REG04);
94+
Wire.write(0x9E); // Charge Voltage Limit 4.128V
95+
Wire.endTransmission();
96+
Wire.beginTransmission(PMIC_ADDRESS);
97+
Wire.write(PMIC_REG05);
98+
Wire.write(0x8A); // Enable Battery Charge termination + disable watchdog
99+
Wire.endTransmission();
62100
}

src/MotorController.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ class MotorController {
3232
uint8_t getIrqStatus();
3333
int getFreeRam();
3434
volatile uint8_t irq_status;
35+
private:
36+
void enable_battery_charging();
37+
3538
};
3639
}
3740

0 commit comments

Comments
 (0)