Форум программистов, компьютерный форум, киберфорум
Eddy_Em
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Пытаюсь оптимизировать работу с MLX90640 на МК

Запись от Eddy_Em размещена 11.09.2025 в 20:49
Показов 5347 Комментарии 0

Я чуть ли не больше года назад начал было работу с этими датчиками. Весело реализовал по даташиту почти весь алгоритм обработки данных, но делал это на STM32F103. Как дошел до корней, понял, что вычисления затянутся очень надолго (ведь у этого МК нет FPU, да еще и тормоз он - тот еще). Портировал код на "апельсинку" и заметил непонятные вещи: вычисляемые температуры вообще какими-то "от балды" были. Было много более важных дел, так что, забил я до поры до времени.
А на этой неделе решил таки возобновить работу. Сначала взял предоставляемый melexis тестовый файл - для проверки своих "библиотек". И сразу наткнулся на несоответствие, еще на этапе вычисления коэффициентов. Проверил по даташиту, нашел у себя три опечатки. После этого все заработало четко.
Сегодня вечером перенес код на МК, так что теперь он заработал и на STM32F303CBT6. Тесты занимают достаточно много места во флеше (да там еще и математическую библиотеку линковать пришлось ради sqrtf), так что вот:
Code
1
2
3
4
Memory region         Used Size  Region Size  %age Used
             rom:         30 KB       128 KB     23.44%
             ram:        5616 B        40 KB     13.71%
          ccmram:          0 GB         8 KB      0.00%
Чуть меньше четырех кБ флеша и 1кБ ОЗУ занимает USB с базовыми строковыми функциями.

Конечная цель всей этой работы - инфракрасная allsky-камера, чтобы наш комплекс "Астро-М" (из пяти 0.5-м телескопов) наконец-то можно было по-человечески автоматизировать (пока что решение открыть телескоп для начала наблюдений принимает человек, а с этим allsky полностью все будет на совести компьютера). Как говорится, астроном спит - наблюдения идут. Предполагаю расположить 4-5 датчиков с полем 75°×110° так, чтобы захватывать всю полусферу неба (разве что ниже 10-15° над горизонтом не обязательно: там все равно наблюдения не ведутся).

В принципе, пока что ОЗУ со свистом хватает для пяти датчиков. Еще и на буферы для передачи по USART останется (на компьютер данные через оптоволокно будут идти по RS-232 или RS-485), и на какие-нибудь дополнительные нужды.
Цикл обработки одной "подстраницы" занимает примерно 4.2мс, т.е. целиком обработка страницы уложится в 8.5мс. Одна "подстраница" данных (при том, что там половина - ненужные! Уж не знаю, зачем melexis так нарукожопил…) по I2C на скорости 1МГц передается около 14мс. Следовательно, обработка предыдущей "подстраницы" выполнится быстрей, чем прием следующей (!!!). Вот уж не ожидал… Теперь понятно, как китайцы на экранчике "видосики" рисуют. Самое интересное, что в настройках датчика предельная скорость обновления - 64Гц. Даже если это - для одной "субстраницы", а не полного кадра, период обновления около 16мс выходит - лишь немногим больше времени, за которое это обновление будет выдано в I2C. Интересно, как чип умудряется с такими скоростями справляться.
Нам же все равно нужно максимум раз в 30с картинку обновлять. Ну, забавы для можно, конечно, и 1Гц поставить. Посмотрим, это нужно уже экспериментально выбирать наиболее оптимальный режим.

Интересно было бы сравнить с быстродействием "родной" библиотечки от melexis. За какое время у них вычисляется полный кадр на том же самом МК?
Я же, глядя в код, подозреваю, что можно еще немного оптимизировать.

Еще можно будет попробовать этот код под STM32F103CBT6 собрать. Правда, на 5 датчиков там ОЗУ однозначно не хватит. С другой стороны, можно ведь схитрить: зачем константы каждый раз считывать в память, если можно их один раз считать, посчитать и сохранить во флеше?
Размещено в Железо
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru