电源管理
概述
将基于PSDK 开发的负载设备安装在无人机的云台上后,负载设备通过功率申请能获得较高的功率,因此,使用高功率的负载设备必须同时支持使用低功率;为防止负载设备未执行关机准备而丢失数据或意外损毁,PSDK 还提供了下发关机通知的功能。
使用电源管理功能
1. 引脚初始化
需要使用高功率的负载设备在申请高功率前,需要先初始化负载设备上用于申请高功率的引脚。
static T_PsdkReturnCode PsdkTest_HighPowerApplyPinInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(HIGH_POWER_APPLY_RCC, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Pin = HIGH_POWER_APPLY_PIN;
GPIO_Init(HIGH_POWER_APPLY_Port, &GPIO_InitStructure);
return PSDK_RETURN_CODE_OK;
}
说明: 请根据所选用的开发平台支持的库,实现初始化申请高功率引脚的功能。
2. 开发并注册改变负载设备引脚电平状态的函数
1.开发改变负载设备引脚电平状态的函数
开发者开发出负载设备改变引脚电平状态的功能后,需要将改变负载设备引脚电平状态的函数注册到指定的接口中。
T_DjiReturnCode DjiTest_WriteHighPowerApplyPin(E_DjiPowerManagementPinState pinState)
{
GPIO_PinState state;
switch (pinState) {
case DJI_POWER_MANAGEMENT_PIN_STATE_RESET:
state = GPIO_PIN_RESET;
break;
case DJI_POWER_MANAGEMENT_PIN_STATE_SET:
state = GPIO_PIN_SET;
break;
default:
USER_LOG_ERROR("pin state unknown: %d.", pinState);
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
}
HAL_GPIO_WritePin(HIGH_POWER_APPLY_PORT, HIGH_POWER_APPLY_PIN, state);
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
2.注册改变引脚电平状态的函数
注册改变负载设备引脚电平状态的函数后,用户能够控制负载设备改变引脚的电平状态。
returnCode = DjiPowerManagement_RegWriteHighPowerApplyPinCallback(s_applyHighPowerHandler.pinWrite);
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
USER_LOG_ERROR("register WriteHighPowerApplyPinCallback error.");
return returnCode;
}
3.申请高功率
负载设备调用DjiPowerManagement_ApplyHighPowerSync()
接口后,负载设备能够向无人机申请高功率,高功率申请完成后,可使用电压表等仪器测量SkyPort v2 和X-Port 指定接口的电压。
returnCode = DjiPowerManagement_ApplyHighPowerSync();
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
USER_LOG_ERROR("apply high power error");
return returnCode;
}
使用关机通知功能
无人机下发关机通知的流程如下所示:
- 当无人机获取到用户发送的关机通知时,无人机将向使用PSDK 开发的负载设备发送关机通知;
- 当负载设备接收到无人机发送的关机通知后,负载设备将完成关机前需执行的操作,并更改关机准备状态;
- 当无人机获取到所有负载设备关机准备的状态后,将会立即关机。
注意: 无人机在接收到关机通知的一段时间后,将会强制关机,具体强制关机的时间请参见对应产品型号的说明书。
1.构造关机状态回调函数
开发者开发出负载设备执行关机准备的功能后,需要将负载设备执行关机准备功能的函数注册到指定的接口中。
static T_DjiReturnCode DjiTest_PowerOffNotificationCallback(bool *powerOffPreparationFlag)
{
USER_LOG_INFO("aircraft will power off soon.");
*powerOffPreparationFlag = true;
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
2.注册回调函数
注册负载设备关机准备功能的函数后,负载设备在接收到关机通知后,将执行关机准备动作,并更改负载设备的关机准备状态,如 图1. 关机信息 所示。
// register power off notification callback function
returnCode = DjiPowerManagement_RegPowerOffNotificationCallback(DjiTest_PowerOffNotificationCallback);
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
USER_LOG_ERROR("register power off notification callback function error");
return returnCode;
}
图1. 关机信息