eddy_em: (Default)
[personal profile] eddy_em
Потихоньку осваиваю F0, все-таки, надо будет разработать систему мониторинга температуры ГЗ БТА. Пока я не спаял платку для термометра, взял первый попавшийся в коробке девайс на I2C — датчик температуры/влажности HTU21-D. Я с ним, кстати, еще ни на STM32, ни на STM8 не работал.
Пару вечеров убил в обнимке с мануалом и даташитом. Позавчера скомпилялось, и я довольный пошел спать. Вчера была ночная экскурсия — не до этого, а сегодня решил прошить.
Делал, кстати, под STM32F030 — у меня две таких макетки и всякие дикие эксперименты стараюсь с ними проводить (хоть STM32F042 у меня с двукратным запасом, не хочется перепаивать на nucleo, когда флеш сдохнет). Прошиваю — и тишина в USART. И тут до меня доходит: у 20-ногого F030 PA9 и PA10 делят функции USART и I2C! Пришлось переделывать под STM32F042, и для начала научиться работать на нем с USART.
Потом решал проблему с зависанием на проверке while(!(I2C1->ISR & I2C_ISR_TXIS)), когда на линии нет ничего (даже подтягивающих резисторов). Оказалось, что в данном случае флаг не появляется вообще! Пришлось везде, где есть такие проверки, внедрить таймаут в 5мс. Ну, а потом я раскомментировал весь код и, как ни странно, все с первой же попытки завелось! Правда, я вместо умножения на 10 в вычислении влажности выполнил операцию деления. Но теперь все ОК, код на гитхабе.
В терминал 1 раз в секунду выдается то значение влажности, то температуры:
Temperature: 259/10 degrC
Humidity: 324/10 %

В комнате один термометр с гигрометром (тоже, наверное, на подобном чипе) и часы с термометром. Первый показывает 24°C и 37%, второй показывает 23°. Подогрев чипа по умолчанию отключен — похоже, либо саморазогрев у него такой, либо нагло врут в даташите про точность в 0.3°C!

Теперь надо будет спаять минимальную платку для TSYS01 и заняться им.

May 2025

S M T W T F S
    123
45678910
11121314151617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 25th, 2025 12:12 am
Powered by Dreamwidth Studios