mirror of
https://github.com/m5stack/m5-docs.git
synced 2026-05-20 10:23:01 -07:00
575 lines
8.3 KiB
Markdown
575 lines
8.3 KiB
Markdown
# Power
|
|
|
|
*电源相关的函数可能涉及 IP5306 芯片的寄存器,如果有不明白的地方,可以查看 [IP5306](https://github.com/m5stack/M5-Schematic/blob/master/Core/IIC_IP5306_REG_V1.4.pdf) 的寄存器手册。*
|
|
|
|
* IP5306芯片不支持与旧M5STACK硬件通信。使用功能时,还要考虑支持失控情况。*
|
|
|
|
按顺序使用:初始化,通信检查和控制,如以下示例所示。
|
|
|
|
```clike
|
|
M5.Power.begin();
|
|
if(!M5.Power.canControl()) {
|
|
//can't control.
|
|
return;
|
|
}
|
|
M5.Power.lightSleep(SLEEP_SEC(5));
|
|
```
|
|
## begin()
|
|
|
|
**函数原型:**
|
|
|
|
`void begin()`
|
|
|
|
**功能:**
|
|
|
|
Performs initialization of Power class.
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
无。
|
|
|
|
## setPowerBoostOnOff()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setPowerBoostOnOff(bool en)`
|
|
|
|
**功能:**
|
|
|
|
更改电源开/关方法。
|
|
通过USB连接时,电源不会关闭。
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|按住可打开/关闭。|
|
|
|false|两次短按打开/关闭。|
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
## setPowerBoostKeepOn()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setPowerBoostKeepOn(bool en)`
|
|
|
|
**功能:**
|
|
|
|
更改电源开/关方法。
|
|
通过USB连接时,电源不会关闭。
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 短按一下开/关。|
|
|
|false| 遵循setPowerBoostOnOff()方法。|
|
|
|
|
**返回值**
|
|
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
## setPowerVin()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setPowerVin(bool en)`
|
|
|
|
**功能:**
|
|
|
|
当USB等电源切断时,
|
|
决定是否再次打开电源。
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 电源将再次打开。|
|
|
|false| 电源不会再次打开。|
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
## setPowerWLEDSet()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setPowerWLEDSet(bool en)`
|
|
|
|
**功能:**
|
|
|
|
设置模式以打开电源LED。
|
|
M5GO的IP5306没有接线,无法通过此功能进行控制。
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 两次短按即可打开LED|
|
|
|false| 按住可打开LED|
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
## setPowerBtnEn()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setPowerBtnEn(bool en)`
|
|
|
|
**功能:**
|
|
|
|
设置是否接受电源按钮。
|
|
|
|
关于不接受按钮时的行为:
|
|
如果电源打开,电源按钮仅接受CPU复位。
|
|
如果未提供电源,则无法打开电源。
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|接受电源操作。|
|
|
|false|不接受电源控制。|
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
|
|
## setLowPowerShutdownTime()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setLowPowerShutdownTime(ShutdownTime time)`
|
|
|
|
**功能:**
|
|
|
|
设置等待时间,直到IP5306进行节能判断并关闭电源。
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|ShutdownTime::SHUTDOWN_8S | 等待8秒。|
|
|
|ShutdownTime::SHUTDOWN_16S| 等待16秒。|
|
|
|ShutdownTime::SHUTDOWN_32S| 等待32秒。|
|
|
|ShutdownTime::SHUTDOWN_64S| 等待64秒。|
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
|
|
## setPowerBoostKeepOn()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setPowerBoostKeepOn(bool en)`
|
|
|
|
**功能:**
|
|
|
|
此功能设置/取消设置始终提升输出模式。
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|总是输出功率。|
|
|
|false|不总是输出功率。 |
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
## setKeepLightLoad()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setKeepLightLoad(bool en)`
|
|
|
|
**功能:**
|
|
|
|
此功能设置/取消设置以禁用自动关闭。
|
|
(已弃用:此功能将被禁用,并将在不久的将来删除)
|
|
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|当电流消耗低时,不会发生自动关闭 |
|
|
|false|电流消耗低时自动关闭 |
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
## setLowPowerShutdown()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setLowPowerShutdown(bool en)`
|
|
|
|
**功能:**
|
|
|
|
此功能设置/取消设置以禁用自动关闭。
|
|
(已弃用:此功能将被禁用,并将在不久的将来删除)
|
|
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|启用节能关机功能。|
|
|
|false|禁用节能关机功能。|
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
## setAutoBootOnLoad()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setAutoBootOnLoad(bool en)`
|
|
|
|
**功能:**
|
|
|
|
设置是否在IP5306的次级侧发生功耗时自动启动.
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|启用自动启动功能。|
|
|
|false|禁用自动启动功能。|
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
|
|
## setCharge()
|
|
|
|
**函数原型:**
|
|
|
|
`bool setCharge(bool en)`
|
|
|
|
**功能:**
|
|
|
|
此功能设置/取消设置充电模式。电池充满电后,
|
|
尝试设置充电启用 - >禁用 - >启用,它可以充电。
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|充电开始指令 |
|
|
|false|充电停止指令 |
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true| 控制成功 |
|
|
|false| 控制失败|
|
|
|
|
## isChargeFull()
|
|
|
|
**函数原型:**
|
|
|
|
`bool isChargeFull()`
|
|
|
|
**说明:**
|
|
|
|
确认完全充电.
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|完全充电 |
|
|
|false|没有完全充电 |
|
|
|
|
|
|
## canControl()
|
|
|
|
**函数原型:**
|
|
|
|
`bool canControl()`
|
|
|
|
**功能:**
|
|
|
|
此功能通过I2C通信检查电池控制器是否存在。
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|电源控制器发现 |
|
|
|false|找不到电源控制器 |
|
|
|
|
|
|
## isCharging()
|
|
|
|
**函数原型:**
|
|
|
|
`bool isCharging()`
|
|
|
|
**功能:确认是否正在充电**
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true|在充电过程中|
|
|
|false|不充电 |
|
|
|
|
|
|
## getBatteryLevel()
|
|
|
|
**函数原型:**
|
|
|
|
`int8_t getBatteryLevel()`
|
|
|
|
**功能:**
|
|
|
|
返回电池电量
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
返回0/25/50/75/100的电池电量.
|
|
如果无法检查剩余电量,则返回-1
|
|
|
|
|
|
## setWakeupButton()
|
|
|
|
**函数原型:**
|
|
|
|
`void setWakeupButton(uint8_t button)`
|
|
|
|
**功能:设置睡眠返回端口**
|
|
|
|
**参数**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|button| 端口号|
|
|
|
|
**返回值**
|
|
|
|
无。
|
|
|
|
**使用示例**
|
|
|
|
```clike
|
|
setWakeupButton(BUTTON_A_PIN);
|
|
```
|
|
|
|
## reset()
|
|
|
|
**函数原型:**
|
|
|
|
`void reset()`
|
|
|
|
**功能:执行CPU重置**
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
无。
|
|
|
|
## isResetbySoftware()
|
|
|
|
**函数原型:**
|
|
|
|
`bool isResetbySoftware()`
|
|
|
|
**功能:**
|
|
|
|
判断当前激活状态是否在CPU复位后。
|
|
(如果执行reset()或RTOS等的等效处理,则会成立)
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true | 通过软件重置|
|
|
|false| 出于其他原因|
|
|
|
|
## isResetbyWatchdog()
|
|
|
|
**函数原型:**
|
|
|
|
`bool isResetbyWatchdog()`
|
|
|
|
**功能:**
|
|
|
|
确定当前激活状态是否在看门狗之后。
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true | 通过看门狗|
|
|
|false| 出于其他原因|
|
|
|
|
## isResetbyDeepsleep()
|
|
|
|
**函数原型:**
|
|
|
|
`bool isResetbyDeepsleep()`
|
|
|
|
**功能:**
|
|
|
|
确定当前唤醒状态是否在deepSleep()之后。
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true | 在deepSleep()之后|
|
|
|false| 出于其他原因|
|
|
|
|
## isResetbyPowerSW()
|
|
|
|
**函数原型:**
|
|
|
|
`bool isResetbyPowerSW()`
|
|
|
|
**功能:**
|
|
|
|
确定当前启动状态是否在电源开关接通电源后。
|
|
|
|
**参数**
|
|
|
|
无。
|
|
|
|
**返回值**
|
|
|
|
| 値 |功能 |
|
|
| --- | --- |
|
|
|true | 通过电源开关|
|
|
|false| 出于其他原因|
|
|
|
|
|
|
## deepSleep()
|
|
|
|
**函数原型:**
|
|
|
|
`void deepSleep()`
|
|
|
|
**功能:**
|
|
此功能转换为深度睡眠模式。
|
|
它在指定的时间或端口状态更改时启动。
|
|
唤醒后,CPU将重新启动,而不是从下一行运行。
|
|
|
|
**使用示例**
|
|
节能5秒钟然后重新启动。
|
|
```clike
|
|
deepSleep(SLEEP_SEC(5));
|
|
```
|
|
## lightSleep()
|
|
|
|
**函数原型:**
|
|
|
|
`void lightSleep(uint64_t time_in_us)`
|
|
|
|
**功能:**
|
|
此功能转换为深度睡眠模式。
|
|
它在指定的时间或端口更改时启动。
|
|
返回后,它将从下一行执行。
|
|
与deepSleep()相比,缺少省电功能。
|
|
|
|
**使用示例**
|
|
节能5秒钟然后重新启动。
|
|
```clike
|
|
lightSleep(SLEEP_SEC(5));
|
|
```
|
|
|
|
## powerOFF()
|
|
|
|
**函数原型:**
|
|
|
|
`void powerOFF()`
|
|
|
|
**功能:**
|
|
关掉电源。
|
|
使用省电功能在8秒后关闭IP5306
|
|
关闭提供给电路侧的电源。
|
|
|
|
**使用注意事项**
|
|
M5Stack无法强行关闭电源。
|
|
因此,该功能通过使用IP5306的省电功能实现。
|
|
如果用户在电路中消耗电流,IP5306无法确定电源关闭。
|
|
|