ZHCABI1B February 2022 – January 2024 AM2434 , AM6411 , AM6412 , AM6421 , AM6441 , AM6442
三角函数是用于电机控制的计算函数。最常用的三角函数为 sine、cosine、arctan 和 arctan2。标准 C 库 math.h 可提供高度精确的三角函数实现,但最坏情况下的执行时间可能是不可接受的。对于 Arm Cortex-R5F,Arm CMSIS DSP 库也可为部分三角函数提供经过优化的实现。Sitara™ 软件开发套件 MCU-PLUS-SDK_AM243X 和 PROCESSOR-SDK-AM64X 包含 CMSIS 库(位于文件夹 <mcu-plus-install-directoty>/source/cmsis),并进一步优化了 ti_r5fmath_trig 库(位于文件夹 <mcu-plus-install-directoty>/examples/motor_control/benchmark_demo/common)中的部分函数。表 2-1 和 表 2-2 显示了使用 C 运行时库 (math.h)、CMSIS 和 ti_r5fmath_trig 库提供的实现的最常用三角函数的性能。这些实现会影响准确度(如最大误差一栏所示),以及计算时间,有时也会计算额外存储器消耗(有存储器中常量的查找表),如表大小一栏所示。此表需要在 TCM 或 L1D 高速缓存(热缓存)中,以实现记录的性能。
函数 | 最大周期 | 平均周期 | 最大误差 (abs rad) | 表大小 | 库 |
---|---|---|---|---|---|
ti_r5fmath_sin() | 34 | 34 | 7.20E-07 | polynomial | TI_R5FMATHLIB |
ti_r5fmath_cos() | 38 | 38 | 2.90E-07 | polynomial | TI_R5FMATHLIB |
ti_r5fmath _sincos() |
51 | 51 | 7.20E-07 | polynomial | TI_R5FMATHLIB |
ti_r5fmath_fast_sincosB() | 57 | 57 | 1.90E-07 | polynomial | TI_R5FMATHLIB |
arm_cos_f32() | 66 | 66 | 1.80E-05 | 表 2KB | CMSIS |
sinf() | 71 | 71 | 8.40E-08 | polynomial | math.h |
cosf() | 81 | 81 | 9.70E-08 | polynomial | math.h |
arm_sin_cos_f32() | 114 | 114 | 6.10E-07 | 表 2KB | CMSIS |
sin() (double) | 340 | 296 | 3.00E-08 | polynomial | math.h |
函数 | 最大周期 | 平均周期 | 最大误差 (abs rad) | 表大小 | 库 |
---|---|---|---|---|---|
ti_r5fmath_atanFast() | 45 | 39 | 3.76E-03 | 函数 | TI_R5FMATHLIB |
ti_r5fmath_atan2Fast() | 54 | 54 | 3.76E-03 | 函数 | TI_R5FMATHLIB |
ti_r5fmath_atan() | 80 | 68 | 6.00E-07 | poly | TI_R5FMATHLIB |
atanf() | 111 | 90 | 6.80E-08 | poly | math.h |
ti_r5fmath_atan2() | 97 | 90 | 6.00E-07 | poly | TI_R5FMATHLIB |
atan2f() | 204 | 171 | 2.00E-07 | poly | math.h |