Skip to content

Commit 03cd960

Browse files
authored
Merge pull request #9 from arduino-libraries/post_testing_updates
Fix issues highlighted in the library review
2 parents 8cfa032 + f52022d commit 03cd960

File tree

5 files changed

+33
-19
lines changed

5 files changed

+33
-19
lines changed

Diff for: docs/README.md

+26-12
Original file line numberDiff line numberDiff line change
@@ -78,32 +78,46 @@ It will return a value of *ChargeStatus* which can be one of the above:
7878
This library allows you to change the following charging parameters of the charging process. Please be careful with these and make sure they are supported by the battery you are using as the wrong values might damage your board or the battery.
7979

8080
##### Charge Voltage
81-
Set the voltage that your battery is charged with:
81+
Set the charging voltage in volts (V).
82+
Before changing the default values please be aware that changing the charge voltage can damage your battery.
8283

8384
```cpp
84-
charger.setChargeVoltage(ChargeVoltage::V_3_80);
85+
charger.setChargeVoltage(3.80);
8586
```
86-
87-
*ChargeVoltage* is an enum with values ranging from `ChargeVoltage::V_3_50` to `ChargeVoltage::V_4_44` in steps of 0.02V, (`V_3_50`, `V_3_52`, ..., `V_3_42`, `V_4_44`)
87+
The current charging voltage is set to 4.2V by default.
88+
This method accepts float values representing voltages from 3.50V to 4.44V in steps of 0.02V (3.50, 3.52, ...., 4.42, 4.44)
8889

8990
##### Charge Current
90-
Set the current used in the constant charging phase.
91-
91+
Set the current used in the constant charging phase. This method accepts integer values representing milli amperes (mA).
9292

9393
```cpp
94-
charger.setChargeCurrent(ChargeCurrent::I_500_mA);
94+
charger.setChargeCurrent(1000);
9595
```
9696

97-
*ChargeCurrent* is an enum with value ranging from `ChargeCurrent::I_100_mA` to `ChargeCurrent::I_100_mA` in steps of 50mA. (`I_100_mA`, `I_150_mA`, ... `I_950_mA`, `I_1000_mA`).
97+
The default charging current is set to 100mA.
98+
Supported values: 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000mA
9899

99100
##### End of Charge Current
100-
This is the current used in the end-of-charge phase where the voltage is kept at 4.2V.
101+
This is the current used in the end-of-charge phase where the voltage is kept at 4.2V. The charger IC determines when to terminate the charge cycle based on the current going into the battery dropping below the given threshold during the constant voltage phase. At this point, the battery is considered fully charged and charging is completed. If charge termination is disabled, the charge current will naturally decay to 0mA, but this is rarely done in practice.
102+
This is because the amount of charge going into the battery exponentially decreases during CV charging, and it would take a significantly longer time to recharge the battery with a very little increase in capacity.
103+
104+
```cpp
105+
charger.setEndOfChargeCurrent(5);
106+
```
107+
108+
The default end-of-charge current is set to 5 mA.
109+
Supported values: 5, 10, 20, 30, 50mA.
110+
111+
112+
##### Input Current Limit
113+
The input current limit (ILIM) safeguards the device by preventing overcurrent, ensuring the charging current is within safe levels for the battery, and adapting to the maximum current the power source can provide, allowing you to charge and use the system at the same time.
101114

102115
```cpp
103-
charger.setEndOfChargeCurrent(EndOfChargeCurrent::I_5_mA);
116+
charger.setInputCurrentLimit(1500);
104117
```
105118

106-
*EndOfChargeCurrent* is an enum with the following values (`I_5_mA`, `I_10_mA`, `I_20_mA`, `I_30_mA`, `I_50_mA`).
119+
The default input current limit is set to 1.5A.
120+
Supported values: 10, 15, 20, 25, 30, 35, 40, 45, 50, 100, 150, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1500mA
107121

108122
## Board
109123
The PF1550 power management IC has three LDO regulators, and three DCDC converters, each of these have a configurable voltage range and can be turned on and off.
@@ -242,7 +256,7 @@ When utilizing Mbed with STM32-based microcontrollers such as the Portenta H7 an
242256

243257
However, initiating this command doesn't guarantee automatic entry into sleep mode due to the presence of Sleep Locks. These locks act as safeguards, preventing the system from sleeping under certain conditions to ensure ongoing operations remain uninterrupted. Common peripherals, such as the USB Stack, may engage a sleep lock, effectively keeping the board awake even during periods of apparent inactivity. This behavior underscores how the effectiveness of sleep mode is closely linked to the specific operations and configurations defined in your sketch.
244258

