电源管理

2023-07-18
暂无评分

概述

将基于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. 关机信息

若您对文档有意见或疑惑,点击可快速反馈,我们会与您联系。