DS18B20. Русское описание

DS18B20 цифровой термометр с программируемым разрешением от 9 до 12–bit, которое может сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по шине 1-Wire. Диапазон измерений температуры от –55°C до +125°C и точностью 0,5°C в диапазоне от –10°C до +85°C. DS18B20 может питаться напряжением линии данных (“паразитное питание”), при отсутствии внешнего источника напряжения.

 

DS18B20 имеет уникальный 64-битный код, который позволяет общаться с множеством датчиков DS18B20 установленных на одной шине. Такой принцип позволяет использовать один микроконтроллер, чтобы контролировать множество датчиков DS18B20, подключенных параллельно на одной линии.

ВНЕШНИЙ ВИД И НАЗНАЧЕНИЕ ВЫВОДОВ

ds18b20 1

ds18b20 2

СТРУКТУРНАЯ СХЕМА

ds18b20 3

DS18B20 имеет:

  • постоянное запоминающее устройство с 64-битовый уникальным кодом прибора;
  • оперативную память, содержащую 2-байтовый температурный регистр, который хранит значение температуры по окончанию температурного преобразования, два однобайтовых регистра контроля температуры TH и TL и регистр конфигурации.
Регистр конфигурации позволяет пользователю устанавливать разрешающую способность цифрового преобразователя температуры в 9, 10, 11, или 12 бит. При увеличении разрешающей способности датчика - увеличивается и время преобразования температуры. Регистры TH, TL и регистр конфигурации - энергонезависимы (EEPROM), таким образом они сохранят данные, когда прибор - выключен.

DS18B20 использует 1-Wire шину, которая использует одну линию данных. Шина должна быть подключена к источнику питания через подтягивающий резистор. Используя эту шину микроконтроллер идентифицирует и обращается к датчикам температуры, используя 64-битовый код прибора. Поскольку каждый прибор имеет уникальный код, число приборов, к которым можно обратиться на одной шине, фактически неограниченно.

Другая особенность DS18B20 - способность работать без внешнего питания. Эта возможность предоставляется через подтягивающий резистор. Высокий сигнал шины заряжает внутренний конденсатор, который питает прибор, когда на шине низкий уровень. Этот метод носит название «Паразитное питание». При этом максимальная измеряемая температура составляет + 100°C. Для расширения диапазона температур до + 125 °C необходимо использовать внешнее питание.

РЕЖИМ - КОНВЕРТАЦИИ ТЕМПЕРАТУРЫ

Разрешающая способность температурного преобразователя может быть изменена пользователем и составляет 9, 10, 11, или 12 битов, что позволяет производить преобразование температуры с дискретностью 0.5°C, 0.25°C, 0.125°C, и 0.0625°C соответственно. Разрешающая способность по умолчанию установлена в 12-бит.

В исходном состоянии DS18B20 находится в состоянии покоя (в неактивном состоянии). Чтобы начать температурное измерение и преобразование, ведущий должен подать команду начала конвертирования температуры [0х44]. После конвертирования, полученные данные запоминаются в 2-байтовом регистре температуры в оперативной памяти, и DS18B20 возвращается к неактивному состоянию. Если DS18B20 включен с внешним питанием, ведущий может контролировать конвертирование температуры (после команды [0х44]) по состоянию шины. DS18B20 будет формировать (ответ на слот времени чтения от устройства управления) логический «0» когда происходит температурное преобразование. И логическую «1», когда конвертирование выполнено. Если DS18B20 включен с паразитным питанием, эта технология уведомления не может быть использована, так как шину нужно подать высокий уровень (напряжение питания) в течение всего времени температурного преобразования. В этом случае устройство управления должно самостоятельно контролировать время конвертирования.

Выходные температурные данные DS18B20 калиброваны в градусах Цельсия. Температурные данные запоминаются, как 16-битовое число со знаком. Биты S указывают, является ли температура положительная или отрицательная: для положительных значений - S = 0, а для отрицательных значений - S = 1. Если DS18B20 будет настроен для конвертирования с 12-битным разрешением, то все биты в температурном регистре будут содержать действительные данные. Для 11-битной разрешающей способности - бит 0 неопределен. Для 10-битной разрешающей способности - биты 1 и 0 неопределенны, и для 9 битной разрешающей способности биты - 2, 1 и 0 неопределенны.
Таблица 2 дает примеры данных цифрового выхода и соответствующей температуры, для 12- битной разрешающей способности.

ФОРМАТ РЕГИСТРА ТЕМПЕРАТУРЫ

ds18b20 4

Примеры соответствия данных цифрового преобразования и соответствующей температуры при 12- битном разрешении.

ds18b20 5

* при подачи питания в температурный регистр записано число +85оС

После того, как DS18B20 выполнит температурное преобразование, температурное значение - сравнивается со значением, записанным в регистры TH и TL. Для сравнения используются только биты 4-11 из регистра температуры (целое значение температуры). Если измеренная температура ниже или равна TL или выше или равна TH, формируется условие Аварии, и устанавливается флаг Аварии в DS18B20. Этот флаг обновляется после каждого температурного преобразования; поэтому, если условие Аварии пропадет, то флаг будет сброшен после следующего температурного преобразования.

