STM32(使用Mbed在线)在较高模拟输入频率下显示延迟



我是控制器使用的新手。 我正在设置一个STM32F769控制器(使用 Mbed 在线编译器),我的目标是获得一个 PWM 输出,该输出根据模拟输入改变其频率。我做了一些基本的编码,但有一个问题。当我用模拟输入 1Hz 频率检查示波器上的输出时,它工作正常,但是当我用 100Hz 模拟输入检查它时,输出有延迟,并且我得到错误的值。我不明白为什么,因为这个板更快(216 MHZ),我不应该面对这样的问题。(如果有人也可以解释一下,是否可以在216MHz或其他最大频率下使用该板?以及如何使用?

第一次使用的用户

{
meas_r=0;
for(int i=1;i<=1024;i++)
{             
meas_r = meas_r+analog_value.read(); 
}
meas_r=meas_r/1024;
meas_v = meas_r * 3300;
out_freq=50000+(meas_v*50);   
pulse.period( 1.0 / out_freq);  
}
}

它应该在 100Hz 模拟输入下工作,因为它在 1 Hz 下工作。

216MHz 可能是处理器可以运行的最大时钟频率,但这并不意味着它可以从其端口输入/输出那么多频率。

  • 延迟是由读取模拟值和计算所需数学运算所需的时间引起的。您正在使用多个乘法和除法,这比几乎任何硬件设备的加减法都要复杂。显然,您也在使用库/库(pulse.period(),analog_value.read()),在这些乘法和除法之上还有一些隐藏的计算。最后,您的设备也可能与其他东西一起使用(只有您知道这一点)。所有这些计算都需要时间。在较低的频率下,您可能无法注意到延迟,但是当频率足够高时,可能会注意到延迟。还要考虑多次读取模拟值所需的时间
  • 错误的信号和周期是由于延迟和其他一些不确定性。如果处理器也在处理其他任务,那么很难预测完成所有任务所需的时间。当处理器逐行执行指令并等待先前的计算完成后,然后再开始新的计算,因此会导致时间上的一些不确定性。外围设备的数据路径和频率(从外设获取输入)在时序不确定性和延迟中起着至关重要的作用。

如果时序和准确性对于解决您遇到的问题真的很重要,并且您无法解决 DSP、MPU、MCU、CPU、GPU 等问题。我建议您使用FPGA来解决问题。

最新更新