Files
tronone-h7-scaffold/User_Code/module/periph/power_meters/xiditech/xidipwmeter.h

59 lines
1.6 KiB
C
Raw Normal View History

2025-11-17 16:27:19 +08:00
//
// Created by ASUS on 2025/11/17.
//
#ifndef TRONONEH7_SCAFFOLD_XIDIPWMETER_H
#define TRONONEH7_SCAFFOLD_XIDIPWMETER_H
2025-11-20 19:11:56 +08:00
#include "bsp_dwt.h"
#include "bsp_fdcan.h"
2026-02-24 23:47:15 +08:00
#include "daemon.h"
#include "general_def.h"
2025-11-20 19:11:56 +08:00
/* 功率计测量数据结构 */
typedef struct
{
float voltage; // 电压 (V)
float current; // 电流 (A)
float power; // 功率 (W)
float energy; // 累计能量 (J)
uint32_t update_cnt; // 更新计数器
float dt; // 更新时间间隔
2026-03-09 01:57:43 +08:00
} XidiPowerMeter_Msg_s;
2025-11-20 19:11:56 +08:00
/* 功率计实例结构 */
typedef struct
{
2026-03-09 01:57:43 +08:00
FDCANInstance *fdcan_ins; // FDCAN实例指针
XidiPowerMeter_Msg_s powermeter_msg; // 测量数据
2026-02-24 23:47:15 +08:00
Daemon_Instance *daemon; // 守护进程
2025-11-20 19:11:56 +08:00
uint32_t feed_cnt; // 喂狗计数器
2026-03-09 01:57:43 +08:00
} XidiPowerMeterInstance;
/* 功率计初始化配置 */
typedef struct {
FDCAN_Init_Config_s can_config;
Daemon_Init_Config_s daemon_config;
} XidiPowerMeter_Init_Config_s;
2025-11-20 19:11:56 +08:00
/* 函数声明 */
2026-03-09 01:57:43 +08:00
XidiPowerMeterInstance *XidiPowerMeterInit(XidiPowerMeter_Init_Config_s *XidiPowerMeter_config);
2025-11-20 19:11:56 +08:00
2026-03-09 01:57:43 +08:00
void XidiPowerMeterDecode(FDCANInstance *_instance);
2025-11-20 19:11:56 +08:00
2026-03-09 01:57:43 +08:00
void XidiPowerMeterLostCallback(void *power_meter_ptr);
2025-11-20 19:11:56 +08:00
2026-03-09 01:57:43 +08:00
float XidiPowerMeterGetVoltage(XidiPowerMeterInstance *power_meter);
2025-11-20 19:11:56 +08:00
2026-03-09 01:57:43 +08:00
float XidiPowerMeterGetCurrent(XidiPowerMeterInstance *power_meter);
2025-11-20 19:11:56 +08:00
2026-03-09 01:57:43 +08:00
float XidiPowerMeterGetPower(XidiPowerMeterInstance *power_meter);
2025-11-20 19:11:56 +08:00
2026-03-09 01:57:43 +08:00
float XidiPowerMeterGetEnergy(XidiPowerMeterInstance *power_meter);
2025-11-20 19:11:56 +08:00
2026-03-09 01:57:43 +08:00
void XidiPowerMeterResetEnergy(XidiPowerMeterInstance *power_meter);
2025-11-20 19:11:56 +08:00
2026-03-09 01:57:43 +08:00
XidiPowerMeterInstance *GetPowerMeterInstance(void);
2025-11-20 19:11:56 +08:00
#endif //TRONONEH7_SCAFFOLD_XIDIPWMETER_H