Формат регистров TH и TL

ds18b20 6

Главное устройство может проверить условие Аварии всех DS18B20 на шине, подавая команду Поиск Аварии [ECh]. Любой DS18B20 с установленным флагом Аварии ответит на эту команду, таким образом главное устройство точно может определит, какие DS18B20 находятся в состоянии Аварии. Если изменены значение регистров TH или TL, то необходимо запустить новое температурное преобразование, чтобы выполнилась проверка условий контроля температуры, заданное в регистрах TH или TL.

Питание DS18B20

 Подключение DS18B20 в режиме паразитного питания

 ds18b20 7

DS18B20 может быть включен с внешним питанием VDD или он может работать в режиме «паразитного питания», которое позволяет DS18B20 функционировать без питания на выводе VDD.
Паразитное питание очень полезно для приложений, которые требуют отдаленного температурного считывания, или это ограничение связано со старыми линиями коммуникаций, где уже проложено только два провода.

При подключении DS18B20 с паразитным питанием во время конвертирования и формирования импульсов высокого уровня через транзистор на шину данных подается питание Vpu. Это напряжение сохраняется на конденсаторе паразитного питания (CPP), чтобы обеспечить питание устройства, когда на шине данных низкий уровень. Чтобы DS18B20 использовать в режиме паразитного питания, вывод VDD должен быть подключен к выводу GND. В режиме паразитного питания шина 1-Wire и CPP должны обеспечить достаточный ток для всех функций DS18B20. Требования к напряжению по постоянному току смотрите в разделе ЭЛЕКТРИЧЕСКИЕ ХАРАКТЕРИСТИКИ.

Когда DS18B20 выполняет температурные преобразования или копирует данные с ОЗУ в память EEPROM может потреблять ток до 1.5 mA. Этот ток может вызвать недопустимое снижение напряжения на шине питаемого через резистор. Чтобы гарантировать, что DS18B20 имеет достаточный ток питания, необходимо обеспечить высокоточное питание на шине каждый раз, когда идет температурные преобразование или выполняется операция записи данных в EEPROM. Это может быть достигнуто при использовании MOSFET транзистора, чтобы запитать шину непосредственно от Vpu, как это показано на рисунке.

Шина 1-Wire должна быть переключена в высокоточное питание в пределах 10 мкс (максимум) после команды конвертирования температуры Convert T [44h] или команды Copy Scratchpad [48h] (копирования данных в EEPROM). Шина должна быть переключена в высокоточное питание на время преобразования (tconv) или передачи данных (twr = 10ms). Никакие операции на шине не должны выполняться, когда включен высокоточный режим питания.

Использование паразитного питания не рекомендуется для температур свыше +100оC так, как DS18B20 может не быть в состоянии выполнять конвертирование температуры и связь из-за более высокого тока утечки, который может быть при высокой температуре. Для приложений, для которых такие температуры являются вероятными, настоятельно рекомендуется, что бы DS18B20, был запитан внешним питанием.

Подключение DS18B20 в режиме внешнего питания

ds18b20 8

DS18B20 может быть запитан и обычным способом, т.е. соединением внешнего провода электропитания к выводу VDD., как показано в рисунке выше. Преимущество этого метода состоит в том, что нет необходимости в использовании MOSFET транзистора. А на шине могут передаваться данные в течение времени температурного преобразования.

В некоторых ситуациях, может возникнуть необходимость в определении состояния режима питания, которое использует датчик температуры, для необходимости использования управления питанием внешним транзистором при выполнении температурных преобразований. Для получения информации микроконтроллер должен выдать команду Skip ROM [CCh] (Пропуск ROM) и команду Чтения Электропитания (Read Power Supply) [B4h], сопровождаемой “слотом времени чтения”. В течение чтения слота времени, DS18B20 с паразитным питанием установит шину в ноль, а DS18B20 с внешним питанием оставят шину в состоянии единицы.

64-BIT код датчика

Каждый DS18B20 содержит уникальный 64-битовый код, хранящийся в ROM. Младшие 8 битов кода содержат код семейства 1-Wire. Код семейства DS18B20 - 28h. Следующие 48 битов, содержат уникальный серийный номер. Старшие 8 битов содержат циклический контроль избыточности (CRC) байт, который вычислен от первых 56 битов кода ROM. 64-битовый код ROM и связанная функция ROM управляют логикой, позволяющей DS18B20 работать, как 1-Wire устройство, используя протокол, детализированный в разделе 1-WIRE BUS SYSTEM.

ds18b20 9

ПАМЯТЬ

Память DS18B20 организована, как показано на рисунке ниже. Память состоит из оперативной SRAM памяти и энергонезависимой памяти EEPROM. Первые два регистра это регистры результата преобразования температуры, далее идут регистры Аварии верхнего и нижнего предела температуры (TH и TL) и регистр конфигурации. Обратите внимания, что, если функция Аварии DS18B20 не используется, то регистры TH and TL могут ячейками универсальной памяти.

Байт 0 и байт 1 из ОЗУ содержит младший и старший бит температурного регистра, соответственно. Эти байты только для чтения. Байты 2 и 3 обеспечивают доступ к регистрам TH and TL. Байт 4 содержит данные регистра конфигурации, байты 5, 6, и 7 зарезервированы для внутреннего использования устройством и запись в эти регистры невозможна; при чтении эти байты возвратят «1» во всех разрядах. Байт 8 ОЗУ только для чтения и содержат код циклического контроля избыточности (CRC), вычисленный для байтов 0 - 7 ОЗУ. DS18B20 генерирует циклический контроль избыточности, используя метод, описанный в разделе генерация циклического контроля избыточности.

Для записи данных в байты 2, 3, и 4 ОЗУ используется команда Write Scratchpad [4Eh]; данные должны быть переданы к DS18B20, начиная с байта 2. Чтобы проверить корректность записи данных, необходимо выполнить чтение (используя команду чтения Read Scratchpad [BEh]) после того, как данные будут записаны. Обратите внимание, что при чтении данных DS18B20 начинает передавать с 0 байта. Чтобы сохранить TH, TL и данные регистра конфигурации в EEPROM, устройство управления должно выдать команду Copy Scratchpad [48h]. Данные, сохраненные в регистрах EEPROM, при включении питания перезагружаются в ОЗУ.

Данные могут быть перезагружены из EEPROM в ОЗУ в любое время командой Recall E2 [B8h]. Устройство управления может контролировать операцию Recall E2 [B8h] (процесс вызова данных из EEPROM в ОЗУ) путем выдачи синхроимпульса после команды и контроля состояния шины, если 0 - операция перезагрузки продолжается, если 1 - процесс выполнен.

Карта памяти DS18B20

ds18b20 10

Регистр конфигурации

Байт 4 памяти содержит регистр конфигурации. Пользователь может настроить разрешающую способность DS18B20, используя биты R0 и R1 в этом регистре. Значение по умолчанию при включении питания: R0 = 1 и R1 = 1 (12-битовая разрешающая способность). Обратите внимание, что есть прямая зависимость между разрешающей способностью и временем преобразования. Бит 7 и биты от 0 до 4 в регистре конфигурации зарезервированы для внутреннего использования устройством и не могут быть изменены или использованы пользователем, при чтении эти биты возвращают «1».

ds18b20 11Таблица 3. КОНФИГУРАЦИЯ РАЗРЕШАЮЩЕЙ СПОСОБНОСТИ ТЕРМОМЕТРА 

ds18b20 12Шина 1-Wire

Шина 1-Wire использует одно главное устройство управления, чтобы управлять одним или более подчиненными устройствами. DS18B20 всегда используется как подчиненное устройство.

Все данные и команды передаются младшим битом вперед.

Шина 1-Wire имеет по определению только единственную линию данных. Каждое устройство (управляющее или подчиненное) подключается к шине через порт с открытым коллектором или с тремя состояниями. Это позволяет каждому устройству "отпускать" линию данных, когда устройство не передает данные, таким образом шина доступна для использования другим устройством. Шина 1-Wire требует внешнего подтягивающего резистора приблизительно 5 кОм. Таким образом, неактивное состояние для 1-Wire шины - логическая единица. Если по какой-нибудь причине обмен данными должен быть приостановлен, шину НУЖНО оставить в неактивном состоянии. Восстановления питания происходит между передачей битов, когда шина находится в высоком состоянии. Если шина будет переведена в низкое состояние на время более чем 480 мкС, то все компоненты на шине будут сброшены (инициализированы).

Конфигурация шины.

ds18b20 13

Последовательность операций для обращения к DS18B20:

Шаг 1. Инициализация
Шаг 2. Команда ROM (сопровождаемая любым требуемым обменом данных)
Шаг 3. Функциональная Команда DS18B20 (сопровождаемая любым требуемым обменом данных).

Очень важно следовать за этой последовательностью каждый раз, когда обращаются к DS18B20, поскольку DS18B20 не будет «отвечать», если любые шаги в последовательности отсутствуют или не в порядке.

Исключения из этого правила составляют команды – Поиск ROM [F0h] и Поиск Аварии [ECh].

После подачи любой из этих команд, контроллер управления (управляемая программа) должен возвратиться к Шагу 1 в последовательности операций обращения.

 Инициализация

Все операции на шине 1-Wire начинаются с инициализации. Инициализации состоит из импульса сброса, переданного устройством управления шиной, сопровождаемым импульсом присутствия, переданным подчиненными устройствами. Импульс присутствия позволяет устройству управления шиной знать, что подчиненные устройства DS18B20 присутствуют на шине и готовы к работе.

ds18b20 14

КОМАНДЫ ROM

После того, как устройство управления шиной обнаружило импульс присутствия, оно может формировать команды ROM. Эти команды оперируют уникальными кодами ROM в 64 бита для каждого подчиненного устройства, и позволяют устройству управления выбирать определенное устройство, из многих устройств присутствующих на шине.

Эти команды также позволяют устройству управления определять, как много и какие типы устройств присутствуют на шине, а также определять любое устройство, находящееся в состоянии Тревога.

Есть пять команд ROM, и каждая команда с 8 битов длиной. Главное устройство должно передать соответствующую команду ROM перед передачей функциональной команды DS18B20.

SEARCH ROM [F0h] - (ПОИСК ROM[F0h])

Когда система первоначально включена, главное устройство должно идентифицировать коды ROM всех подчиненных устройств на шине, эта команда позволяет устройству управления определять номера и типы подчиненных устройств. Устройство управления изучает коды ROM через процесс устранения, которое требует, чтобы Главное устройство исполнил цикл ROM Поиска (то есть, команда Поиска ROM). Эту процедуру необходимо выполнить столько раз, сколько необходимо, чтобы идентифицировать все подчиненные устройства. Если есть только одно подчиненное устройство на шине, может используется более простая команда Чтения ROM место процесса Поиска ROM.

После каждого цикла Поиска ROM, устройство управления шиной должно возвратиться к Шагу 1 (Инициализация) в последовательности операций.

 READ ROM [33h] (Чтение ROM[33h])

Эта команда может только использоваться, когда есть одно подчиненное устройство на шине. Эта команда позволяет устройству управления шиной читать ROM подчиненного устройства (код 64 бита), не используя процедуру Поиска ROM. Если эта команда используется там, где больше чем одно подчиненное устройство на шине, произойдет конфликт на уровне данных, так как все подчиненные устройства сделают попытку ответить в одно и то же время.

MATCH ROM [55h] (Соответствие ROM [55h])

Команда соответствия ROM, сопровождаемая последовательностью кода ROM на 64 бита позволяет устройству управления шиной обращаться к определенному подчиненному устройству на шине. Только подчиненное устройство, у которого точно соответствует 64 битовая последовательность кода ROM, ответит на функциональную команду, формированную главным устройством. Все другие подчиненные устройства на шине будет ждать импульса сброса.
SKIP ROM [CCh] (Пропуск ROM [CCh])

Главное устройство может использовать эту команду, чтобы обратиться ко всем устройствам на шине одновременно. Например, главное устройство может заставить, чтобы все DS18B20 (датчики температуры) на шине, начали одновременно температурные преобразования. Для этого необходимо выдать на шину команду Пропуска ROM [CCh], сопровождаемую командой Температурного преобразования [44h].

Обратите внимание, что команда ЧТЕНИЕ ПАМЯТИ [BEh] может следовать за командой Пропуска ROM, только если на шине присутствует одно подчиненное устройство. Команда Пропуска ROM, сопровождаемая командой ЧТЕНИЕ ПАМЯТИ вызовет конфликт на уровне данных на шине, если на шине более одного подчиненного устройства, так как все устройства будут пытаться одновременно передавать данные.
ALARM SEARCH [ECh] (Поиск Аварии [ECh])

Операция этой команды идентична операции команды Поиска ROM за исключением того, что только DS18B20 (датчики температуры) с установленным флажком аварии ответят. Эта команда позволяет главному устройству определять, какие DS18B20-сы испытали сигнальное состояние в течение недавнего температурного преобразования. После каждого цикла Поиска Аварии (то есть, команда Alarm Search, сопровождаемая обменом данных), устройство управления шиной должно возвратитесь к Шагу 1 (Инициализация) в последовательности операций.

ФУНКЦИОНАЛЬНЫЕ КОМАНДЫ - DS18B20

После того, как устройство управления шиной обработало команду ROM, чтобы обратиться к DS18B20, с которым оно желает связаться, устройство управления может формировать одну из функциональных команд DS18B20. Эти команды позволяют выполнить функции записи или чтения оперативной памяти DS18B20, начать преобразование температуры или определить режим электропитания.
Команда старта преобразования температуры [44h]

Эта команда начинает единственное температурное преобразование. После окончания преобразования данные сохраняются в 2-байтовом температурном регистре в оперативной памяти, а DS18B20 возвращается в неактивное состояние с низким энергопотреблением. Если устройство используется в режиме паразитного питания, то в пределах не позже 10 мкс (максимальный) после подачи команды устройство управления должно установить высокий уровень на шине на время продолжительности преобразование (tconv).

Если DS18B20 питается от внешнего источника питания, главное устройство может считывать состояние шины после команды Конвертирования температуры [44h]. Если на шине логический «Ноль» - это значит, что DS18B20 выполняет температурное преобразование. Если на шине логическая «Единица» – это значит, что преобразование окончено и можно, считывать данные.

В режиме использования паразитного питания эта методика уведомления не может использоваться, так как шина должна быть в высоком состоянии в течение всего цикла преобразования температуры.

Обратите внимание, что методика контроля времени преобразования по состоянию шины состоит в том, что после команды конвертирования температуры устройство управления должно посылать на шину слот времени и контролировать бит состояния который выдает DS18B20. Если DS18B20 отвечает нулем, то конвертирование идет, если 1 – конвертирование выполнено и можно считывать температуру.

Запись в память [4Eh]

Эта команда позволяет устройству управления записывать 3 байта данных в память DS18B20.

Первый байт данных записывается в регистр (TH), второй байт записывается в регистр (TL), и третий байт записывается в регистр конфигурации.

Данные должны быть переданы наименьшим значащим битом вперед.

Для датчиков температуры с паразитным питанием все три байта ДОЛЖНЫ быть записаны командой КОПИРОВАНИЕ ОЗУ В ПЗУ [48h] прежде, чем устройством управления будет сгенерирован импульс сброса, иначе данные будут потеряны.

Чтение памяти [BEh]

Эта команда позволяет Устройству управления читать содержание ПАМЯТИ. Передача данных начинается с наименьшего значащего бита байта 0 и продолжается до 9-ого байта (байт 8 - циклический контроль избыточности). Устройство управления может выполнить сброс, чтобы закончить чтение в любое время, если необходимо только часть данных.
Копирование ОЗУ В ПЗУ [48h]

Эта команда копирует содержание регистров (TH, TL) и регистра конфигурации (байты 2, 3 и 4) в ПЗУ.

Если устройство используется в режиме паразитного питания, то в пределах не позднее 10 μs (максимально) после подачи этой команды устройство управление должно установить высокий уровень на шине и поддерживать его в течении не менее 10ms.

Повторная загрузка [B8h]

Эта команда повторно загружает значения регистров (TH, TL) и данные в регистр конфигурации с ПЗУ и размещает данные в байты 2, 3, и 4, соответственно, в памяти. Главное устройство может контролировать процесс загрузки ОЗУ из ПЗУ считывая состояние шины после команды ПОВТОРНАЯ ЗАГРУЗКА. Если на шине логический «ноль» - это значит идет операция перезагрузки, если логическая «1» Операция выполнена.

Операция ПОВТОРНАЯ ЗАГРУЗКА [B8h] выполняется автоматически при включении питания, данные доступны сразу после включения питания.

Вид электропитания датчика [B4h]

Главное устройство генерирует эту команду, чтобы определить использование DS18B20 на шине паразитного питания. Если после подачи команды на шине присутствует логический «ноль» - это значит, что DS18B20 использует паразитное питание. Иначе DS18B20 использует внешнее питание (логическая единица). Обратите внимание после подачи команды опроса необходимо сформировать слот времени после которого DS18B20 выставит на шину бит состояния который можно считать в течении этого слота времени.

Краткий обзор Команд

Устройства iButtons могут работать как автономно на шине, так и поддерживают следующие Сетевые Команды на основе ROM:

• Чтение ROM [33h] (Read)
• Пропуск ROM [CCh] (Skip)
• Соответствие ROM [55h] (Match)
• Поиск ROM [F0h] (Search)
Чтение ROM [33h] (Read)

Данная команда используется, чтобы прочитать ROM память устройства, если на шине оно только одно. После посылки этой команды Главное устройство должно генерировать 64 слота времени считывания. В ответ iButton пошлет содержимое своей ROM памяти младшим битом вперед, начиная с кода семейства, сопровождаемого серийным номером и байтом циклического контроля избыточности.

Если на шине несколько iButtons устройств, то для чтения ROM памяти необходимо воспользоваться командой Поиск ROM [F0h] (Search), чтобы определить содержание ROM памяти устройств прежде, чем к ним можно будет обратиться.

Если содержание ROM памяти не представляет интерес, потому что на шине только одно iButton, поиск может быть пропущен, посылая команду Пропуск ROM [CCh] (Skip).

Команды Соответствие ROM [55h] (Match) могут использоваться, чтобы обратиться к интересующему устройству, если на шине присутствует несколько iButtons устройств.

Код ROM выполняет функцию адреса устройства. Тот же самый Код ROM не может активировать более 1 устройства, так как соответствие кодов ROM только одному устройству определено при их производстве. Если два iButtons имеют то же самое серийный номер, их семейные коды будут отличны. Этим способом, исключается любой беспорядок или неопределенность.

После подачи команды Соответствие ROM [55h] (Match) Главное устройством будет послано в течение следующих 64 слотов времени содержание ROM памяти требуемого устройства. Последовательность битов должна быть тем же самым, как они были получены при чтении ROM, то есть, младшим битом вперед, начинаясь с семейного кода, сопровождаемого серийным номером и циклическим контролем избыточности. Все iButtons, ROM которого не соответствует требуемому коду, останутся в неактивном состоянии пока они получат другой Импульс Сброса.
Команда Поиск ROM [F0h] (Search)

Если Главное устройство не знает серийный номер устройства подключенного к шине, то существует возможность идентифицировать коды ROM каждого устройства подключенного к шине. Для этого необходимо использовать команду Поиск ROM [F0h] (Search). Эта команда действует, как команда Чтения ROM объединенная с командой Соответствия ROM.

Процесс выглядит следующим образом: После формирования главным устройством команды Поиск ROM [F0h] (Search) все устройства iButtons последовательно будут формировать на шине состояние «0» и «1» соответствующие их значению фактического бита ROM в течение двух Времен (тактов) считывания после формирования команды ROM Поиска.

Если все устройства содержат в этой позиции двоичного разряда:
• «0», чтение будет «01»;
• «1», результат будет «10»;

Если устройства содержат в этой позиции двоичного разряда и «1» и «0», чтение приведет «00» битов, указывая на конфликт.

Главное устройство в следующем (третьем такте) слоте Времени формирует разрядное значение 1 или 0, чтобы отобрать устройства, которые останутся в процессе выбора.

Все устройства у которых бит не соответствует биту сформированному главным устройством перейдут в состояние ожидания и будут находиться в нем пока они не получают Импульс Сброса. После первой стадия выбора, будут следовать 63 читающих цикла выбора, пока, наконец, главное устройство не определит Код ROM одного подчиненного устройства и обратиться к нему.

Каждая стадия выбора состоит из двух слотов Времени считывания и один слот Времени записи. Полный процесс изучения и одновременная адресация - приблизительно три раза длина команды ROM Соответствия, но это позволяет выбрать из всех связанных устройств последовательно все коды ROM.

В приложении, где iButtons устройства подключены к одной шине, это является самым эффективным способом, чтобы определить коды все ROM подчиненных устройств. После чего главное устройство может использовать команду ROM Соответствия, чтобы обратиться к определенному устройству.

Если приложение требует постоянной идентификации и коммуникации с новыми устройствами, так как они могут подключаться и отключатся в ходе работы, то устройство управления должно будет использовать команду Поиск ROM, чтобы идентифицировать коды ROM для обращаться к каждому новому устройству.

Так как логика команды Поиска ROM - самый сложный процесс, следующий пример используется, чтобы иллюстрировать это шаг за шагом.

Четыре устройства установлены на шине. Их двоичное содержание ROM следующее:
устройство 1: xxxxxx10101100
устройство 2: xxxxxx01010101
устройство 3: xxxxxx10101111
устройство 4: xxxxxx10001000

для упрощения символом "х" заменены старшие биты и показаны только младшие восемь битов содержания ROM.

Поиск младшего бита происходить следующим образом:

1. Главное устройство начинает последовательность инициализации
• формирует Импульс Сброса.
• iButtons отвечают формированием импульсов Присутствия.

2. Главное устройство формирует команду Поиск ROM.

3. Главное устройство читает один бит с шины.

Каждое устройство ответит, помещая значение первого бита соответствующего его данным ROM. Устройства 1 и 4 поместят «0» на шину, то есть, они установят на шине низкий уровень. Устройства 2 и 3 сформируют «1» позволяя на линии оставаться в высоком уровне. Результат – «логическое И» всех устройств на линии; поэтому Главное устройство читает 0.
Главное устройство будет читать следующий бит. (С тех пор когда команда Search ROM выполняется, все устройства отвечают одновременно). Все устройства помещают на шину дополнение первого бита. Устройства 1 и 4 сформируют «1»; устройства 2 и 3 сформируют «0». Таким образом, на шине будет состояние логического «0». Главное устройство снова читает «0» при формировании дополнительного кода первого информационного разряда ROM (чтение дает «00» - состояние разрядных конфликтов). Это говорит Главному устройству, что есть устройства на шине содержащие в первом бите как «0», так и «1».
Если бы все устройства имели «0» в этой позиции двоичного разряда, чтение дало бы результат «01»; если бы позиция двоичного разряда содержала во всех устройства «1» результат был бы «10».

4. Главное устройство теперь решает писать «0» и формирует запись его на шину. Эта операция переводит Устройства 2 и 3 (содержащие в этом разряде «1») в пассивное состояние, оставляя только устройства 1 и 4 для участия в процессе поиска.

5. Главное устройство выполняет еще два чтения и получает «01». Это говорит, что все активные устройства имеют 0 в этой позиции двоичного разряда их ROM.

6. Главное устройство тогда пишет 0, чтобы сохранить устройства 1 и 4 активными.

7. Главное устройство выполняет два чтения и получает два «00» биты. Это снова указывает, что в этом разряде присутствуют устройства имеющие «1» и «0.

8. Главное устройство снова пишет 0. Это деактивирует устройство 1, оставляя устройство 4 как единственный активный элемент.

9. Следующие чтения до конца ROM не будет давать состояние разрядных конфликтов. Отсутствие разрядных конфликтов до конца цикла поиска говорит, что происходит чтение ROM только одного активного элемента. Прочитав следующий бит Главное устройство снова посылает этот бит, чтобы сохранить устройство активным. Как только все биты ROM устройства известны и последней бит снова послан Главным устройством, устройство готово к принять команду для обмена информацией.

10. Главное устройство должно изучить данные ROM других устройств. Поэтому оно запускает следующую последовательность Поиска ROM, повторяя шаги 1 - 7.

11. В самой старшей позиции двоичного разряда, где Главное устройство писало «0» в первом проходе (шаг 8), оно теперь пишет «1». Это снимает выделение устройства 4, оставляя устройство 1 активным.

12. Как в шаге 9, следующие чтения до конца ROM не будет давать состояние разрядным конфликтам. Этим заканчивается второй Поиск ROM, где Главное устройство считывает содержание ROM другого устройства.

13. Главное устройство должен изучить данные ROM других устройств. Поэтому, оно запускает следующую последовательность Поиска ROM, повторяя шаги 1 - 3.

