STM32 (с использованием онлайн-Mbed) показывает задержку на более высокой частоте аналогового входа - PullRequest
0 голосов
/ 28 мая 2019

Я новичок в использовании контроллеров.Я настраиваю контроллер STM32F769 (используя онлайн-компилятор Mbed), моя цель - получить ШИМ-выход, который меняет свою частоту в соответствии с аналоговым входом.Я сделал базовое кодирование, но есть проблема.Когда я проверяю выход на осциллографе с аналоговым входом частотой 1 Гц, он работает отлично, но когда я проверяю его на аналоговом входе 100 Гц, происходит задержка на выходе, и я получаю неправильные значения.Я не понимаю, почему, потому что эта плата быстрее (216 МГц), и я не должен сталкиваться с такой проблемой.(Если кто-то также может объяснить, возможно ли использовать плату на частоте 216 МГц или другой максимальной частоте? И как?)

Первый раз пользователь

{
 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);  
 }
}

Она должна работать на аналоговом 100 Гцвход, как он работает на 1 Гц.

1 Ответ

0 голосов
/ 28 мая 2019

216 МГц может быть максимальной тактовой частотой, на которой может работать ваш процессор, однако это не означает, что он может вводить / выводить такую ​​частоту из своих портов.

  • Задержки вызваны временем, которое требуется для считывания аналоговых значений и вычисления необходимых математических операций. Вы используете несколько умножений и делений, которые являются более сложными, чем сложение и вычитание практически для любого аппаратного устройства. Очевидно, что вы также используете библиотеку / библиотеки (pulse.period (), analog_value.read ()), поверх этих умножений и делений есть несколько скрытых вычислений. Наконец, возможно, что ваше устройство работает и с другими вещами (только вы знаете об этом). Все эти вычисления требуют времени. На более низких частотах вы можете не заметить задержку, однако, когда частота достаточно высока, задержки могут быть заметны. Также учитывайте время, необходимое для многократного считывания аналоговых значений .
  • Неправильный сигнал и период вызваны задержками и некоторыми другими неопределенностями. Если процессор работает и с другими задачами, будет трудно предсказать время, необходимое для их завершения. Поскольку процессор выполняет инструкции построчно и ожидает завершения предыдущих вычислений до начала нового, это вызывает некоторую неопределенность во времени. Путь данных и частота периферийных устройств (получение данных от периферийных устройств) играют решающую роль в неопределенности синхронизации и задержках.

Если время и точность действительно важны для решения вашей проблемы, и если вы не можете решить проблему с DSP, MPU, MCU, CPU, GPU и т. Д., Я бы предложил вам использовать FPGA для решения этой проблемы. проблема.

...