5.15.1 基本功能介绍
电源管理(power_management)功能是个宽泛的命名,M300应用于PSDK接口,主要功能包括高功率申请,无人机下电通知负载设备。主要是PSDK负载设备端电源相关的简单功能,并不能通过PSDK对无人机电源进行管理。
高功率申请
负载设备挂载到无人机上,通常直接使用无人机直接给负载供电,M300 PSDK云台端口供电分Skyport和X-PORT提供了两个功率标准,
Skyport v2
普通功率,13.6V/4A;高功率,17V / 4A
X-PORT
普通功率,13.6V/2A;高功率,17V / 2.5A
当负载设备使用普通电源功率就可以正常工作时,就无需申请高功率,代码不做任何设定默认为普通功率即可。有些负载设备可能需要更高的功率来工作,这时就需要通过设置使得飞机的供电端口提供高功率输出。设置分为硬件和软件部分,
-
硬件上要将高功率引脚(排线引脚:HIGH_POWER_APPLY 引脚(22))拉高。
-
通过API:DjiPowerManagement_ApplyHighPowerSync申请无人机高功率输出
关机通知
关机通知主要是因为负载由飞机供电,负载设备设备的上下电强依赖于飞机的开关机,可能存在飞机突然被关机时PSDK负载设备还正在工作,此时就需要一个机制反馈给负载设备。关机通知功能就是飞机关机时下发给PSDK负载设备的一个信号,当PSDK负载设备收到此信号,要尽可能快的结束工作,并且保存必要的数据,避免突然掉电损坏设备。飞机下发关机通知后,会在3~5秒完全掉电。
说明:
-
M30/T机型不再提供PSDK云台接口,仅提供一个PSDK type C接口用于连接负载设备。供电接口不再区分普通功率和高功率,type C供电引脚输出电源标准:19.2-26.1V(随电池电压降低),总功率不超过96W。
-
M30/T机型电源管理部分支持的功能主要是关机通知。
-
如果PSDK负载设备不需要无人机供电,自备电源,此电源管理功能基本无实际应用意义。
5.15.2 主要代码文件
sample代码文件
power_management/
├── test_power_management.c
└── test_power_management.h
PSDK lib头文件
dji_power_management.h
5.15.3 sample代码实现
电源管理部分需要通过硬件连接高功率引脚,提供的sample中因Linux平台没有拓展GPIO引脚,所以提供的sample是基于STM32 FreeRTOS设置GPIO,Linux中的回调函数没有具体实现,可以结合平台和硬件接口实现回调。
回调注册
T_DjiTestApplyHighPowerHandler applyHighPowerHandler = {
.pinInit = DjiTest_HighPowerApplyPinInit,
.pinWrite = DjiTest_WriteHighPowerApplyPin,
};
returnCode = DjiTest_RegApplyHighPowerHandler(&applyHighPowerHandler);
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
USER_LOG_ERROR("regsiter apply high power handler error");
}
说明:
-
回调函数:DjiTest_HighPowerApplyPinInit,初始化本地的GPIO引脚。
-
回调函数:DjiTest_WriteHighPowerApplyPin,用于设置初始化的本地的GPIO引脚电平。
-
applyHighPowerHandler,定义与高功率申请引脚相关的回调处理句柄。通常与使用的平台相关,在回调中具体实现即可。Linux sample中两个回调没有具体实现,FreeRTOS STM32通过GPIO_PIN_1连接到飞机端(skyport v2/X-PORT)的HIGH_POWER_APPLY 引脚(22)。
-
注册回调接口:DjiTest_RegApplyHighPowerHandler非PSDK lib接口,主要是将平台的GPIO操作抽象出来,方便应用端调用或Lib中调用。
电源管理功能入口
returnCode = DjiTest_PowerManagementStartService();
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
USER_LOG_ERROR("power management init error");
}
初始化
/**
* @brief Initialise power management module, and user should call this function before using power management features.
* @return Execution result.
*/
T_DjiReturnCode DjiPowerManagement_Init(void);
API说明
-
初始化电源管理功能模块,调用此模块功能接口前需先调用此接口初始化模块功能。
获取飞机基本信息
获取飞机信息主要是PSDK 3.x适配的M300和M30高功率部分适配问题,M30不支持高功率申请,所以无需注册高功率申请GPIO引脚。
/**
* @brief Get base information of aircraft system, including aircraft type and DJI adapter type.
* @param baseInfo: pointer to memory space used to store base information of the aircraft system.
* @return Execution result.
*/
T_DjiReturnCode DjiAircraftInfo_GetBaseInfo(T_DjiAircraftInfoBaseInfo *baseInfo);
API简介
-
获取无人机的基本信息,包括无人机机型以及SDK连接端口信息
参数说明
-
baseInfo,获取到的飞机基本信息。
初始化GPIO引脚
调用外部结合平台实现的引脚初始化接口。
returnCode = s_applyHighPowerHandler.pinInit();
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
USER_LOG_ERROR("apply high power pin init error");
return returnCode;
}
注册拉高GPIO函数
/**
* @brief Register callback function used to set level state of high power application pin. Must be called before
* applying high power.
* @param callback: pointer to the callback function.
* @return Execution result.
*/
T_DjiReturnCode DjiPowerManagement_RegWriteHighPowerApplyPinCallback(DjiWriteHighPowerApplyPinCallback callback);
API简介
-
将外部实现的设置GPIO电平函数注册到Lib中,GPIO电平切换是在lib根据申请高功率逻辑实现。
参数
-
callback,外部实现的设置本地GPIO引脚电平的函数。
申请高功率
/**
* @brief Apply high power from aircraft in blocking mode.
* @details Before applying, user should register callback function used to set level state of high power application
* pin using DjiPowerManagement_RegWriteHighPowerApplyPinCallback() function. After applying high power, power pin of
* DJI adapter will output high power based predetermined specification.
* @note Max execution time of this function is slightly larger than 600ms.
* @return Execution result.
*/
T_DjiReturnCode DjiPowerManagement_ApplyHighPowerSync(void);
API简介
-
GPIO引脚和初始化部分完成后,调用此API就可以申请高功率,即调用此API成功后,skyport/X-PORT输出电压就会对应成高功率输出。
注册关机通知回调
关机通知是一个被动接收的事件,只需要注册一个回调函数。当飞机按下关机键,此回调会立即被触发。通过此回调就可以处理PSDK设备端的下电准备。
/**
* @brief Register callback function used to notify payload that the aircraft will power off soon and get state
* whether the payload is ready to power off or not.
* @details After registering, the callback function will be called at a fixed frequency when aircraft will power off.
* User fill in the power off preparation flag, and once the payload is ready to power off, the callback function will not
* be called. After a specified time, if the payload is not ready to power off, the aircraft will power off immediately. The
* specified time is 10s.
* @param callback: pointer to callback function used to notify aircraft power off message and get payload power off
* preparation flag.
* @return Execution result.
*/
T_DjiReturnCode DjiPowerManagement_RegPowerOffNotificationCallback(DjiPowerOffNotificationCallback callback);
API简介
-
注册无人机下电通知的回调函数,飞机下电时会触发此回调。
参数
-
callback,用于接收下电通知的事件。可以在此回调中处理下电准备,也可以分发下电消息,根据设备实际运行程序处理。
回调原型:
/**
* @brief Prototype of callback function used to notify payload that the aircraft will power off soon and get state
* whether the payload is ready to power off or not.
* @warning User can not execute blocking style operations or functions in a callback function, because that will block DJI
* root thread, causing problems such as slow system response, payload disconnection or infinite loop.
* @param powerOffPreparationFlag: pointer to memory space used to store power off preparation flag. True represents
* that payload has completed all work and is ready to power off. False represents that payload is not ready to power
* off.
* @return Execution result.
*/
typedef T_DjiReturnCode (*DjiPowerOffNotificationCallback)(bool *powerOffPreparationFlag);参数:
-
powerOffPreparationFlag,下电准备的标志,由PSDK设备端返回状态。下电是单方面强制的,即使返回未准备好,也会强制下电。无应用意义。
-
5.15.4 开发注意事项
-
高功率申请仅支持M300的PSDK端口。M300上所有负载端口功率之和不能超过120W,即同时挂载1个OSDK端口 + 三个PSDK负载端口总功率不能超过120W。
-
>14.3V 一级高压告警
>15V 二级高压告警
<12.9V 一级低压告警
<12.2v 二级低压告警
12.9~14.3v之间正常
-
申请高功率的设备需要支持在普通功率下运行。由高功率申请可知,需要通过PSDK接口申请高功率后才会更改输出功率,所以更改功率前需要先在普通功率下运行PSDK程序。
-
收到下电通知后需要立即进行下电准备,且在3~5s内完成下电准备,否则可能因强制下电导致设备数据丢失或异常。
-
评论
0 条评论
请登录写评论。