14. Во втором проходе в наивысшей степени позиция двоичного разряда, где Главное устройство написал 0 в первом проходе (шаг 4), это теперь пишет 1. Это снимает выделение устройств 1 и 4, оставляя устройства 2 и 3 активными.

15. Главное устройство посылает два слота времени считывания и получает два 0 битов, указывая маленький конфликт.

16. Главное устройство снова решает писать 0. Это снимает выделение устройство 3, оставляя устройство 2 как единственное активное устройство.

17. Как в шаге 9, следующие чтения до конца ROM не будет показывать разрядным конфликтам. Этим заканчивается третий Поиск ROM проходит, где Главное устройство имеет изученный содержание другого ROM.

18. Главное устройство должен изучить данные ROM других устройств. Поэтому это запускает другую последовательность Поиска ROM повторяя шаги 13 - 15.

19. В самой высокой позиции двоичного разряда, где Главное устройство написал a0 в предыдущем проходе (ступают 16), это теперь пишет 1. Это снимает выделение устройства 2, оставляя устройство 3 активным.

20. Как в шаге 17, следующие чтения до конца ROM не будет показывать разрядным конфликтам. Это заканчивает четвертый Поиск ROM проходит, где Главное устройство имеет изученный содержание другого ROM.

Общий принцип этого процесса поиска должен снять выделение одно устройство за другим в каждой противоречивой позиции двоичного разряда. В конце каждого процесса Поиска ROM, Главное устройство узнает содержание другого ROM. Следующий проход является тем же самым как предыдущий проход до пункта последнее решение. В этом пункте Главное устройство входит в противоположность руководство и продолжается. Если другой конфликт найден, снова 0 написан, и так далее. После обоих путей в самом высоком противоречивая позиция двоичного разряда сопровождается до конца, Главное устройство идет тот же самый путь как прежде, но решающий противоположно в более низкой противоречивой позиции двоичного разряда, и так далее, до всех Данные ROM идентифицированы.

Оптимизированная блок-схема алгоритма ROM Поиска показанна в иллюстрации ниже.


Команды DS18B20.

Сопротивление резистора (указанного стрелкой) надо выбирать из компромисса между сопротивлением используемого кабеля и внешними помехами. Сопротивление резистора может быть от 5,1 до 1 кОм. Для кабелей с высоким сопротивлением жил надо использовать более высокое сопротивление. А там где присутствуют промышленные помехи – выбирать более низкое сопротивление и использовать кабель с более большим сечением провода. Для телефонной лапши (4 жилы) для 100 метров необходимо резистор 3,3 кОм. Если вы применяете «витую пару» даже 2 категории длина может быть увеличена да 300 метров!!! ГАРАНТИРОВАННО. А при использовании схемы с внешним драйвером до 600.

Блок схема выполнения ROM команд.

Блок схема выполнения функциональных команд

1-wire протокол.

DS18B20 использует строгий протокол общения на шине 1-Wire, чтобы застраховать целостность данных. Несколько типов сигналов определены в соответствии с этим протоколом: импульс сброса, импульс присутствия, запись 0, запись 1, чтение 0, и чтение 1. Устройство управления формирует все эти сигналы на шине, за исключением импульса присутствия.
Процедура инициализации: формирование импульсов сброса и присутствия

Весь процесс связи с DS18B20 начинается с последовательности инициализации, которая состоит из импульса сброса от устройства управления, сопровождаемого импульсом присутствия от DS18B20. Когда DS18B20 посылает импульс присутствия в ответ на сброс, это указывает устройству управления, что DS18B20 находится на шине и готов работать.

В течение последовательности инициализации устройство управления шиной передает импульс сброса, перемещая шину 1-Wire в состояние логического «0» минимум на 480 μs. Устройство управления шиной отпускает шину и переходит в режим приема. Когда шина отпущена, (5 кОм max) подтягивающий резистор подает на шину в уровень логической «1». Когда DS18B20 обнаруживает положительный перепад, он ждет от 15 μs до 60μs и затем передает импульс присутствия, перемещая шину в логический «0» на длительность от 60 μs до 240μs.

Слоты времени - чтения/записи

Устройство управления шиной записывает данные в DS18B20 в течение слотов времени записи и читает данные от DS18B20 в течение слотов времени считывания. Один бит данных передается за один слот времени.
Слоты времени записи

Есть два типа слотов времени записи:
• Слот времени записи «1» - W1
• Слот времени записи «0» - W0

Устройство управления шиной использует W1 чтобы записать бит логической «1» в DS18B20 и W0, чтобы записать бит логического «0» в DS18B20.

Все слоты времени записи должны быть продолжительностью минимумом 60μs разделенные импульсом восстановления минимумом 1μs. Оба типа слотов времени записи инициализируются устройством управления, устанавливающим на шине логический ноль.

Чтобы генерировать W1, после формирования импульса восстановления, устройство управления шиной должно отпустить шину в пределах 15μs. Когда шина отпущена, подтягивающий резистор переместит уровень на шине к логической «1».

Чтобы генерировать W0, после формирования импульса восстановления, устройство управления шиной должно продолжать удерживать шину продолжительностью всего слота времени (не менее 60μs).

