功能描述
电流环工作模式
模式 | 特点 | 功能和适用场景 | |
---|---|---|---|
电角度和位置测量 | 电流测量和数据计算 | ||
Mode0 电流环开环工作模式 |
|
|
适用于简单的开环控制,无需电流反馈和位置反馈。 |
Mode1 电流环闭环工作模式 |
|
| 支持死区补偿、交叉解耦等功能,可通过寄存器配置使能。 适用于需要电流反馈但无需位置反馈的闭环控制。 |
Mode2 电流环闭环工作模式 (使用位置编码器数据) |
|
|
支持死区补偿、交叉解耦等功能,可通过寄存器配置使能。 适用于需要电流反馈和位置反馈的高精度闭环控制。 |
HCL Mode0 工作模式为 Mode0 的工作模式的示意图,绿色底色为 HCL 在 Mode0 模式下工作的模块。
HCL Mode1 工作模式为 Mode1 的工作模式的示意图,绿色底色为 HCL 在 Mode 1 模式下工作的模块。
HCL Mode2 工作模式为 Mode2 的工作模式的示意图,绿色底色为 HCL 在 Mode2 模式下工作的模块。
电流环采样预处理
电流环采样预处理模块,是对 ADC 0/1 采集到的 U 相电流和 V 相电流数据进行预处理,以下为电流环采样预处理模块的输入输出参数列表。
参数 |
Symbol |
描述 |
数据类型 |
数值表示范围 |
---|---|---|---|---|
输入参数 1 |
DIU |
ADC 采集的 U 相电流 |
14 位无符号整型 |
[0, 16383] |
输入参数 2 |
DIV |
ADC 采集的 V 相电流 |
14 位无符号整型 |
[0, 16383] |
输入参数 3 |
IUoff |
U 相 Offset 电流 |
14 位无符号整型 |
[0, 16383] |
输入参数 4 |
IVoff |
V 相 Offset 电流 |
14 位无符号整型 |
[0, 16383] |
输入参数 5 |
CurrCalGain |
电流增益 |
Q10(1b 符号+5b 整数+10b 小数) |
[-32, 31.999755859] |
输出参数 1 |
PDIU |
预处理后的 U 相电流 |
16 位有符号 Q15(1b 符号+15b 小数) |
[-1, 0.999969482] |
输出参数 2 |
PDIV |
预处理后的 V 相电流 |
16 位有符号 Q15(1b 符号+15b 小数) |
[-1, 0.999969482] |
SDFM 数据处理
项目 | Symbol | 描述 | 精度 | 范围 |
---|---|---|---|---|
函数名 | SDFM_Process () | SDFM 处理 | ||
输入参数 1 | IU_SDFM |
U 相电流 (来自 SDFM 的数据) |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输入参数 2 | IV_SDFM |
V 相电流 (来自 SDFM 的数据) |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输入参数 3 | PGAIN | 处理增益 |
Q10 (1b 符号+ 5b 整数+10b 小数) | [-32 , 31.999755859] |
输入参数 4 | IU_SDFM_OFF | U 相偏置电流 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输入参数 5 | IV_SDFM_OFF | V 相偏置电流 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输出参数 1 | DIU | 处理后的 U 相电流 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输出参数 2 | DIV | 处理后的 V 相电流 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
- 如果结果大于 IQ15(1.0),结果等于 32767。
- 如果结果小于 IQ15(-1.0),结果等于 -32768。
Clarke 变换
Clarke 变换功能模块,实现标准的 Clarke 变换计算,计算的输入和输出采用 Q15 定点数格式。
项目 | Symbol | 描述 | 精度 | 范围 |
---|---|---|---|---|
函数名 | CLARK_TRFM () | Clark 变换计算 | ||
输入参数 1 | DIU |
U 相电流 (来自电流采样预处理模块) |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输入参数 2 | DIV |
V 相电流 (来自电流采样预处理模块) |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输出参数 1 | Iα | Alpha 轴电流 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输出参数 2 | Iβ | Beta 轴电流 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
Clark 的计算公式如下:


