Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

DHT22/DHT11 на STM32F103

Добил шайтана!
Сначала ожидал, что нужно будет полноценным захватом ШИМ пользоваться, но т.к. в протоколе неинформативная часть имеет постоянную длину импульса, а информативная меняется, достаточно захватывать только полную длину импульса, чтобы определить, единица это или нуль.
Используется таймер TIM1, CC1 настроен на восходящий импульс, CC2 — на нисходящий (но можно CC2 вообще удалить, он здесь роли не играет). Соответственно, таймер в режиме захвата ШИМ и сбрасывает счетчик по событию CC1. По этому же событию DMA передает содержимое счетчика CC1 в очередную ячейку массива данных. Таймер настроен на частоту 1МГц, т.е. 1 тик соответствует 1мкс. Размер массива — 45 байт (чтобы наверняка), хотя, понятное дело, нужно только 42 (короткий начальный импульс, далее 160мкс готовность и 40 бит данных). В ARR записал 200 — чтобы через 201мкс после захвата переднего фронта выключить все, если данных нет.
С инициализацией измерения не парился: завел конечный автомат, который в течение ~20мс выдает низкий уровень сигнала, а потом запускает цикл измерения.
Единственное, что не понял — так это почему каждый раз после включения железяки первое измерение заканчивается неудачей. В режиме тестирования, когда я вместо DMA использовал прерывания по UEV для заполнения массива, такого не было.
Tags: stm32, железяки
Subscribe

  • Не могу найти документацию по RGB-LED модулю P4

    Купил на али вот такой модуль. У меня уже был опыт работы с монохромным P10, думал, что здесь так же просто. А оказалось все не так. Распиновку…

  • Новый кикад - просто ужас!

    Пока маюсь дурью под Звенигородом, решил было поработать. Но оказалось, что кикад я давно не пересобирал и после последнего обновления системы он не…

  • Хочется взять, и…

    Что-то последнее время чем дальше в лес все больше и больше падает грамотность интернет-пользователей. Похоже, из-за появления дешевых…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 1 comment