DS18B20 после формирования импульса восстановления выполняет выборку сигнала через 15μs в течение окна, которое продолжается от 15μs до 60μs, и инициализирует слот времени записи. Если уровень на шине высокий в течение окна выборки, осуществляется запись 1 в DS18B20. Если уровень низкий, осуществляется запись 0 в DS18B20.

Слоты времени считывания

Слоты времени считывания предназначены для определения состояния устройства. DS18B20 может передать данные о своем состоянии устройству управления только, когда устройство управления формирует слоты времени считывания. Для команд Чтения Памяти [BEh] или команды Чтения Вида Питания [B4h] устройство управления должно генерировать слоты времени считывания немедленно после формирования этих команд, это необходимо, чтобы DS18B20 мог обеспечить требуемые данные. Кроме того, устройство управления может генерировать слоты времени считывания после команды Конвертирования [44-ого] или команды Recall E2 [B8h], чтобы узнать о состояние операции, как объяснено в разделе КОМАНДЫ ФУНКЦИИ DS18B20.

Все слоты времени считывания должны быть минимумом 60μs и разделяться импульсами восстановления минимумом 1μs между слотами. Слот времени считывания инициализирован главным устройством, устанавливает на шине уровень логического нуля минимум на 1μs и затем отпускает шину. После того, как Устройство управления инициализирует слот времени считывания, DS18B20 начнет передавать 1 или 0 на шине. DS18B20 передает 1, оставляя шину в высоком уровне и передает 0, устанавливая на шине 0. Выходные данные от DS18B20 достоверны через 15μs после отрицательного уровня, который инициализировал слот времени считывания. Поэтому, Устройство управления должен выпустить шину и затем начать считывание шины не ранее 15μs от начала слота.

Генерирование ЦИКЛИЧЕСКОГО КОНТРОЛЯ ИЗБЫТОЧНОСТИ

Байты циклического контроля избыточности обеспечиваются, как часть 64-битового кода ROM DS18B20 и в 9-ом байте сверхоперативной памяти. Циклический контроль избыточности кода ROM вычислен от первых 56 битов кода ROM и содержится в наиболее значительном байте ROM. Сверхоперативный циклический контроль избыточности вычислен от данных, сохраненных в сверхоперативном, и поэтому это изменяется когда данные в сверхоперативных изменениях. Контроль с помощью циклического избыточного кода предоставляет устройству управления шиной метод проверки правильности данных, когда данные читаются от DS18B20. Чтобы проверять, что данные читались правильно, устройство управления шиной должно повторно вычислить циклический контроль избыточности от полученных данных и затем сравнить это значение с любым циклический контроль избыточности кода ROM (для чтений ROM) или к сверхоперативному циклическому контролю избыточности (для сверхоперативных чтений). Если расчетный циклический контроль избыточности соответствует циклическому контролю избыточности чтения, полученные данные были свободные от ошибок. Сравнение значений циклического контроля избыточности и решения продолжаться с операцией определено полностью устройством управления шиной. Нет никакой схемы в DS18B20, который препятствует последовательности команды продолжаться, если циклический контроль избыточности DS18B20 (ROM или сверхоперативный) не соответствует значению, сгенерированному устройством управления шиной.

Эквивалентная полиномиальная функция циклического контроля избыточности (ROM или сверхоперативный):

CRC = X8 + X5 + X4 + 1

Устройство управления шиной может повторно вычислить циклический контроль избыточности и сравнить это со значениями циклического контроля избыточности от DS18B20, используя полиномиальный генератор, которому показывают в иллюстрации 9. Эта схема состоит из сдвигового регистра и Гейтса XOR, и биты сдвигового регистра инициализированы к 0. Старт с наименьшего значащего бита кода ROM или наименьшего значащего бита байта 0 в ОЗУ, один бит одновременно должен сдвинутый в сдвиговый регистр. После смещения в 56-ом бите от ROM или наиболее значительного бита байта 7 от ОЗУ, полиномиальный генератор будет содержать перерасчетный циклический контроль избыточности. Затем, 8-битовый код ROM или сверхоперативный циклический контроль избыточности от DS18B20 должны быть сдвинуты в схему. В этом пункте, если перерасчетный циклический контроль избыточности был правилен, сдвиговый регистр будет содержать весь 0s. 

Пример работы 1 DS18B20

В этом примере используется несколько DS18B20 на шине, с паразитным питанием. Устройство управления шиной инициализирует температурное преобразование в определенном DS18B20 и затем читает его ОЗУ и вычисляет циклический контроль избыточности, чтобы проверить данные.

Пример работы 2 DS18B20

В этом примере используется только один DS18B20 на шине, с паразитным питанием. Устройство управления посылает данные (TH, TL, and config) к регистрам конфигурации в ОЗУ DS18B20, а затем читает ОЗУ повторно вычисляя циклический контроль избыточности, чтобы проверить данные. Далее устройство управления копирует содержание ОЗУ в EEPROM.

За основу статьи было взято описание DS18B20 Геннадия Чернова

 

 

 

©2017 Sj Expnews - Joomla Templates.