我刚刚开始在 CLA 系统上工作。 为了验证我是否为 CLA 正确设置了所有内容、我使用测试向量进行了一些计算。 计算是在 C28x 处理器和 CLA 处理器上完成的。 观察到、从两个处理器获得的结果之间存在一些误差。 为了提供比较参考、在 Excel 工作表中完成了相同的计算。 公式如下所示:
DOUT =(((VAR1 - VAR2)*(70/6.25))-VAR3)/360;其中 var1、var2和 var3是每个值为500的测试向量。
C28x 代码实现如下:
D_C28[i]= (((Iref[i]-Iinv[i])*11.2)-Van[i])/360;
在 CLA 任务中执行相同的计算、如下所示:
Out1 =(((IBatt-V_batt)*(11.2))-Vbus)/360.0;
通过 将 CPU 中定义的 IBatt (与 Iref 相同)、V_batt (与 Iinv 相同)和 Vbus (与 Van 相同)值传递到 CLA 消息 RAM、CLA 任务从主循环调用500次。 输出 Out1、在 CLA 至 CPU 消息 RAM 中定义 、被读取并存储在一个数组 D_CLA[500]中、用于与 D_C28[500]进行比较。
C28x 和 Excel 结果之间的区别如下:
CLA 和 Excel 结果之间的区别如下:
Excel 计算出的实际输出如下:
显然、CLA 计算中存在显著误差。 如果我的操作可能不正确、或者对该错误有逻辑解释、请提供指导。
注意:我正在使用 CLAmath 库: cla1_math_library_datarom_fpu32_eabi.lib 和 C2000Ware4.1.0.0。 项目中的处理器选项如下:

