На STM32F4 MCU мне нужно преобразовать числа с плавающей запятой в целое число.
У меня есть числа FP как результат функции arm_pid_f32 (), но позже мне нужно обновить внутренние значения ЦАП, которые принимают 12-битное целое число.
Я знаю, что потеряю некоторую «точность», но если я не преобразую его и не позволю перейти непосредственно в функцию обновления ЦАП, у меня появятся странные варианты поведения, которые вызывают у меня проблемы.
Каков наилучший подход к этому?
Я использую библиотеку KEIL MDK-ARM IDE + CMSIS DSP.
Кстати: MCU используется в контуре управления PID, у меня 12-битный A / D, алгоритм PID с моими коэффициентами и ЦАП в качестве устройства вывода. В настоящее время ЦАП используется для целей отладки, а затем будет заменен на модуль ШИМ, который также требует целых чисел.
Я предполагаю, что у вас есть ЦАП, который принимает два целочисленных ввода.
Разделите переменную с плавающей точкой на максимально возможное значение, которое может иметь переменная с плавающей точкой. Это дает вам плавание в диапазоне [-1.0 … + 1.0]
Умножьте на целочисленное значение, которое дает положительный вывод полной шкалы от ЦАП, с заявленным предположением, что будет 2047. Округлите, если хотите, затем приведите к целому числу.
Если ЦАП нуждается в вводе положительного целого числа без знака, вам нужно добавить 2048 к этому результату.
Других решений пока нет …