#ifndef _NV_Storage_H__ #define _NV_Storage_H__ #include "os/os_types.h" #include "foc/core/PMSM_FOC_Core.h" #include "foc/commands.h" #pragma pack (push,1) typedef struct { float s_PhaseCurrLim; float s_maxDCVol; float s_minDCVol; float s_maxRPM; float s_maxEpmRPM; float s_maxEpmPhaseCurrLim; float s_maxTorque; float s_PhaseCurreBrkLim; float s_iDCeBrkLim; float s_LimitiDC; float n_currentBand; //电流环带宽 float n_minThroVol; float n_maxThroVol; u8 n_brkShutPower; u8 n_autoHold; u32 n_acc_time; u32 n_dec_time; u32 n_ebrk_time; u8 n_FwEnable; pid_conf_t pid_conf[PID_Max_id]; u16 crc16; }foc_params_t; typedef struct { u8 mot_nr; u8 poles; float r; float ld; float lq; float flux_linkage; float back_emf; s32 hall_table[8]; float offset; float est_pll_band; //normal工作模式下的pll带宽 float pos_lock_pll_band; //电机锁定模式下的pll带宽 u16 crc16; }motor_params_t; typedef struct { u16 u_maxRPM; u16 u_maxTorque; u16 u_maxIdc; u16 u_accTime;//加速曲线 }mc_gear_t; #define CONFIG_MAX_GEAR_NUM 5 typedef struct { mc_gear_t gears_48[CONFIG_MAX_GEAR_NUM]; mc_gear_t gears_96[CONFIG_MAX_GEAR_NUM]; u16 crc16; }mc_gear_config_t; #define MAX_TRQ_POINTS 60 #define MAX_SPD_POINTS 100 #define TBL_TRQ_INTVAL 10 #define TBL_SPD_INTVAL 100 struct lut_dq { s16 d; s16 q; }; typedef struct { struct lut_dq dq[MAX_TRQ_POINTS][MAX_SPD_POINTS]; u16 magic; u16 crc16; }torque_lut_t; #pragma pack(pop) #define motorParam_idx_0 3 #define motorParam_idx_1 (motorParam_idx_0 + 1) #define focParam_idx_0 (motorParam_idx_0 + 2) #define focParam_idx_1 (motorParam_idx_0 + 3) #define trq_Tbl_idx (focParam_idx_1 + 1) #define trq_Tbl_size (30) #define gear_config_idx_0 (trq_Tbl_idx + trq_Tbl_size) #define gear_config_idx_1 (gear_config_idx_0 + 1) void nv_storage_init(void); motor_params_t *nv_get_motor_params(void); foc_params_t *nv_get_foc_params(void); mc_gear_config_t *nv_get_gear_configs(void); void nv_save_angle_offset(float offset); void nv_save_motor_params(void); void nv_read_motor_params(void); void nv_save_foc_params(void); void nv_read_foc_params(void); void nv_save_hall_table(s32 *hall_table); void nv_set_pid(u8 id, pid_conf_t *pid); void nv_get_pid(u8 id, pid_conf_t *pid); void nv_set_hwbrake_mode(u8 mode); void nv_set_throttle_vol(float min, float max); void nv_set_ebrake_current(float phase_curr, float dc_curr); torque_lut_t *nv_get_trq_tlb(void); #endif /* _NV_Storage_H__ */