Park 变换
Park 变换功能模块,实现的标准的 Park 变换计算,计算的输入和输出采用的 Q15 定点数格式。其中,正弦值和余弦值的数据来源于内部 Cordic 模块根据电角度计算后提供的结果。
项目 | Symbol | 描述 | 精度 | 范围 |
---|---|---|---|---|
函数名 | PARK_TRFM () | Park 变换计算 | ||
输入参数 1 | Iα |
Alpha 轴电流 来自 CLARK 变换 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输入参数 2 | Iβ |
Beta 轴电流 来自 CLARK 变换 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输入参数 3 | sinθ |
旋转角度的正弦值 来自 Cordic 加速模块 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输入参数 4 | cosθ |
旋转角度的余弦值 来自 Cordic 加速模块 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输出参数 1 | Id | D 轴电流 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
输出参数 2 | Iq | Q 轴电流 |
Q15 (1b 符号+15b 小数) | [-1 , 0.999969482] |
Park 的计算公式如下:


QEP 电角度计算
QEP 电角度计算模块,实现的是对 QEP 的位置数据进行处理,利用软件初始化给定的参数 (这些参数与电机的参数相关),进行电机的电角度的计算。其中 HCL0 获取的 QEP 位置数据源来自于 QEP0,而 HCL1 的 QEP 位置数据源来自于 QEP1,初始化时需要注意区分。
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | QPOSCNT | 当前计数器值,来自 QEP | 32 位无符号整型 | [0x0 , 0xFFFFFFFF] |
输入参数 2 | QEP_INIT_POS | QEP 初始位置值 | 24 位无符号整型 | [0x0 , 0xFFFFFF] |
输入参数 3 | QEP_POS_CAL | QEP 位置校正值 | 25 位有符号整型 | [-224 , 224 - 1] |
输入参数 4 | QEP_MAX_POS | QEP 最大位置值 | 24 位无符号整型 | [0x0 , 0xFFFFFF] |
输入参数 5 | QEP_ELECT_MAX | QEP 最大电角度 | 24 位无符号整型 | [0x0 , 0xFFFFFF] |
输入参数 6 | QEP_ELECT_FAC | 电角度转换因子 | 24 位无符号 Q24 | [0 , 0.999999940] |
输出参数 1 | ELECT_THETA0 | QEP 电角度 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输出参数 2 | ELECT_OUT | 电角度 (脉冲数) | 无符号整型 24 位 | [0x0 , 0xFFFFFF] |
ABS 电角度计算
ABS 电角度计算模块,实现的是对绝对值编码器接口 (即 TA-IF、BIS-IF 和 EDAT-IF 绝对值编码器接口)的位置数据进行处理,利用软件初始化给定的参数 (这些参数与电机的参数相关),进行电机的电角度的计算。其中 HCL0 获取的绝对值位置数据源来自于绝对值编码器接口 TA-IF0/BIS-IF0/EDAT-IF0,而 HCL1 的绝对值位置数据源来自于 TA-IF1/BIS-IF1/EDAT-IF1,初始化时需要注意区分。
另外,ABS 电角度计算模块支持电角度补偿,用于补偿由于绝对值编码器读取位置数据的延迟带来的误差。
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | ABS_POS | 当前位置值,来自 TA/ BIS/ EDAT_IF | 24 位无符号整型 | [0x0 , 0xFFFFFF] |
输入参数 2 | ABS_POS_COMP | 绝对值编码器的位置补偿值 | 25 位有符号整型 | [-224 , 224 - 1] |
输入参数 3 | ABS_MAX_POS | 绝对值编码器的最大位置 | 24 位无符号整型 | [0x0 , 0xFFFFFF] |
输入参数 4 | ABS_ELECT_MAX | 绝对值编码器的最大电角度 | 24 位无符号整型 | [0x0 , 0xFFFFFF] |
输入参数 5 | ABS_ELECT_FAC | 位置转换因子 | 32 位无符号整型 | [0x0 , 0xFFFFFFFF] |
输入参数 6 | ETHETA_CAL_RSHIFT | 右移位数配置 | 5 位无符号整型 | [0x0,0x1F] |
输入参数 7 | Motor_Speed | 测试的 RPM 转速 (来自经过滑动平均滤波后的转速) | 16 位有符号整型 | [-215 , 215 - 1] |
输入参数 8 | DEANG_Comp | 传输延迟进行的角度补偿系数 | Q15(1b 符号+16b 整数+15b 小数) | [-65536 , 65535.999969482] |
输入参数 9 | HCL_ENC_RATIO | HCL 周期与编码器读取位置周期比 | 5 位无符号整型 | [0x0,0x1F] |
输出参数 1 | ELECT_THETA1 | ABS 电角度 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输出参数 2 | ELECT_OUT | 电角度 (脉冲数) | 无符号整型 16 位 | [0x0 , 0xFFFF] |
THETA_SEL
THETA_SEL 功能用于 Mode0 /1 /2 不同工作模式下电角度的选择,在 Mode0 和 Mode1 的情况下,电角度选择寄存器 THETA0 的位置数据;而在 Mode2 的情况下,电角度选择编码器的位置数据,也就是 QEP 或绝对值编码器的数据,具体选择通路如下所示:
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | ELECT_THETA0 | QEP 电角度 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 2 | ELECT_THETA1 | ABS 电角度 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 3 | THETA0 | THETA0 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输出参数 1 | sin ETHETA | 电角度 ETHETA 正弦值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输出参数 2 | cos ETHETA | 电角度 ETHETA 余弦值 | 16 位有符号 Q15 | [-1 , 0.999969482] |

