#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_maxiDC; 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_modulation; float n_PhaseFilterCeof; float n_currentBand; //电流环带宽 float n_minThroVol; float n_maxThroVol; u8 n_brkShutPower; pid_conf_t pid_conf[PID_Max_id]; u16 crc16; }foc_params_t; typedef struct { 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; #define MAX_TRQ_POINTS 60 #define MAX_SPD_POINTS 100 typedef struct { s16 d[MAX_TRQ_POINTS][MAX_SPD_POINTS]; s16 q[MAX_TRQ_POINTS][MAX_SPD_POINTS]; 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) void nv_storage_init(void); motor_params_t *nv_get_motor_params(void); foc_params_t *nv_get_foc_params(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); #endif /* _NV_Storage_H__ */