上海灵动微电子股份有限公司MM32BIN560C 框图如下:

在官方的HALL-FOC-560C例子,霍尔FOC,我进行了相关引脚总结
三电阻方案的明确证据
- 编译开关定义
在 USER/inc/board.h 中明确设置了:
#define THREE_SHUNT_R 1 // 明确启用三电阻模式
分类统计:
- 电机控制PWM输出: 6个引脚(三相上下桥臂)
- 霍尔传感器输入: 3个引脚(U/V/W相位置检测)
- ADC采集: 5个引脚(电压、电流、电位器)
- 运放配置: 9个引脚(4个运放的输入输出)
- 比较器保护: 2个引脚(硬件过流保护)
- 驱动器控制: 1个引脚(使能信号)
1. 核心控制层(6个引脚)
功能: 三相PWM输出,实现FOC算法控制
- GPIOB PB7 - BLDC1_UH:U相上桥臂PWM输出
- GPIOB PB5 - BLDC1_VH:V相上桥臂PWM输出
- GPIOB PB3 - BLDC1_WH:W相上桥臂PWM输出
- GPIOB PB6 - BLDC1_UL:U相下桥臂PWM输出
- GPIOB PB4 - BLDC1_VL:V相下桥臂PWM输出
- GPIOA PA15 - BLDC1_WL:W相下桥臂PWM输出
2. 传感检测层(11个引脚)
位置传感: 3个霍尔传感器
- GPIOA PA0 - HALL_U:U相霍尔传感器输入
- GPIOA PA1 - HALL_V:V相霍尔传感器输入
- GPIOA PA2 - HALL_W:W相霍尔传感器输入
电流检测: 2相电流+总和电流
- GPIOA PA6 - IR_U:U相电流检测(ADC1通道6)
- GPIOB PB2 - IR_V:V相电流检测(ADC1通道10)
- GPIOA PA3 - ISUM:电流总和检测(ADC1通道3)
电压检测: 母线电压监控
- GPIOA PA7 - VBUS:母线电压检测(ADC1通道7)
用户输入: 速度电位器
- GPIOA PA10 - VR:速度给定电位器(ADC2通道0)
3. 信号调理层(9个引脚)
功能: 4个运放的完整配置,用于电流信号放大和滤波
- GPIOA PA4 - OPAMP1_INP:OPAMP1正相输入(U相电流)
- GPIOA PA5 - OPAMP1_INM:OPAMP1反相输入(反馈网络)
- GPIOB PB0 - OPAMP2_INP:OPAMP2正相输入(V相电流)
- GPIOB PB1 - OPAMP2_INM:OPAMP2反相输入(反馈网络)
- GPIOB PB12 - OPAMP3_INP:OPAMP3正相输入(辅助信号)
- GPIOB PB11 - OPAMP3_INM:OPAMP3反相输入(反馈网络)
- GPIOB PB15 - OPAMP4_INP:OPAMP4正相输入(总和电流)
- GPIOA PA8 - OPAMP4_INM:OPAMP4反相输入(反馈网络)
- 极 PA9 - OPAMP4_INO:OPAMP4输出到ADC
4. 保护安全层(2个引脚)
功能: 硬件比较器,提供快速过流保护
- GPIOA PA11 - COMP_INP:比较器正相输入(电流信号)
- GPIOA PA12 - COMP_INM:比较器反相输入(参考电压)
5. 人机交互层(3个引脚)
功能: 用户控制接口和状态指示
- GPIOD PD2 - KEY1:用户启停/方向控制按钮
- GPIOD PD3 - LED2:系统运行状态指示灯
- GPIOA PA10 - VR:速度给定电位器(已在传感层列出)
6. 功率驱动层(1个引脚)
功能: 驱动芯片使能控制
- GPIOC PC12 - DRV_EN:功率驱动芯片使能信号
总计:32个引脚,构成了完整的基于霍尔传感器的FOC电机控制系统。