UDQ_SEL
UDQ_SEL 功能用于 Mode0 / 1 / 2 不同工作模式下 UD 和 UQ 输入信号源的选择,在 Mode0 的情况下,反 Park 变换模块的输入选择的是寄存器的数值,从而实现电流环开环的计算;而在 Mode1 和 Mode2 的情况下,反 Park 变换模块的输入来自上一级的功能模块的输出,从而实现电流环闭环的计算,具体选择通路如下所示:
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | UDM0 | Mode0 的 UDM0(来自寄存器) | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 2 | UQM0 | Mode0 的 UQM0(来自寄存器) | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 3 | UD | Mode1/2 的 UD(来自 D 轴 PID) | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 4 | UQ | Mode1/2 的 UQ(来自 Q 轴的 PID) | 16 位有符号 Q15 | [-1 , 0.999969482] |
输出参数 1 | UDS | 选择输出数据 UDS | 16 位有符号 Q15 | [-1 , 0.999969482] |
输出参数 2 | UQS | 选择输出数据 UQS | 16 位有符号 Q15 | [-1 , 0.999969482] |

DPID
DPID 实现的功能是 D 轴的 PID 控制算法,PID 的控制流程如下所示:
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | ID_REF | D 轴参考电流值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 2 | ID | D 轴电流计算值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 3 | DPID_KP | D 轴 PID 比例系数 | Q15(1b 符号+4b 整数+15b 小数) | [-16 , 15.999969482] |
输入参数 4 | DPID_KI | D 轴 PID 积分系数 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 5 | DPID_UMAX | D 轴 PID 输出最大限值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 6 | DPID_UMIN | D 轴 PID 输出最小限值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输出参数 1 | UD | D 轴 PID 输出值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
QPID
QPID 实现的功能是 Q 轴的 PID 控制算法,PID 的控制流程如下所示:
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | IQ_REF | Q 轴参考电流值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 2 | IQ | Q 轴电流计算值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 3 | QPID_KP | Q 轴 PID 比例系数 | Q15(1b 符号+4b 整数+15b 小数) | [-16 , 15.999969482] |
输入参数 4 | QPID_KI | Q 轴 PID 积分系数 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 5 | QPID_UMAX | Q 轴 PID 输出最大限值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 6 | QPID_UMIN | Q 轴 PID 输出最小限值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 7 | QPID_COMP | Q 轴 PID 补偿值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 8 | INTG_SEP_ERR | 积分分离值 | 15 位无符号 Q15 | [0 , 0.999969482] |
输出参数 1 | UQ | Q 轴 PID 输出值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
电压补偿
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | VoltAdc | ADC 采集的母线电压 | 无符号 14 位整型 | [0, 16383] |
输入参数 2 | VoltADCAveVal |
ADC 采集的母线电压平均值 | 无符号 14 位整型 | [0, 16383] |
输入参数 3 | AveVal_Q14 |
voltADCAveVal 的倒数 | Q14 | [0,0.999938964] |
输入参数 4 | VComp_Coff_MAX |
电压补偿系数的最大值 | Q10 | [0,3.9990234375] |
输入参数 5 | VComp_Coff_MIN |
电压补偿系数的最小值 | Q10 | [0,3.9990234375] |
输入参数 6 | D_COMP |
D 轴补偿 来自交叉解耦和反电势补偿模块 |
Q15 (1b 符号 + 15b 小数) |
[-1 , 0.999969482] |
输入参数 7 | Q_COMP |
Q 轴补偿 来自交叉解耦和反电势补偿模块 |
Q15 (1b 符号 + 15b 小数) |
[-1 , 0.999969482] |
输出参数 1 | Volt_Comp_Coff | 电压补偿系数 | Q10 | [0,3.9990234375] |
输出参数 2 | Ud_c | D 轴补偿后电压 |
Q15 (1b 符号+15b 小数) |
[-1 , 0.999969482] |
输出参数 3 | Uq_c | Q 轴补偿后电压 |
Q15 (1b 符号+15b 小数) |
[-1 , 0.999969482] |
交叉解耦和反电势补偿
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | Id |
D 轴电流分量 来自 PARK 变换 |
Q15 (1b 符号+15b 小数) | [-1, 0.999969482] |
输入参数 2 | Iq |
Q 轴电流分量 来自 PARK 变换 |
Q15 (1b 符号+15b 小数) | [-1, 0.999969482] |
输入参数 3 | AE_spd1 | AE 速度 (标幺值) | 定点数 | [0, 0xFFFFFFFF] |
输入参数 4 | OMEG_RSHIFT | 角速度右移 |
无符号整型数 4 位 | [0x0, 0xF] |
输入参数 5 | DCP_MOD_SEL | 补偿模式选择 |
无符号整型数 2 位 | [0x0 , 0x3] |
输入参数 6 | Fremax_div_rate | 电流环参数寄存器配置 |
Q15 (1b 符号+2b 整数 +15b 小数) | [-4, 3.999969482] |
输入参数 7 | Isdpu | 电流环参数寄存器配置 |
Q10 (1b 符号+5b 整数 +10b 小数) | [0, 31.9990234375] |
输入参数 8 | Isqpu | 电流环参数寄存器配置 |
Q10 (1b 符号+5b 整数 +10b 小数) | [0, 31.9990234375] |
输入参数 9 | LD | 电流环参数寄存器配置 |
Q10 (1b 符号+15b 小数) |
[0, 0.999969482] |
输入参数 10 | LQ | 电流环参数寄存器配置 |
Q15 (1b 符号+15b 小数) |
[0, 0.999969482] |
输入参数 11 | FluxRotor | 电流环参数寄存器配置 |
Q15 (1b 符号+15b 小数) |
[0, 0.999969482] |
输出参数 1 | D_COMP | D 轴补偿 |
Q15 (1b 符号+15b 小数) |
[-1, 0.999969482] |
输出参数 2 | Q_COMP | Q 轴补偿 |
Q15 (1b 符号+15b 小数) |
[-1, 0.999969482] |
反 Park 变换
反 Park 变换功能模块,实现的标准的反 Park 变换计算,计算的输入和输出采用的 Q15 定点数格式。其中,正弦值和余弦值的数据来源于内部 Cordic 模块根据电角度计算后提供的结果。
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | Ud | DPID 或 UDM0 输出的 UD | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 2 | Uq | QPID 或 UQM0 输出的 UQ | 16 位有符号 Q15 | [-1, 0.999969482] |
输入参数 3 | sin θ | 电角度 θ 的正弦值 | 16 位有符号 Q15 | [-1, 0.999969482] |
输入参数 4 | cos θ | 电角度 θ 的余弦值 | 16 位有符号 Q15 | [-1, 0.999969482] |
输出参数 1 | Uα | Alpha 轴电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
输出参数 2 | Uβ | Beta 轴电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
Park 的计算公式如下:
Uα = Ud *cosθ - Uq*sinθ
Uβ = Ud *sinθ - Uq*cosθ
死区补偿
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | ID | D 轴电流计算值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 2 | IQ | Q 轴电流计算值 | 16 位有符号 Q15 | [-1 , 0.999969482] |
输入参数 3 | DT_COMP_DAT | 死区补偿数据 (需要根据初始配置值计算获得) | 15 位无符号 Q15 | [0, 0.999969482] |
输入参数 4 | DT_LP_FLT | 死区补偿低通滤波系数 (需要根据初始配置值计算) | 15 位无符号 Q15 | [0, 0.999969482] |
输入参数 5 | ETHETA | 电角度 | 16 位有符号 Q15 | [-1, 0.999969482] |
输出参数 1 | UA_COMP | Alpha 轴死区补偿电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
输出参数 2 | UB_COMP | Beta 轴死区补偿电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
SVPWM
SVPWM 的处理流程图如下

