STM32F4 преобразование с плавающей точкой в ​​int

На STM32F4 MCU мне нужно преобразовать числа с плавающей запятой в целое число.

У меня есть числа FP как результат функции arm_pid_f32 (), но позже мне нужно обновить внутренние значения ЦАП, которые принимают 12-битное целое число.

Я знаю, что потеряю некоторую «точность», но если я не преобразую его и не позволю перейти непосредственно в функцию обновления ЦАП, у меня появятся странные варианты поведения, которые вызывают у меня проблемы.

Каков наилучший подход к этому?

Я использую библиотеку KEIL MDK-ARM IDE + CMSIS DSP.

Кстати: MCU используется в контуре управления PID, у меня 12-битный A / D, алгоритм PID с моими коэффициентами и ЦАП в качестве устройства вывода. В настоящее время ЦАП используется для целей отладки, а затем будет заменен на модуль ШИМ, который также требует целых чисел.

0

Решение

Я предполагаю, что у вас есть ЦАП, который принимает два целочисленных ввода.

Разделите переменную с плавающей точкой на максимально возможное значение, которое может иметь переменная с плавающей точкой. Это дает вам плавание в диапазоне [-1.0 … + 1.0]

Умножьте на целочисленное значение, которое дает положительный вывод полной шкалы от ЦАП, с заявленным предположением, что будет 2047. Округлите, если хотите, затем приведите к целому числу.

Если ЦАП нуждается в вводе положительного целого числа без знака, вам нужно добавить 2048 к этому результату.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]