各位好
由于我们购买了launchxl f28p65x开发板和boostxl drv8323rs模块,但motorcontrol sdk内没有能直接运行的demo,因此我选择了从f28003x系列的universal motorcontrol lab进行移植。
到目前我已经为移植做了:重新编写了内存布局cmd文件,重新配置GPIO,断开可能不兼容的开发板信号并跳线,修改了pwm和时钟树相关的宏定义,尝试向每个pwm管脚都添加了双向的cmpss支持(因为f28p65x的pwm与cmpss的组合与demo中差别较大),并修复了SDK提供的drv8323s驱动中SPI读写命令位的bug。
经过了一段时间的调试,现在使用DMC_LEVEL_1构建工程似乎已经没有问题了,每个通道都输出了15khz 50%占空比的方波,faultMtr内没有错误发生,adc各个偏移量也符合实验文档中的描述。
于是我尝试进行DMC_LEVEL_2级别构建。 在user_mtr1.h中,我在Teknic_M2310PLN04K的基础上,按文档所述进行如下修改:
#define USER_MOTOR1_FREQ_LOW_Hz (5.0f) // Hz #define USER_MOTOR1_FREQ_HIGH_Hz (40.0f) // Hz #define USER_MOTOR1_VOLT_MIN_V (7.2f) // Volt #define USER_MOTOR1_VOLT_MAX_V (48.0f) // Volt
电机铭牌参数如下:
尝试运行时,发现使能demo后,电机转子快速动作了很小的角度后,faultMtr内就会出现ModuleOverCurrent错误。
尝试过降低speedRef_Hz,调整电源到24V,增加motorSetVars_M1.overCurrent_A的值,症状没有变化。
通过示波器捕捉ISENA,ISENC和A相电流,发现触发过流错误时的电流值确实会随着overCurrent_A的设定而变化,但无论设置到2A还是40A都会爬升到过流错误。
对比过流时adcData读数和ISENx上测量到的电压,换算后也大致是一致的。
使能demo之前,各个epwm的TZFLG寄存器值均为0x0004;使能并报错停止时(程序停留在moduleOverCurrent = 1的断点),各个TZFLG的值都为0x002E
请问这可能是哪方面的问题,应该向哪个方向继续排查?