sanyaav | Дата: Четверг, 18.07.2013, 02:19 | Сообщение # 1 |
Репутация:
Группа:Журналист
Сообщений: 134
Награды: 8
Статус:Offline
В этой теме (и в последующих 1-2) я хочу описать принцип работы последовательного интерфейса 1-Wire на примере датчика температуры DS18S20.
Краткое описание датчика: Питание 3,0 - 5,5 Вольт Диапазон измерения от -55 до +125 Погрешность +- 0,5 при температуре -10...+85
Цоколёвка
Схема подключения:
Полный цикл работы с датчиком DS1820 всегда должен начинаться с процедуры инициализации. Процедура инициализации - это процедура подготовки датчика к началу цикла замера температуры. Кроме того, процедура инициализации всегда должна предшествовать началу вывода “мастером”, на сигнальную линию DQ, любой команды, обращающейся к содержимому ПЗУ датчика.
До начала процедуры инициализации, на линии DQ, “мастером” должна быть установлена единица. Процедуру инициализации всегда начинает “мастер”. Затем нужно сбросить линию DQ в ноль. Это и будет процедура инициализации. Все спады импульсов (переход от 1 к 0), формируемые “мастером” на линии DQ, являются активными, то есть, запускающими, в DS1820, рабочие действия. Нулевой уровень должен присутствовать на шине не менее 480 мкс., затем линию нужно "отпустить", то есть установить 1.
После инициализации датчик должен ответить, "готов" или "не готов". Если датчик готов, то спустя 15-60 мкс после установки 1 на линии DQ, датчик выдаст в линию нулевой сигнал в течение 60-240 мкс, этот сигнал считывается микроконтроллером и можно выполнять дальнейшие действия. Если же такого ответа не последовало, то необходимо повторить процедуру инициализации.
Для дальнейшей работы нам понадобятся 3 команды: Skip ROM (CCh). пропуск процедуры адресации (так как работать будем только с 1 датчиком) ConvertT (44h).запуск преобразования температуры. Read Scratchpad (BEh). считывание из области оперативной памяти результата замера температуры.
(всего для работы с датчиком существуют 11 команд, но я рассматриваю самый простейший вариант, и поэтому привел всего 3 команды)
Передача битов: Передача байта (а также и прием байта) начинается с младшего его бита. Передача бита начинается импульсом низкого уровня, длительность которого лежит в пределах 1…15 мкс. После прохождения строба, в DS1820 запускается схема временной задержки, которая определяет момент считывания датчиком данных с линии DQ. Номинальное значение этой задержки составляет 30 мкс., однако, оно может колебаться в пределах 15…60 мкс. (отмеряется от строба). За импульсом низкого уровня следует передаваемый бит. Он должен удерживаться “мастером”, на линии DQ, в течение 60…120 мкс. (отсчет от строба). Процедура передачи бита завершается переводом шины в состояние высокого уровня на время не менее 1 мкс., причем, этот высокий уровень, “мастер” может выставлять на линии DQ не ограниченное (сверху) время.
Чтение битов: При чтении “мастером” битов, вырабатываемых DS1820, циклы чтения битов формирует “мастер”. Цикл чтения бита “мастер” начинает импульсом низкого уровня длительностью 1…15 мкс. Затем “мастер” должен освободить (отпустить) линию, чтобы уровень бита, передаваемого DS1820, установился на линии. По переходу из 1 в 0, DS1820 выдает на линию бит и запускает схему временной задержки, которая определяет, как долго этот бит будет присутствовать на линии. Это время находится в пределах 15…60 мкс. Для того чтобы на линии, которая всегда обладает некоторой емкостью, гарантированно установился уровень бита, требуется некоторое время. Поэтому, момент считывания уровня бита “мастером” должен отстоять как можно дальше, но не более чем на 15 мкс., от строба (имеет место быть ориентировка на минимальную продолжительность интервала времени установки уровня бита на линии).
Сообщение отредактировал sanyaav - Четверг, 18.07.2013, 02:24 | |
|
I'll be back
|
|
| |