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

Я новичок в использовании контроллеров. Я настраиваю контроллер STM32F769 (с использованием онлайн-компилятора Mbed), моя цель - получить выход PWM, который изменяет свою частоту в соответствии с аналоговым входом. Я сделал базовое кодирование, но возникла проблема. Когда я проверяю выходной сигнал на осциллографе с частотой аналогового входа 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 Гц.


person Ali    schedule 28.05.2019    source источник
comment
какая у вас конфигурация RCC.   -  person Vaibhav    schedule 28.05.2019
comment
Проверьте эти ссылки, они предназначены для Raspberry Pi, но они дают вам некоторое представление. raspberrypi.stackexchange.com/questions/54150/   -  person Adhamzhon Shukurov    schedule 28.05.2019
comment
raspberrypi.stackexchange.com/questions/ 87846 /   -  person Adhamzhon Shukurov    schedule 28.05.2019
comment
Результат простого переключения контактов без выполнения каких-либо действий.   -  person Adhamzhon Shukurov    schedule 28.05.2019


Ответы (1)


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

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

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

person Adhamzhon Shukurov    schedule 28.05.2019
comment
Контроллер выполняет только этот фрагмент кода и не связан с каким-либо другим оборудованием (только генератор функций и осциллограф). Мне может потребоваться установить частоту дискретизации для АЦП, но я не знаю, как ее рассчитать и выбрать. и как это реализовать здесь. - person Ali; 28.05.2019
comment
Вы используете встроенный или встроенный АЦП? Также это может помочь вам electronics.stackexchange.com/ questions / 311326 / - person Adhamzhon Shukurov; 28.05.2019
comment
Какой АЦП используется? - person Adhamzhon Shukurov; 28.05.2019
comment
Спасибо за ответы, что вы имеете в виду под видом ADC? - person Ali; 28.05.2019
comment
Я использую внутренний АЦП STM32F769 на выводе A0. Из-за моего отсутствия знаний я не смог получить достаточно информации из вашего сообщения, которое вы упомянули в комментарии, как я могу рассчитать частоту дискретизации АЦП? - person Ali; 28.05.2019