很多简历写“精通 PWM”,一问 SiC MOSFET 死区给多少就卡壳。这篇把 MCU PWM 控制、RISC-V 中断机制、FPGA 图像处理算法 三件事串起来讲,因为它们在电机驱动和数字电源里本来就是一套东西。

一、MCU PWM 控制:从呼吸灯到 FOC
PWM 本质=定时器+比较寄存器+输出映射。
时钟树是先决条件:GD32VF103 用 HSI 内部 8M 还是 HSE 8M 外接,决定 PWM 频率误差。预分频 PSC 和自动重载 ARR 算错,电机吱吱叫。
中心对齐 vs 边沿对齐:电机 FOC 用中心对齐,ADC 在计数器中点触发采样,电流纹波最小。
死区时间 Dead Time:IGBT 通常 100~200ns,SiC MOSFET 20~50ns,写进定时器 BDTR 寄存器;先楫 HPM5E00 实测故障引脚到 PWM 关断延迟 80ns。
故障保护:用刹车引脚(BKIN)接硬件过流比较器,不进中断直接硬件关 PWM,比软件关安全一个数量级。
影子寄存器:改占空比必须走影子寄存器,否则下一周期才生效,否则电机抖。
代码片段(伪代码)
PWM_Init(10kHz, CENTER_ALIGN);
PWM_SetDeadTime(40ns); // SiC
PWM_BKIN_Enable(FAULT_PIN);
ADC_TriggerOnPWM_Middle();
某 10kW 数字电源用 HPM5E00 跑 500kHz PWM,电压环 1μs,过流硬件关断 <100ns,比用 STM32F334 的软件保护稳。
二、RISC-V 中断机制:为什么比 ARM NVIC 灵活但也容易翻车
ARM Cortex-M 用 NVIC,向量表+硬件压栈,中断延迟固定。
RISC-V 用 PLIC(平台级)+ CLIC(核级),mtvec 可配 Direct/Vector 模式,mepc 存返回地址。
痛点:传统 PLIC 软切上下文延迟高,某增强 EPLIC 在 Ibex 核上压到 7 个时钟周期,媲美 M3。
实战:沁恒 CH32V 在电机控制里把 PWM 周期中断设最高优先级,用 DMA 搬 ADC 数据,中断里只置标志位,主循环算 FOC,整个电流环 <5μs。
坑:RISC-V 的“全局中断使能”在 mstatus.MIE,不在 PRIMASK,从 ARM 迁过来的人容易忘开。
三、FPGA 图像处理算法:MCU 干不了的留给逻辑阵列
AG32(RISC-V 248MHz + 2K LUT FPGA)实测方案:
预处理下沉到 FPGA: Bayer 转灰度、 Sobel 边缘、行缓存 FIFO,用 Verilog 写,MCU 只收 ROI 坐标。
数字示波器案例:FPGA 收 AD 数据+做触发,MCU 画波形,采样率从几十 MS/s 跳到几百 MS/s,丢数率降 90%。
多串口扩展:FPGA 扩 15 个硬件 UART,波特率独立,比软件模拟稳定,硬件成本降 30%。
四、三者怎么配合
典型电机驱动板:
RISC-V MCU 跑 FOC 算法(中断调度)
高级定时器出互补 PWM(带死区+刹车)
内部 FPGA 做编码器 ABZ 硬件解码或电流环协处理
ADC 中点采样由 PWM 硬件触发,不占 CPU
技术人搜 MCU PWM 控制教程、RISC-V 中断响应优化、FPGA 图像预处理方案 时,要的不是概念,是能进代码的参数。上面那些 ns、μs、LUT 数,才是能抄的部分。