主题中讨论的其他器件:MOTORWARE
您好!
数学库中包含的 ARM_SIN_COS_F32 ()函数中存在错误。
如果您使用该代码、则可以在迭代121、131、141、151和3591..3600时检查 ARM_SIN_F32 ()和 ARM_SIN_COS_F32 ()之间的错误约为9%。 FPU 中的错误是个问题:有时指令 i =(uint32_t)(theta - x1); 在 arm_sin_cos_F32 ()中、由于在减法中失去 FPU 分辨率、函数在访问正弦表时会导致无效索引。
静态空 showSin()
{
for (float angle_deg = 0.0F;angle_deg < 360.0F;angle_deg+=0.1f){
const float angle_rad = angle_deg * 2.0F *π/360.0F;
float vsin;
浮点 VCO;
float vsin2;
float vcos2;
arm_sin cos_F32 (-(angle_deg - 180.0F)、&vsin2、&vcos2);//由于 CMSIS Cortex R DSP 库正弦/余弦表访问方法而导致的相位变化*/
vcos2 =-vcos2;/*由于 CMSIS Cortex R DSP 库余弦表访问方法而反转*
Vsin = arm_sin F32 (angle_rad);
VCO = ARM_COS_F32 (ANGAL_rad);
showOneLine (angle_deg、vsin、VCO、vsin2、vcos2);
}
}
我该怎么做?
由于性能原因、ARM_SIN_COS_F32 ()对于电机控制而言比 ARM_SIN_F32 ()和 ARM_COS_F32 ()更具有可预测性。