- Iclarke()为 Clarke 逆变换
- Sector()为扇区号计算函数
- Vectime()为矢量时间计算函数
- Duty_Cal()为占空比计算函数
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | Uα_c | PID 电流输出 | 16 位有符号 Q15 | [-1, 0.999969482] |
输入参数 2 | Uβ_c | PID 电流输出 | 16 位有符号 Q15 | [-1, 0.999969482] |
输出参数 1 | U_PHU | U 相电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
输出参数 2 | U_PHV | V 相电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
输出参数 3 | U_PHW | W 相电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | U_PHU | U 相电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
输入参数 2 | U_PHV | V 相电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
输入参数 3 | U_PHW | W 相电压 | 16 位有符号 Q15 | [-1, 0.999969482] |
输出参数 1 | SEC_NUM | 扇区号 | 16 位无符号整型数 | 1/ 2/ 3/ 4/ 5/ 6 |
输出参数 2 | U_PHU_ABS | U 相电压绝对值 | 16 位有符号 Q15 | [0, 0.999969482] |
输出参数 3 | U_PHV_ABS | V 相电压绝对值 | 16 位有符号 Q15 | [0, 0.999969482] |
输出参数 4 | U_PHW_ABS | W 相电压绝对值 | 16 位有符号 Q15 | [0, 0.999969482] |
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | U_PHU_ABS | U 相电压绝对值 | 16 位有符号 Q15 | [0, 0.999969482] |
输入参数 2 | U_PHV_ABS | V 相电压绝对值 | 16 位有符号 Q15 | [0, 0.999969482] |
输入参数 3 | U_PHW_ABS | W 相电压绝对值 | 16 位有符号 Q15 | [0, 0.999969482] |
输入参数 4 | SEC_NUM | 扇区号 | 16 位无符号整型数 | 1/2/3/4/5/6 |
输入参数 5 | PWM_TIMCOST | PWM 时间常数 | 20 位无符号 Q15 | [0, 31.999969482] |
输入参数 6 | PWM_PRD | PWM 周期 | 16 位无符号整型数 | [0, 0xFFFF] |
输入参数 7 | PRD_OM | 周期过调制值 | 16 位无符号整型数 | [0, 0xFFFF] |
输出参数 1 | VECT1 | 时间矢量 1 | 16 位无符号整型数 | [0, 0xFFFF] |
输出参数 2 | VECT2 | 时间矢量 2 | 16 位无符号整型数 | [0, 0xFFFF] |
输出参数 3 | VECT0 | 时间矢量 0 | 16 位无符号整型数 | [0, 0xFFFF] |
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | VECT1 | 时间矢量 1 | 16 位无符号整型数 | [0, 0xFFFF] |
输入参数 2 | VECT2 | 时间矢量 2 | 16 位无符号整型数 | [0, 0xFFFF] |
输入参数 3 | VECT0 | 时间矢量 0 | 16 位无符号整型数 | [0, 0xFFFF] |
输入参数 4 | SEC_NUM | 扇区号 | 16 位无符号整型数 | 1/ 2/ 3/ 4/ 5/ 6 |
输入参数 5 | MAXDUTY | 最大占空比 | 16 位无符号整型数 | [0, 0xFFFF] |
输入参数 6 | MINDUTY | 最小占空比 | 16 位无符号整型数 | [0, 0xFFFF] |
输出参数 1 | TD1 | 时间占空比 1 | 16 位无符号整型数 | [0, 0xFFFF] |
输出参数 2 | TD2 | 时间占空比 2 | 16 位无符号整型数 | [0, 0xFFFF] |
输出参数 3 | TD3 | 时间占空比 3 | 16 位无符号整型数 | [0, 0xFFFF] |
速度测量
速度测量模块,用于测量电机的转速,其中速度的输出支持 RPM 的速度输出 (即 AE_spd0),此数据可以经过滑动平均滤波模块后,提供给电角度补偿算法。另外速度的输出支持更高精度的输出 (即 AE_spd1),用定点数表示,该结果是提供给软件的速度使用。
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | POS | 当前的位置值 | 24 位无符号整型 | [0, 0xFFFFFF] |
输入参数 2 | SPD_DIR_THR | 方向阈值 | 24 位无符号整型 | [0, 0xFFFFFF] |
输入参数 3 | ABS_MAX | 位置计数器最大值 | 24 位无符号整型 | [0, 0xFFFFFF] |
输入参数 4 | AE_SpdMCoff0 | AE 速度定标因子 0 | 32 位无符号整型 | [0, 0xFFFFFFFF] |
输入参数 5 | AE_DelPosCoff | AE 最大速度限制 | 24 位无符号整型 | [0, 0xFFFFFF] |
输入参数 6 | SPD_CAL_RSHIFT0 | 速度计算右移 | 5 位无符号整型 | [0, 0x1F] |
输入参数 7 | AE_SpdMCoff1 | AE 速度定标因子 1 | 32 位无符号整型 | [0, 0xFFFFFFFF] |
输入参数 8 | SPD_CAL_RSHIFT1 | 速度计算右移 | 5 位无符号整型 | [0, 0x1F] |
输出参数 1 | AE_spd0 | AE 速度 (单位 rpm) | 16 位有符号整型 | [-215, 215-1] |
输出参数 2 | AE_spd1 | AE 速度 (标幺值) | 定点数 | [0, 0xFFFFFFFF] |
速度滑动平均滤波
速度滑动平均滤波模块,是对速度测量模块输出的 RPM 速度进行滑动平均滤波,滑动平均滤波的深度最大支持对 16 次的 RPM 速度进行。
参数 | Symbol | 描述 | 数据类型 | 数值表示范围 |
---|---|---|---|---|
输入参数 1 | AE_spd0 | AE 测速输出值 | 16 位有符号整型 | [-215 , 215-1] |
输入参数 2 | Filt_times | 滤波次数 | 3 位无符号整型 | [0x0 , 0x7] |
输出参数 1 | Motor_Speed | 电机速度 (单位 rpm) | 16 位有符号整型 | [-215, 215-1] |
电流环断续点
- 通过寄存器字段 HCL_BPM_EN
使能电流环断点功能。
使能后,寄存器字段 HCL_BP_NODE 以及 HCL_RP_NODE 生效,分别指示断点的节点位置和续点的节点位置。
- 使能硬件电流环断和续点功能后,硬件电流环计算到断点处停止计算,并且产生中断状态通知 CPU。
- 软件根据断点处的数据,对用户所需的算法进行计算,计算出续点所需的数据。
- 软件通过寄存器 RSP_PARA0/1/2 写入续点数据,且对寄存器字段 HCL_RP_START 写 0x1,触发硬件电流环从续点继续完成本次电流环计算。
- 设置下列断点和续点:
- Node D:断点 (BreakPoint),在执行到这一点时,电流环停止,并产生一个中断请求 (IRQ)。
- Node E:续点 (Continue Point),在中断函数处理完毕后,从这一点继续执行后续流程。
电流环执行顺序:- A → B → C → D
- 在 D 点,电流环停止,触发中断请求 (IRQ)。
- 中断函数进行用户的 PID 算法,获得 Ud 和 Uq 数据作为续点数据被写入 RSP_PARA0/1 寄存器。
- 通过设置 HCL_RP_START = 0x1 来触发电流环重新启动。
- 电流环从 F 点开始继续执行:F → G。
- 根据新的 Ud 和 Uq 值更新 EPWM 的占空比,完成本次计算。
