Files

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无法确定电源关闭。