- 2024-11-03
-
发表了主题帖:
【翌创ET6001测评】FOC电流环算力
测试目的:
评估在200M主频下的执行FOC电流环的算力
测试结果:
如下图所示,ADC完成采样中断时,置IO为高电平,读ADC,计算FOC电流环,设置PWM输出,置IO为低电平。测试得到单次FOC电流环时间为1.72uS。
说明:
由于我开发环境,暂无法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();
}
- 2024-10-26
-
发表了主题帖:
【翌创ET6001】软件IO翻转速度
在flash中执行
#if defined(CLK_200M_D)
SystemFlash_TrimLoad(FLASH_FRQ_50M_LVL);
GPIO模块,是挂在AHB总线上的
AHB总线时钟配置
测试程序如下:
逻辑分析仪看到的
分析:
原则上,IO速度应该远大于3MHz,应该还有某些性能没打开。
-
回复了主题帖:
【翌创ET6001测评】GPIO. 从IO交互开始
貌似,不能发表附件。MDK配置信息如下:
-
发表了主题帖:
【翌创ET6001测评】GPIO. 从IO交互开始
1、测试目的
初次使用,验证硬件环境,软件环境可行性
测试GPIO翻转性能,最大IO输出频率,推断在软件IO控制中的性能,为IO模拟数字接口指标提供数据
2、测试过程
2.1在其中一台电脑上,把开GPIO Demo测例,位于..\ ET6001\ET6001 SDK示例代码\Examples\GPIO\GPIO_TogglePin\Project。查看代码,用于在主循环中进P2.4进行阻塞式Delay翻转,里面用了读改写的操作
DRV_StatusTypeDef GPIO_TogglePin(GPIO0_Type *GPIOx, uint16_t pin_mask)
{
uint32_t val = 0;
assert_param(GPIOx != NULL);
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
val = READ_REG(GPIOx->DATAOUT);
if (val & pin_mask) //根据当前寄器(上一次写入的值),决定本次写入的电平状态
{
CLEAR_BIT(GPIOx->DATAOUT, pin_mask);
}
else
{
SET_BIT(GPIOx->DATAOUT, pin_mask);
}
return DRV_OK;
}
编译,下载,执行。。。。。顺利,但没有效果
于是Debug调试,不能控制断点,查看SDK用户手册,严格按软件版本进行操作,重新下载MDK 5.3以上的版本测试,效果一样(无效果)
重新写最简函数
Int32_t gCnt = 0;
Void main(void)
{
While(1)
{
gCnt++;
}
}
在线Debug下载,仍为异常。在wworld网上看到一个同行,也类似的现象。原帧如下
https://bbs.eeworld.com.cn/thread-1296575-1-1.html
怀疑是电脑的原因,换台电脑,重装环境
2.2 新电脑重新梳理
安装pack包 ETMCU.ET600x_DFP.1.0.6.pack
打开GPIO demo,编译,下载,运行,OK
Debug 查看watch window变量,仍然无效。
怀疑LINK调试器的原因,手上有1个通用版本DAP LINK,可以识别芯片,但不能下载程序。
改写程序,验证变量是事有效果。让闪灯有点节奏,如下
下载,执行,闪灯程序,快到慢,有一个变化的过程 ,说明gCnt生效了。
但Debug仍无法观测gCnt变量的值
3、总结
如果发现编译,下载OK,运行没有反应,可能是电脑原因,或是需要MDK 6.36版本,不止是《ET6001-SDK开发入门指南_V1.0.2.pdf》中讲的5.3x
Debug时,MCU不受控,且不能查看watch window中的值,仍末解,MDK工程 会加到本帧,希望原厂FAE看到,可以下载看下,是环境配置原因,还是其他原因
IO输出性能评估等Debug正常后,在本帧更新参数
-
回复了主题帖:
【翌创ET6001测评】初识篇
本帖最后由 majorshu 于 2024-10-26 12:10 编辑
用的也是LZ的这个GPIO demo. 我的也是这个问题,仔细阅读了《ET6001SDK 开发入门指南 .pdf》。原来用的是5.26,重新下载了5.33的MDK版本,也不行。Debug的时候,watch window变量失效,不能控制PC指针。Falsh, ITCM模式也切换了。没有效果。
- 2024-10-18
-
回复了主题帖:
测评入围名单: 国产高性能 双核M7 MCU,翌创ET6001
个人信息无误,确认可以完成测评分享计划。