系统模块,功能分类,端口,引脚,引脚名称,详细功能描述,工作模式,信号类型
电源管理,母线电压检测,GPIOA,PA7,VBUS,直流母线电压监控(ADC1通道7),模拟输入,模拟量
电源管理,电流总和检测,GPIOA,PA3,ISUM,总电流测量(ADC1通道3),模拟输入,模拟量
电机驱动,上桥PWM输出,GPIOB,PB7,BLDC1_UH,U相上桥臂PWM输出,复用功能(TIM1),PWM
电机驱动,上桥PWM输出,GPIOB,PB5,BLDC1_VH,V相上桥臂PWM输出,复用功能(TIM1),PWM
电机驱动,上桥PWM输出,GPIOB,PB3,BLDC1_WH,W相上桥臂PWM输出,复用极,能(TIM1),PWM
电机驱动,下桥PWM输出,GPIOB,PB6,BLDC1_UL,U相下桥臂PWM输出,复用功能(TIM1),PWM
电机驱动,下桥PWM输出,GPIOB,PB4,BLDC1_VL,V相下桥臂PWM输出,复用功能(TIM1),PWM
电机驱动,下桥PWM输出,GPIOA,PA15,BLDC1_WL,W相下桥臂PWM输出,复用功能(TIM1),PWM
位置传感,霍尔信号输入,GPIOA,PA0,HALL_U,U相霍尔传感器输入,输入浮空(TIM2_CH1),数字量
位置传感,霍尔信号输入,GPIOA,PA1,HALL_V,V相霍尔传感器输入,输入浮空(TIM2_CH2),数字量
位置传感,霍尔信号输入,GPIOA,PA2,HALL_W,W相霍尔传感器输入,输入浮空(TIM2_CH3),数字量
电流检测,U相电流采样,GPIOA,PA6,IR_U,U相电流检测(ADC1通道6),模拟输入,模拟量
电流检测,V相电流采样,GPIOB,PB2,IR_V,V相电流检测(ADC1通道10),模拟输入,模拟量
信号调理,运放输入配置,GPIOA,PA4,OPAMP1_INP,OPAMP1正相输入(U相电流),模拟输入,模拟量
信号调理,运放输入配置,GPIOA,PA5,OPAMP1_INM,OPAMP1反相输入(反馈网络),模拟输入,模拟量
信号调理,运放输入配置,GPIOB,PB0,OPAMP2_INP,OPAMP2正相输入(V相电流),模拟输入,模拟量
信号调理,运放输入配置,GPIOB,PB1,OPAMP2_INM,OPAMP2反相输入(反馈网络),模拟输入,模拟量
信号调理,运放输入配置,GPIOB,PB12,OPAMP3_INP,OPAMP3正相输入(辅助信号),模拟输入,模拟量
信号调理,运放输入配置,GPIOB,PB11,OPAMP3_INM,OPAMP3反相输入(反馈网络),模拟输入,模拟量
信号调理,运放输入配置,GPIOB,PB15,OPAMP4_INP,OPAMP4正相输入(总和电流),模拟输入,模拟量
信号调理,运放输入配置,GPIOA,PA8,OPAMP4_INM,OPAMP4反相输入(反馈网络),模拟输入,模拟量
信号调理,运放输出配置,GPIOA,PA9,OPAMP4_INO,OPAMP4输出到ADC,模拟输入,模拟量
保护电路,硬件过流保护,GPIOA,PA11,COMP_INP,比较器正相输入(电流信号),模拟输入,模拟量
保护电路,硬件过流保护,GPIOA,PA12,COMP_INM,比较器反相输入(参考电压),模拟输入,模拟量
用户接口,速度控制输入,GPIOA,PA10,VR,速度给定电位器(ADC2通道0),模拟输入,模拟量
用户接口,控制按钮输入,GPIOD,PD2,KEY1,用户启停/方向控制按钮,输入上拉,数字量
用户接口,状态指示输出,GPIOD,PD3,LED2,系统运行状态指示灯,输出推挽,数字量
驱动控制,功率驱动使能,GPIOC,PC12,DRV_EN,功率驱动芯片使能信号,输出推挽,数字量
问题1、三个电阻采样,是同时采样三个电流吗?
错误!采样时刻,只采集两相,因为采样窗口小的原因,占空比是一直变大变小的,有一相不好采集,时间短,所以同一时刻只需要采集两相,剩下一相电流用基尔霍夫电流定律计算即可。
三相电阻采样方式总结
1. 硬件配置方案
三电阻下桥臂采样:
U相采样:GPIOA PA6 (ADC1通道6) - IR_U
V相采样:GPIOB PB2 (ADC1通道10) - IR_V
W相采样:通过电流总和和数学计算间接获得
- 采样时序策略
分时交替采样:
在不同PWM周期交替采样不同相组合
利用PWM周期中间的安全窗口(5-10μs)
避免开关噪声干扰
- 核心计算公式
Clarke变换(α-β坐标):
Iα = I_a // 直接使用U相电流
Iβ = (I_a + 2*I_b) / √3 // 使用U和V相计算
第三相重构:
I_c = - (I_a + I_b) // 基于基尔霍夫电流定律
- 为什么这样设计?
物理约束:
PWM开关噪声限制安全采样窗口
在有限的5-10μs内无法完成三相顺序采样
同步采样需要昂贵硬件支持
数学完备性:
三相系统只有2个自由度,第三相是冗余的
Ia + Ib + Ic = 0 是物理定律,不是近似
工程优化:
降低成本:节省1个ADC通道和配套电路
提高可靠性:减少元器件数量
简化设计:降低时序同步难度
- 实际采样流程
ADC触发:在PWM周期中间位置触发采样
分时采样:不同周期采样U+V、V+W、W+U组合
电流重构:利用数学约束计算第三相
诊断验证:通过ISUM检测采样一致性
问题2三相采集电流在系统中参与哪些计算?哪些环节用到了?
电流采样在系统中的完整参与环节
- Clarke变换(α-β坐标系转换)
位置: M1_CONTROL/clarke.c

