feat:优化电流采样速率 feat:优化PIDramp效率 feat:优化角度采样效率 fix:回滚CAN打包逻辑 feat:去除timer3 feat(FOC): 优化帕克逆变换与克拉克逆变换计算方式 将原有的三角函数计算替换为查表法,提高运算效率。同时添加了 sqrt(3)/2 的预计算常量,并优化了电压限制部分的计算逻辑,减少重复运算。
41 lines
786 B
C++
41 lines
786 B
C++
#ifndef _ADC_H
|
|
#define _ADC_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "stdint.h"
|
|
constexpr u8 FILTER_SIZE = 6;
|
|
constexpr u8 BLOCK_SIZE = FILTER_SIZE * sizeof(float);
|
|
class sampler {
|
|
private:
|
|
float vbus_samples[FILTER_SIZE + 1];
|
|
float currU_samples[FILTER_SIZE + 1];
|
|
float currV_samples[FILTER_SIZE + 1];
|
|
float currW_samples[FILTER_SIZE + 1];
|
|
float mcu_temp_samples[FILTER_SIZE + 1];
|
|
float drv_temp_samples[FILTER_SIZE + 1];
|
|
u8 current_sample_index;
|
|
|
|
float tempora_sample;
|
|
|
|
public:
|
|
sampler();
|
|
void update_mcu_temp(void);
|
|
void update_drv_temp(void);
|
|
void update_vbus_voltage(void);
|
|
void update_current(void);
|
|
|
|
float get_mcu_temp(void);
|
|
float get_drv_temp(void);
|
|
float get_vbus_voltage(void);
|
|
float get_current(char);
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|