类名: Power
*电源相关的函数可能涉及 IP5306 芯片的寄存器,如果有不明白的地方,可以查看 IP5306 的寄存器手册*
*IP5306芯片不支持与旧M5STACK硬件通信使用功能时,还要考虑支持失控情况*
按顺序使用:初始化,通信检查和控制,如以下示例所示
M5.Power.begin();
if(!M5.Power.canControl()) {
//can't control.
return;
}
M5.Power.lightSleep(SLEEP_SEC(5));
功能说明:
执行Power类的初始化
函数原型:
void begin()
案例程序:
#include <M5Stack.h>
void setup() {
M5.begin();
M5.Power.begin();
}
void loop() {}
功能说明:
更改电源键 开/关 主机的方式
函数原型:
bool setPowerBoostOnOff(bool en)
en | 功能 |
---|---|
true | 长按电源键 打开/关闭 主机 |
false | 两次短按电源键 打开/关闭 主机 |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
案例程序:
#include <M5Stack.h>
void setup() {
M5.begin();
M5.Power.begin();
if (M5.Power.setPowerBoostOnOff(false)) {
M5.Lcd.println("Changed power on/off method");
} else {
M5.Lcd.println("Failed to change power on/off method");
}
}
void loop() {}
功能说明:
更改电源开/关方法 通过USB连接时,电源不会关闭
函数原型:
bool setPowerBoostKeepOn(bool en)
en | 功能 |
---|---|
true | 短按一下开/关 |
false | 遵循setPowerBoostOnOff()方法 |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
功能说明:
当USB等电源切断时, 决定是否再次打开电源
函数原型:
bool setPowerVin(bool en)
値 | 功能 |
---|---|
true | 电源将再次打开 |
false | 电源不会再次打开 |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
功能说明:
设置模式以打开电源LED M5GO的IP5306没有接线,无法通过此功能进行控制
函数原型:
bool setPowerWLEDSet(bool en)
値 | 功能 |
---|---|
true | 两次短按即可打开LED |
false | 按住可打开LED |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
功能说明:
设置是否接受电源按钮
关于不接受按钮时的行为: 如果电源打开,电源按钮仅接受CPU复位 如果未提供电源,则无法打开电源
函数原型:
bool setPowerBtnEn(bool en)
値 | 功能 |
---|---|
true | 接受电源操作 |
false | 不接受电源控制 |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
功能说明:
设置等待时间,直到IP5306进行节能判断并关闭电源
函数原型:
bool setLowPowerShutdownTime(ShutdownTime time)
値 | 功能 |
---|---|
SHUTDOWN_8S | 等待8秒 |
SHUTDOWN_16S | 等待16秒 |
SHUTDOWN_32S | 等待32秒 |
SHUTDOWN_64S | 等待64秒 |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
功能说明:
此功能设置/取消设置始终提升输出模式
函数原型:
bool setPowerBoostKeepOn(bool en)
値 | 功能 |
---|---|
true | 总是输出功率 |
false | 不总是输出功率 |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
功能说明:
设置是否在IP5306的次级侧发生功耗时自动启动.
函数原型:
bool setAutoBootOnLoad(bool en)
値 | 功能 |
---|---|
true | 启用自动启动功能 |
false | 禁用自动启动功能 |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
功能说明:
此功能设置/取消设置充电模式电池充满电后, 尝试设置充电启用 - >禁用 - >启用,它可以充电
函数原型:
bool setCharge(bool en)
値 | 功能 |
---|---|
true | 充电开始指令 |
false | 充电停止指令 |
返回值:
値 | 功能 |
---|---|
true | 控制成功 |
false | 控制失败 |
功能说明:
检测电池是否充满电.
函数原型:
bool isChargeFull()
返回值:
値 | 功能 |
---|---|
true | 充满电 |
false | 未充满电 |
功能说明:
此功能通过I2C通信检查电池控制器是否存在
函数原型:
bool canControl()
返回值:
値 | 功能 |
---|---|
true | 电源控制器发现 |
false | 找不到电源控制器 |
功能说明:
确认是否正在充电
函数原型:
bool isCharging()
返回值:
値 | 功能 |
---|---|
true | 在充电过程中 |
false | 不充电 |
功能说明:
返回电池电量
函数原型:
int8_t getBatteryLevel()
返回值:
返回0/25/50/75/100的电池电量. 如果无法检查剩余电量,则返回-1
功能说明:
设置睡眠返回端口
函数原型:
void setWakeupButton(uint8_t button)
値 | 功能 |
---|---|
button | 端口号 |
案例程序:
setWakeupButton(BUTTON_A_PIN);
功能说明:
执行CPU重置
函数原型:
void reset()
功能说明:
判断当前激活状态是否在CPU复位后 (如果执行reset()或RTOS等的等效处理,则会成立)
函数原型:
bool isResetbySoftware()
返回值:
値 | 功能 |
---|---|
true | 通过软件重置 |
false | 出于其他原因 |
功能说明:
确定当前激活状态是否在看门狗之后
函数原型:
bool isResetbyWatchdog()
返回值:
値 | 功能 |
---|---|
true | 通过看门狗 |
false | 出于其他原因 |
功能说明:
确定当前唤醒状态是否在deepSleep()之后
函数原型:
bool isResetbyDeepsleep()
返回值:
値 | 功能 |
---|---|
true | 在deepSleep()之后 |
false | 出于其他原因 |
功能说明:
确定当前启动状态是否在电源开关接通电源后
函数原型:
bool isResetbyPowerSW()
返回值:
値 | 功能 |
---|---|
true | 通过电源开关 |
false | 出于其他原因 |
功能说明:
此功能转换为深度睡眠模式 它在指定的时间或端口状态更改时启动 唤醒后,CPU将重新启动,而不是从下一行运行
函数原型:
void deepSleep()
案例程序:
节能5秒钟然后重新启动
deepSleep(SLEEP_SEC(5));
功能说明:
此功能转换为深度睡眠模式 它在指定的时间或端口更改时启动 返回后,它将从下一行执行 与deepSleep()相比,缺少省电功能
函数原型:
void lightSleep(uint64_t time_in_us)
案例程序:
节能5秒钟然后重新启动
lightSleep(SLEEP_SEC(5));
功能说明:
关闭电源 使用省电功能在8秒后关闭IP5306 关闭提供给电路侧的电源
函数原型:
void powerOFF()