// 将三相电流转换为两相静止坐标系
Iα = I_a
Iβ = (I_a + 2*I_b)/√3
作用: 为Park变换准备数据,简化控制维度,三项变两位
- Park变换(d-q坐标系转换)
位置: M1_CONTROL/park.c
// 结合霍尔角度进行旋转坐标变换
Id = Iα * cosθ + Iβ * sinθ // 直轴电流(磁化分量)
Iq = -Iα * sinθ + Iβ * cosθ // 交轴电流(转矩分量)
作用: 实现磁场定向控制的核心变换

- 电流环PID控制
位置: M1_CONTROL/PID.c
// 电流闭环控制
Vd_output = PID_Calculate(&PID_Id, Id_ref - Id_actual)
Vq_output = PID_Calculate(&PID_Iq, Iq_ref - Iq_actual)
作用: 精确控制电流大小,实现转矩和磁链控制
- 逆Park变换
位置: M1_CONTROL/ipark.c
// 将d-q电压转换回α-β坐标系
Vα = Vd * cosθ - Vq * sinθ
Vβ = Vd * sinθ + Vq * cosθ
作用: 为SVPWM生成准备电压指令
- 过流保护和故障诊断
位置: M1_CONTROL/Diagnose.c
// 实时过流检测
if (abs(I_a) > OC_LIMIT || abs(I_b) > OC_LIMIT || abs(I_c) > OC_LIMIT) {
// 触发硬件保护
}
// 电流平衡验证(Ia + Ib + Ic ≈ 0)
if (abs(I_a + I_b + I_c) > IMBALANCE_THRESHOLD) {
// 传感器故障检测
}
作用: 系统安全保护机制
- 功率和效率计算
位置: M1_CONTROL/MC_Drive.c
// 实时功率计算
instant_power = Vbus * (I_a + I_b + I_c)
// 铜损计算
copper_loss = R * (I_a² + I_b² + I_c²)
// 效率优化
efficiency = output_power / (input_power + losses)
作用: 系统性能监控和优化
- 转矩计算和控制
位置: M1_CONTROL/FOC_Math.c
// 电磁转矩计算
torque = (3/2) * PolePairs * (Ψd * Iq - Ψq * Id)
// 转矩闭环控制
Iq_ref = torque_demand / (Kt * Ψm)
作用: 精确转矩控制实现
信号流总结
三相电流的完整处理链条:
ADC采样 → Clarke变换 → Park变换 → PID控制 →
逆Park变换 → SVPWM生成 → 功率器件驱动
同时并行处理:
过流保护(硬件快速保护)
故障诊断(软件诊断)
性能监控(效率优化)
三电阻方案提供了最完整的电流信息,使系统能够实现高性能的FOC控制、完善的保护机制和精细的效率优化
问题3 霍尔传感器,如何配合电流做计算?
霍尔传感器配置
- 硬件连接配置
在 DRIVE/drv_tim.c 中配置:
// PA0, PA1, PA2 作为霍尔传感器输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 配置为TIM2的输入捕获功能
GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_2); // TIM2_CH1
GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_2); // TIM2_CH2
GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_2); // TIM2_CH3
- 霍尔值处理
在 M1_CONTROL/HallHandle.c 中:
// 获取当前霍尔状态
RunHallValue = Get_Hall_Value(); // 返回1-6的有效值
// 计算电气角度
θ_elec = HallAngleTable[RunHallValue] + 角度插补
电流计算与霍尔的关联
- Park变换(关键关联点)
在 M1_CONTROL/park.c 中:
void Park_Transform(int16_t Ialpha, int16_t Ibeta, int16_t angle, int16_t *Id, int16_t *Iq)
{
// angle 来自霍尔传感器计算的θ_elec
*Id = Ialpha * cos(angle) + Ibeta * sin(angle);
*Iq = -Ialpha * sin(angle) + Ibeta * cos(angle);
}
- 逆Park变换
在 M1_CONTROL/ipark.c 中:
void InvPark_Transform(int16_t Vd, int16_t Vq, int16_t angle, int16_t *Valpha, int16_t *Vbeta)
{
// 同样使用霍尔角度
*Valpha = Vd * cos(angle) - Vq * sin(angle);
*Vbeta = Vd * sin(angle) + Vq * cos(angle);
}
- 速度计算
在 M1_CONTROL/HallHandle.c 中:
// 通过霍尔跳变时间计算速度
ω = (2π × 极对数) / Δt_hall
// 速度用于速度环PID控制
技术要点总结
霍尔传感器提供:
✅ 位置信息:电气角度θ_elec(用于坐标变换)
✅ 速度信息:实际转速ω(用于速度闭环)
✅ 换相信号:六步换相的基础
电流采样提供:
✅ 力矩信息:实际电流大小(用于电流闭环)
✅ 控制反馈:实现精确的FOC控制
两者结合实现:
磁场定向控制(FOC)
精确的转矩控制
平滑的速度调节
霍尔传感器告诉系统"转子在哪里",电流采样告诉系统"用多大力气",两者缺一不可