feat(FOC): 添加快速电压检测功能和PWM调试模式

新增基于跌幅检测的快速电压保护机制,在100us周期内响应电压异常,
当电压跌幅超过阈值或低于绝对下限时立即关机保护。同时添加PWM输出
调试模式便于硬件测试。

BREAKING CHANGE: 重构了电压检测逻辑,采用峰值跟踪算法替代固
定阈值检测,提高在动态供电环境下的可靠性
This commit is contained in:
cbb
2026-04-26 03:36:21 +08:00
parent bdf03517b3
commit f4fb23d640
9 changed files with 586 additions and 127 deletions
+9 -1
View File
@@ -24,7 +24,7 @@ class FlashEEPROM {
public:
// EEPROM emulation constants
static constexpr u32 EEPROM_START_ADDRESS = 0x0801F800; // 第一页(1KB)
static constexpr u32 EEPROM_DATA_PAGE2_ADDRESS = 0x801FC00; // 第二页(1KB)
static constexpr u32 EEPROM_DATA_PAGE2_ADDRESS = 0x0801FC00; // 第二页(1KB)
static constexpr u32 EEPROM_END_ADDRESS = 0x08020000; // Flash结束地址
static constexpr u32 EEPROM_MAX_SIZE = 0x800; // EEPROM最大容量
static constexpr u32 EEPROM_DATA_START_ADDRESS =
@@ -67,6 +67,14 @@ class FlashEEPROM {
u8 read_saved_system_config(void);
float read_angle();
// 节点 ID 独立读写函数(使用魔数+双重备份+计数器机制)
// 从 Flash 读取节点 ID(带魔数验证和双重备份回退)
FlashEepromStatus readNodeId(u16 *node_id) const;
// 保存节点 ID 到 Flash(写入主备份和备用备份)
FlashEepromStatus writeNodeId(u16 node_id);
// 擦除节点 ID 存储区(恢复默认值)
FlashEepromStatus eraseNodeId();
private:
FlashEepromStatus writeCRC(u32 CRC_NUM, bool saved);
};