Доброго времени суток.
Пытаюсь получить данные с датчика HP303B. Все делаю по даташиту, но, выходит лажа. Может там есть подводные камни?
Если у кого-нибудь есть пример работы с ним поделитесь плиз. Только без библиотек.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Какая именно лажа выходит? Можно начать отлаживать код, напрямую подключив датчик к компьютеру через переходник USB-I2C.
Конкретно с этим я не работал, но под всякие попсовые с алика утилитку написал. Накидал кучу датчиков на макетку, но не могу никак сравнить в широком диапазоне: дома работают, а удаленно какой-то гад начинает блокировать шину, и даже питание туда-сюда дергать не помогает. Паять надо…
При пересчёте по формуле не соответствуют с реальтой температой.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
[uquote="RUNA",url="/forum/viewtopic.php?p=4789606#p4789606"]При пересчёте по формуле не соответствуют с реальтой температой.[/uquote]Выложите код, которым пересчитываете, и кто-нить поможет. Иначе - скорее всего придётся долго ждать.
Ссылку на даташит + формулу + код.
Добавлено after 18 minutes 40 seconds:
DataSheet
Cof0-0x0112
Cof1-0x0EE4
4times - 3670016
У меня температура получается 16,6грС. А должна быть в районе 22
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Написано очень "грязно" и неоптимально, но на первый взгляд не видно явных ошибок в пересчёте.
Единственные вопросы:
Где синхронизация с процессом измерения (ожидание готовности данных, определения количества готовых данных, типа считываемых данных, обработка случая переполнения, ...)? В даташите указано про наличие FIFO, в которое пишутся результаты измерения температуры+давления, почему не используете (и при этом запускаете "непрерывное преобразование" вместо "преобразования по запросу")?
Почему делаете '|=' со старыми данными в "Data_HP303_PRS |= (uint32_t)SPI1_ReadByte"?
Что делает SPI1_ReadByte()? И где управление CS?
PS: И оформляйте посты корректно - по правилам форума код должен быть обрамлён соответствующим тэгом. В вашем неряшливо оформленном коде даже нет желания разбираться.
Добрый день. Извините за неряшливость. Управление CS происходит в другой функции. Data_HP303_PRS |= (uint32_t)SPI1_ReadByte" - преобразование трех 8ми битных значений в 32бита т. к. данные поступают отдельно.
Fifo пока не использую, работаю с одними данными. Запросы данных по времени.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.