[原创] 【翌创ET6001测评】FOC电流环算力

majorshu   2024-11-3 12:06 楼主

测试目的:

       评估在200M主频下的执行FOC电流环的算力

测试结果:

       如下图所示,ADC完成采样中断时,置IO为高电平,读ADC,计算FOC电流环,设置PWM输出,置IO为低电平。测试得到单次FOC电流环时间为1.72uS。

image-20241103115713-1.png  

说明:

       由于我开发环境,暂无法DEBUG,无法单次调试抓内存数据,只能通过GPIO测定FOC电流环执行时间;

开发板是只有IO的最小系统,没有BLDC电控需要的MOS驱动以及ADC配合PGA的真实采样环路,所以测试的仅为算力测试。一般在100M的M4F上测试,最快常规是5us,本次在ET6001上测到1.72比预期好很多,但由于没有真实的硬件回路,一些过调制case无法执行到。

 

入口代码

void AdcIrq(void)
{
	System_Obj *pS = &SystemObj;
	pS->Ia = ADC1->SARC_RESULT[0].RESULT&0xFFFF;//u
	pS->Ib = ADC1->SARC_RESULT[1].RESULT&0xFFFF;//v
	pS->UdcAdc = ADC1->SARC_RESULT[2].RESULT&0xFFFF;//vbus
	pS->SpeedR = ADC1->SARC_RESULT[3].RESULT&0xFFFF;//spped r
	//电流环计算
	MotorCurrentLoop(&SystemObj);
}
#define POLS 			(2)				
#define LD 					(0.000925f)
#define LQ 					(LD)          
#define RS 					(0.358000f) 
#define FI 				    (0.01374f) 
void VarInit(System_Obj *pSysObj)
{
    extern uint32_t SystemCoreClockFrequency;
    pSysObj->MainFreq = SystemCoreClockFrequency;
    pSysObj->PwmFreq = 10000;
    pSysObj->CtrlFreq = 2000;
    pSysObj->HalfDuty = MyDiv16(SystemObj.MainFreq , SystemObj.PwmFreq,0,0)>>2;
    pSysObj->VolSampBase = 105;
    pSysObj->CurSampBase = 10;
    MotorSetParam(RS,LD,LQ,FI);
    MotorContrlPamIni();
}

 

回复评论 (1)

点赞  2024-11-3 12:45
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复