2021-02-14
Entry tags:
HTU21D & SI7005 на STM32F103
Добавил к предыдущему "сниппету" для работы с SI7005 работу с HTU21D: код на гитхабе.
Опять пришлось повозиться с I2C. Чтение одного, двух и N байт на F103 реализуются совершенно по-разному, так что, пришлось добавлять общую функцию чтения N байт. Еще и проглючил в одном месте: в даташите четко написано, что считывать последний байт нужно, дождавшись флага RxNE, а я же, полагая, что нафиг его ждать - все равно ж из буфера вычитываем данные, просто дважды подряд считывал I2C1->DR.
Теперь остаются еще датчики типа DHT11 — на дурацком 1-wire. Придется-таки делать реализацию на таймере с DMA (я уже делал на F103 это, но тогда использовалась opencm3, от которой я отказался ввиду непредсказуемости разработчиков). Но сначала, наверное, займусь все-таки барометрами на I2C: BMP180 и BMP280.
Опять пришлось повозиться с I2C. Чтение одного, двух и N байт на F103 реализуются совершенно по-разному, так что, пришлось добавлять общую функцию чтения N байт. Еще и проглючил в одном месте: в даташите четко написано, что считывать последний байт нужно, дождавшись флага RxNE, а я же, полагая, что нафиг его ждать - все равно ж из буфера вычитываем данные, просто дважды подряд считывал I2C1->DR.
Теперь остаются еще датчики типа DHT11 — на дурацком 1-wire. Придется-таки делать реализацию на таймере с DMA (я уже делал на F103 это, но тогда использовалась opencm3, от которой я отказался ввиду непредсказуемости разработчиков). Но сначала, наверное, займусь все-таки барометрами на I2C: BMP180 и BMP280.