ZHCU083I January 2013 – October 2021 TMS320F2802-Q1 , TMS320F28026-Q1 , TMS320F28026F , TMS320F28027-Q1 , TMS320F28027F , TMS320F28027F-Q1 , TMS320F28052-Q1 , TMS320F28052F , TMS320F28052F-Q1 , TMS320F28052M , TMS320F28052M-Q1 , TMS320F28054-Q1 , TMS320F28054F , TMS320F28054F-Q1 , TMS320F28054M , TMS320F28054M-Q1 , TMS320F2806-Q1 , TMS320F28062-Q1 , TMS320F28062F , TMS320F28062F-Q1 , TMS320F28068F , TMS320F28068M , TMS320F28069-Q1 , TMS320F28069F , TMS320F28069F-Q1 , TMS320F28069M , TMS320F28069M-Q1
为了尽可能精确地测量 CPU 周期,需使用三个可用 CPU 定时器中的一个。定时器计时应尽可能快,这样才能为每次执行提供最大数量的计数。所以,将计时器的输入时钟设置为与 CPU 相同的时钟,并且不使用分频器。以下代码示例说明了在执行目标函数后如何重新加载并读取计时器计数。
// reload the CPU timer
HAL_reloadTimer0(halHandle);
// run the controller
CTRL_run(ctrlHandle,halHandle,&gAdcData,&gPwmData);
// get the CPU timer count
timercount = HAL_getCountTimer0(halHandle);
即使重新加载并读取计时器计数的函数非常高效,当使用后续章节中提供的数据时,需要考虑大约 5 个 CPU 周期的溢出。
CPU 利用率表包含一个通过运行成千上万个中断计算得出的最小值列 (Min),将每个中断周期的时间与最小值相比较,如果小于最小值,则更新最小值。用同样的方法可计算出周期的最大值,或者最大值列。通过计算累计周期数,用累计中断数量计数除以该值即可得出平均值列。平均值列类似于最小值和最大值列,根据成千上万个中断计算得出一个稳定的平均值。
CPU 利用率表列出了几种可选配置,主要更改了三个方面:
对于关于抽取率的前两项,图 9-4 显示了 InstaSPIN 的完整软件执行时钟树。此图表说明了从 CPU 时钟到估算器的全部分频过程。这里仅可改变突出显示的节拍率,因为这两部分是影响 CPU 使用率的主要因素。更改速度控制器、电流控制器或者跟踪生成节拍率后,CPU 使用率不会显著变化,因此在 CPU 利用率测量期间这些参数始终保持不变。
关于 InstaSPIN 软件执行时钟树的更多信息,请参阅Topic Link Label10.2。
第三个参数为 Rs 在线重校准特性,可针对 CPU 利用率测量启用和禁用。
由于此参数会显著影响 CPU 利用率,所以同样需要考虑。关于 Rs 在线重校准的更多信息,请参见Chapter16。