245-
For those looking to fine-tune their board's energy efficiency by leveraging automatic sleep functionality, a particularly useful resource is [Alrik's example sketch](https://github.com/alrvid/Arduino_LowPowerPortentaH7/blob/main/examples/DeepSleepLockDebug_Example/DeepSleepLockDebug_Example.ino). This sketch provides a comprehensive overview of the active sleep locks, offering insights into what may be preventing the board from entering sleep mode and how to address these obstacles. By incorporating Alrik's insights, developers can more effectively manage their board's power consumption, optimizing for both performance and energy efficiency.
259+
For those looking to fine-tune their board's energy efficiency by leveraging automatic sleep functionality, a particularly useful resource is [the Sleep Lock Example Sketch](https://github.com/alrvid/Arduino_LowPowerPortentaH7/blob/main/examples/DeepSleepLockDebug_Example/DeepSleepLockDebug_Example.ino). This sketch provides a comprehensive overview of the active sleep locks, offering insights into what may be preventing the board from entering sleep mode and how to address these obstacles.
246260

247261
#### Send the board to sleep
248262
`board.deepSleepUntilwakeupEvent()` - Sends the board into the deep sleep state, where it consumes around ~100uA and ~300uA without peripherals.

Diff for: examples/Standby_WakeFromRTC_C33/Standby_WakeFromRTC_C33.ino

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ void setup() {
6262

6363
board.enableWakeupFromRTC(0, 0, 10); // Sleep for 10 seconds
6464

65-
delay(1000); // Keep the board awake for 1 second, so we can se it working
65+
delay(10000); // Keep the board awake for 1 second, so we can se it working
6666

6767
board.shutDownFuelGauge();
6868
board.setAllPeripheralsPower(false);

Diff for: examples/Standby_WakeFromRTC_H7/Standby_WakeFromRTC_H7.ino

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void setup() {
5555
}
5656
}
5757

58-
delay(5000); // keep the board awake for 5 seconds, so we can se it working
58+
delay(10000); // keep the board awake for 5 seconds, so we can se it working
5959
board.shutDownFuelGauge();
6060

6161

Diff for: src/Board.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Board::~Board() {
5858
}
5959

6060
bool Board::begin() {
61-
#if defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION)
61+
#if defined(ARDUINO_PORTENTA_H7_M7)
6262
if (CM7_CPUID == HAL_GetCurrentCPUID()){
6363
if (LowPowerReturnCode::success != LowPower.checkOptionBytes()){
6464
LowPower.prepareOptionBytes();
@@ -124,7 +124,7 @@ void Board::enableWakeupFromPin(uint8_t pin, PinStatus direction){
124124
}
125125
#endif
126126

127-
#if defined(ARDUINO_PORTENTA_H7) || defined(ARDUINO_NICLA_VISION)
127+
#if defined(ARDUINO_PORTENTA_H7)
128128
void Board::enableWakeupFromPin(){
129129
standbyType |= StandbyType::untilPinActivity;
130130
}
@@ -177,7 +177,7 @@ bool Board::enableWakeupFromRTC(uint32_t hours, uint32_t minutes, uint32_t secon
177177

178178
#endif
179179

180-
#if defined(ARDUINO_PORTENTA_H7) || defined(ARDUINO_NICLA_VISION)
180+
#if defined(ARDUINO_PORTENTA_H7)
181181
bool Board::enableWakeupFromRTC(uint32_t hours, uint32_t minutes, uint32_t seconds){
182182
standbyType |= StandbyType::untilTimeElapsed;
183183
wakeupDelayHours = hours;
@@ -198,7 +198,7 @@ void Board::standByUntilWakeupEvent(){
198198
lowPower -> deepSleep();
199199
#elif defined(ARDUINO_GENERIC_STM32H747_M4)
200200
LowPower.standbyM4();
201-
#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION)
201+
#elif defined(ARDUINO_PORTENTA_H7_M7)
202202
RTCWakeupDelay rtcWakeupDelay = RTCWakeupDelay(wakeupDelayHours, wakeupDelayMinutes, wakeupDelaySeconds);
203203
if(standbyType == StandbyType::untilEither)
204204
LowPower.standbyM7(LowPowerStandbyType::untilPinActivity | LowPowerStandbyType::untilTimeElapsed, rtcWakeupDelay);

Diff for: src/Board.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#if defined(ARDUINO_PORTENTA_C33)
1313
#include "Arduino_LowPowerPortentaC33.h"
1414
#include "RTC.h"
15-
#elif defined(ARDUINO_PORTENTA_H7) || defined(ARDUINO_NICLA_VISION)
15+
#elif defined(ARDUINO_PORTENTA_H7)
1616
// When used standalone the LowPowerPortentaH7 library will turn off the Ethernet interface to avoid issues with the line termination resistors,
1717
// but in this library we can turn of the Ethernet interface using the PMIC, so we set the NO_ETHERNET_TURN_OFF flag to avoid turning off the Ethernet interface from both sides.
1818
#define NO_ETHERNET_TURN_OFF

0 commit comments

Comments
 (0)