Доброго времени суток. Пытаюсь получить данные с датчика HP303B. Все делаю по даташиту, но, выходит лажа. Может там есть подводные камни? Если у кого-нибудь есть пример работы с ним поделитесь плиз. Только без библиотек.
_________________ Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник". Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Заголовок сообщения: Re: Проблема с датчиком HP303B
Добавлено: Вс фев 15, 2026 21:34:23
Вымогатель припоя
Карма: 2
Рейтинг сообщений: 19
Зарегистрирован: Пн сен 15, 2025 08:43:23 Сообщений: 519 Откуда: Маленький СССР посреди шариатской республики
Рейтинг сообщения:0
Какая именно лажа выходит? Можно начать отлаживать код, напрямую подключив датчик к компьютеру через переходник USB-I2C. Конкретно с этим я не работал, но под всякие попсовые с алика утилитку написал. Накидал кучу датчиков на макетку, но не могу никак сравнить в широком диапазоне: дома работают, а удаленно какой-то гад начинает блокировать шину, и даже питание туда-сюда дергать не помогает. Паять надо…
При пересчёте по формуле не соответствуют с реальтой температой.
_________________ Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник". Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Добавлено after 18 minutes 40 seconds: DataSheet Cof0-0x0112 Cof1-0x0EE4 4times - 3670016 У меня температура получается 16,6грС. А должна быть в районе 22
_________________ Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник". Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Написано очень "грязно" и неоптимально, но на первый взгляд не видно явных ошибок в пересчёте. Единственные вопросы: Где синхронизация с процессом измерения (ожидание готовности данных, определения количества готовых данных, типа считываемых данных, обработка случая переполнения, ...)? В даташите указано про наличие FIFO, в которое пишутся результаты измерения температуры+давления, почему не используете (и при этом запускаете "непрерывное преобразование" вместо "преобразования по запросу")? Почему делаете '|=' со старыми данными в "Data_HP303_PRS[i] |= (uint32_t)SPI1_ReadByte"? Что делает SPI1_ReadByte()? И где управление CS?
PS: И оформляйте посты корректно - по правилам форума код должен быть обрамлён соответствующим тэгом. В вашем неряшливо оформленном коде даже нет желания разбираться.
Добрый день. Извините за неряшливость. Управление CS происходит в другой функции. Data_HP303_PRS[i] |= (uint32_t)SPI1_ReadByte" - преобразование трех 8ми битных значений в 32бита т. к. данные поступают отдельно. Fifo пока не использую, работаю с одними данными. Запросы данных по времени.
_________________ Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник". Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения