Анатолий Шитиков
Аналого-цифровой преобразователь DS 2450
Американская фирма Dallas Semiconductor в последние годы занимается не только развитием протокола цифровой связи по стандарту MicroLAN, но также непрерывно наращивает номенклатуру выпускаемых электронных приборов этого стандарта. Одним из таких оригинальных устройств, выпущенных фирмой, является 4-канальный 16-разрядный аналого-цифровой преобразователь последовательного приближения для линии MicroLAN DS 2450.
Система однопроводной шины
Однопроводная шина является системой, которая имеет (как правило) одного ведущего шины и одного или более ведомых. Основой архитектуры сетей MicroLAN является топология общей шины, когда каждое из устройств подключено непосредственно к единой магистрали без каких-либо каскадных соединений и ветвлений. Во всех применениях прибор DS 2450 является ведомым. Обсуждение этой шины разбито на три раздела: аппаратное построение, операционная последовательность и передача по однопроводной шине (типы сигналов и синхронизация). Собственно, связь осуществляется по одной линии данных и одному возвратному («земляному») проводу. Таким образом, даже через неэкранированную витую пару или обычный телефонный провод без дополнительных вспомогательных устройств можно вести обмен информацией на расстоянии до 300м. Протокол связи определяет состояние шины в течение специфических отрезков времени (слотов), которые начинаются на спаде фронта синхроимпульса от ведущего шины. Более детальное описание протокола связи сети MicroLAN имеется в книге стандартов на DS 19XX iButton.
АЦП DS 2450 разрешает проблему обслуживание различных источников аналоговой информации (датчики, преобразующие в электрические сигналы такие физические величины, как давление, вес, тон, напряжение, температура ит. д.), существенно расширяя перспективы использования однопроводных сетей.
Описание прибора
АЦП DS 2450S выпускается в компактном, дешевом 8-выводном корпусе SOIC для поверхностного монтажа (рис. 1). Он представляет собой преобразователь аналогового сигнала в цифровой, работающий в режиме последовательного приближения, с аналоговым мультиплексором 4 в 1. Каждый канал имеет собственный регистр, в котором устанавливается и хранится диапазон входного напряжения, разрешающая способность и значение сигнальных порогов, используемых для установки сигнальных флажков. Если входное напряжение выходит за указанный диапазон, флажки разрешают участие прибора в «условном поиске». На каждый канал устанавливается по два сигнальных флажка, которые без требования к ведущему шины просто указывают, было ли измеренное напряжение выше или ниже установленных порогов. Каждое преобразование АЦП инициализируется ведущим шины. Канал, не используемый как аналоговый вход, может служить цифровым выходом с открытым стоком. После отключения входа ведущий шины может непосредственно включать или выключать МОП-транзистор в выбранном канале. Все параметры настройки прибора хранятся в статическом ОЗУ и сохраняются до тех пор, пока прибор получает питание или по однопроводной шине, или через вывод Vcc.
После включения флажка «сброс питания» ведущему шины сообщается о необходимости восстановить параметры настройки прибора для продолжения нормальной работы. Все регистры прибора организованы в три восьмибайтовые страницы памяти. Генератор кода контрольной суммы CRC 16, входящий в состав микросхемы, осуществляет защиту передаваемой информации от ошибок передачи.
Блок-схема АЦП (рис. 2) показывает основные функциональные узлы прибора. DS 2450 содержит программируемый лазером регистрационный номер, который включает 48-разрядный серийный номер, 8-разрядный групповой код (20h) и 8-разрядный код контрольной суммы. С помощью этих кодов происходит адресация прибора, определение расположения при функциональном управлении и достоверности принятой информации.
Питание прибора осуществляется через вывод Vcc или через однопроводную шину. При питании прибора от однопроводной шины в течение времени, пока сигнал на линии имеет высокий логический уровень, на внутреннем конденсаторе накапливается заряд. Далее, когда уровень сигнала на шине близок к нулевому, прибор питается от этого «паразитного» конденсатора, после чего, при появлении на шине сигнала высокого уровня, конденсатор снова подзаряжается. Энергии «паразитного» источника хватает только для обмена информацией с ведущим шины. Для выполнения аналого-цифрового преобразования требуется непрерывный его подзаряд от однопроводной шины, которая все время должна находиться в единичном состоянии, а если это невозможно, то необходимо прямое подключение источника Vcc к соответствующему выводу микросхемы.
Иерархическая структура для однопроводного Протокола
Микросхема DS 2450 использует стандартный протокол однопроводной связи фирмы Dallas Semiconductor для передачи данных. Связь между ведущим шины и DS 2450 предусматривает использование двунаправленной линии, которая связана с ножкой последовательного порта микроконтроллера. Ведущий однопроводной шины должен сначала выработать одну из семи функциональных команд ROM:
- чтение ROM,
- совпадение ROM,
- поиск ROM,
- условный поиск ROM,
- пропуск ROM,
- перевозбуждение пропуска ROM,
- перевозбуждение совпадения ROM.
После завершения перевозбуждающего командного байта ROM, выполненного на стандартной скорости 16,3 Кбит/с, прибор введет режим «overdrive», после чего вся последующая связь происходит на высокой скорости 142 Кбит/с. Алгоритм выполнения функциональных команд показан в «Data sheets» на DS 2450. После того как функциональная команда ROM выполнена, память и функции управления становятся доступными и ведущий шины может обеспечить выполнение любой из команд, с которыми может работать АЦП. Алгоритм выполнения этих команд также представлен в «Data sheets». Все данные читаются и записываются, начиная с младшего значащего разряда.
Циклический код избыточной контрольной суммы (CRC) вырабатывается полиноминальным генератором, состоящим из сдвигового регистра и элементов «Исключающее ИЛИ».
Сдвиговый регистр, выступающий в качестве аккумулятора циклического кода избыточной контрольной суммы, инициализируется в «нуле». Затем, начиная с младшего бита группового кода, один бит за такт, перемещается на один разряд. После того как 8 разрядов группового кода введены, вводится серийный номер. После введения 48-го разряда серийного номера сдвиговый регистр содержит значение CRC. Сдвиг на 8 разрядов CRC должен вернуть сдвиговый регистр во всех разрядах в нули. Однопроводный генератор избыточной контрольной суммы приведен на рис. 3.
Более полная информация о циклическом коде с избыточной контрольной суммой имеется в указанной «Book of DS 19xx iButton TM Standards».
Регистры прибора
Все регистры DS 2450 располагаются в памяти размером 24 байта и организованы как три 8-байтных страницы. Первая, названная «считывание преобразования», содержит область памяти, куда записываются результаты преобразования, доступные для чтения ведущим шины. Каждому каналу отводится 16 разрядов, по адресам, начиная с «00» и «01» для канала А и кончая «06» и «07» для канала D. Распределение памяти показано в табл. 1.
При подаче питания по умолчанию все регистры «считывание преобразования» обнуляются. Независимо от разрешающей способности, старший бит преобразования всегда находится на том же разрядном месте. Если разрешающая способность меньше, чем 16 разрядов, то младшие значащие разряды результата преобразования заполняются нулями, чтобы результат всегда соответствовал 16 разрядам. Если не требуются все 4 аналоговых входа, то вход D используется для первого канала; вход С — для второго и т. д. Это необходимо для более быстрого считывания результатов преобразования с целью минимизации трафика однопроводной шины. Более подробно информация о считывании дана в описании команды «Считывание памяти».
Сигналы управления и информация о статусе всех каналов располагается в памяти на странице 1 (табл. 2). Четыре младших разряда RC0-RC3 определяют разрешающую способность преобразования. Так, код 1111 (15 в десятичном счислении) позволяет получить 15-разрядную точность. Для полного 16-разрядного преобразования кодовая комбинация должна быть 0000.
Следующие 2 разряда за RC3 не имеют никакого значения, всегда считываются как «00» и не могут изменяться за 1 с.
Следующие биты, ОС (управление выходом) и ОЕ (разрешение выхода), управляют возможностью использования канала как выходного. Для нормального ввода аналогового сигнала бит ОЕ соответствующего канала должен быть равен 0, состояние бита ОС — безразлично. Если ОЕ установлен в 1, то логический 0 на бите ОЕ означает, что выходной транзистор канала проводит. Логическая 1 на ОС выключает транзистор. При соединении открытого стока транзистора через резистор нагрузки с шиной +5 В, включение выхода не выводит из строя аналоговый вход. Преобразование остается возможным, если транзистор в проводящем состоянии заканчивается величиной, близкой к 0.
Бит IR во втором байте управления каналами и статусом памяти выбирает диапазон входного напряжения.
Если IR устанавливается в логический 0, то верхний предел преобразования составляет 2,55 В. При установке IR в логическую 1 диапазон расширяется до 5,1 В.
Следующий бит за IR не имеет функционального значения и всегда должен быть установлен в логический 0.
Идущие далее 2 бита AEL и AEH управляют ответом прибора на команду «Условный поиск», если преобразование заканчивается величиной выше (AEH) или ниже (AEL), чем аварийный порог напряжения канала, установленный в параметрах настройки. Сигнальные флажки AFL (низкий уровень) и AFH (высокий уровень) сообщают ведущему шины, было ли входное напряжение канала ниже или выше порога в самом последнем преобразовании. Эти флажки очищаются автоматически, если новое преобразование не выходило за пределы порогов. В них может быть занесен логический ноль мастером шины и без преобразования.
Следующий бит — всегда логический 0. Он не может быть изменен на логическую 1.
Бит POR (сброс при включении питания) автоматически устанавливается в логическую 1, поскольку прибор исполняет цикл сброса при включении питания. Пока этот бит установлен в 1, прибор всегда будет отвечать ведущему шины на команду «Условный поиск», что управление и пороговые данные больше не действительны. После включения питания бит POR должен переписаться мастером шины в ноль. Это может быть сделано с восстановлением управления и данными порога. Возможна запись ведущим шины в бит POR единичного уровня. В этом случае прибор принимает участие в «Условном поиске», но цикла сброса не происходит, так как бит POR связан с прибором, а не с величиной параметров канала в последней установке входного диапазона. Включение питания по умолчанию устанавливает для управления/состояние код 08 h для первого и 8С h для второго байта каждого канала.
Сигнальные установки
Регистры сигнальных пороговых напряжений каждого канала располагаются в памяти на странице 2. Низкий порог располагается в младшем адресном байте (табл. 3). При включении питания по умолчанию устанавливается 00 h — нижний сигнальный порог и FF h — верхний сигнальный порог. Сигнальные установочные параметры всегда соответствуют восьми разрядам. Для точности преобразования выше или равной восьми разрядам сигнальный флажок будет установлен, если восемь старших значащих разрядов преобразования превосходят значение, хранящееся в сигнальном регистре высокого уровня (AFH), или ниже значения, хранящегося в сигнальном регистре низкого уровня (AFL). Если точность преобразования ниже, чем восемь разрядов, то младшие значащие разряды сигнальных регистров игнорируются.
Есть еще одна страница памяти по адресу 18:- 1F, которая используется для заводской калибровки. Эта страница памяти доступна для пользователя через команду «Чтение памяти» или «Запись памяти». Произвольное изменение данных этой страницы приводит к раскалибровке АЦП, и прибор будет неработоспособен до тех пор, пока не произойдет сброс при включении питания. Если прибор запитывается от шины Vcc и аналоговая схема должна сохраняться неизменно активной, то по адресу 1C h после подачи питания нужно записать код 40 h. Это устраняет время смещения, необходимое с каждой командой «Преобразование» (см. описание команды «Преобразование»). Связь между ведущим шины и DS 2450 происходит при нормальной скорости, если OD = 0 (по умолчанию), или при высокой скорости (Overdrive), если OD устанавливается в 1. Если явно не установлен режим Overdrive, прибор работает с нормальной скоростью.
Чтение памяти AA h
Команда «Чтение памяти» применяется для чтения результатов преобразования и данных управления/состояния сигнальных установок. Ведущий шины следит за командным байтом с двухбайтовым адресом (ТА 1= (Т7:Т0), ТА 2 = (Т15:Т8)), который указывает стартовое местоположение байта в пределах карты распределения памяти. С каждым последующим чтением данных из DS 2450 временной слот ведущего шины стартует по указанному адресу и продолжается до тех пор, пока восьмибайтная страница достигнет конца. В этой точке ведущий шины получит 16-разрядный циклический код избыточной контрольной суммы (CRC) командного байта, адресных байтов и байтов данных, вычисляемый DS 2450.
Если CRC прочитан ведущим шины неправильно, то есть по каким-то причинам данные считаны неверно, то должен вырабатываться импульс «Сброс», и вся процедура считывания должна быть повторена.
Следует иметь в виду, что начальный проход по блок-схеме «Чтение памяти» сформирует 16-разрядную величину CRC, которая в результате очистки CRC-генератора и сдвига в командный файл будет содержать еще 2 адресных байта и байты данных, начинающиеся с первой адресуемой ячейки памяти и вплоть до последнего байта адресуемой страницы. Следующие проходы по блок-схеме «Чтение памяти» сформируют 16-разрядный CRC, в результате которого очистится CRC-генератор и затем произойдет сдвиг в новые байты данных, начинающиеся с 1-го байта следующей страницы.
Запись памяти (55 h)
Команда «Запись памяти» используется для записи в 1-ю и 2-ю страницы памяти параметров управления каналами и сигнальных порогов. Ведущий шины следует за командным байтом с двумя байтами запускающих адресов (ТА1=(Т7:Т0), ТА2=(Т15:Т8)) и байтом данных (D7:D0). 16-разрядный циклический код избыточной контрольной суммы (CRC) байта команды, адресных байтов и байта данных вычисляется DS 2450 и считывается ведущим шины для подтверждения правильности получения командного слова, адреса запуска и байта данных. Тут же DS 2450 копирует байт данных в определенную ячейку памяти. В течение следующих 8 временных слотов ведущий шины получает для проверки копию того же байта, но считанного из памяти. Если результат неверен, то выдается импульс «Сброс» и текущий адресный байт должен быть записан снова. Если ведущий шины не выдает импульс «Сброс», а зона памяти еще не кончилась, DS 2450 автоматически добавляет единицу в адресный счетчик, чтобы адресовать к следующей ячейке памяти. Новый двухбайтовый адрес будет загружен в 16-разрядный CRC-генератор как начальное значение. Ведущий шины пошлет следующий байт, используя для записи 8 временных слотов. Поскольку DS 2450 получает этот байт и сдвигает его в CRC-генератор, в результате имеем 16-разрядный циклический код для нового байта данных и нового адреса. Со следующими 16 временными слотами ведущий шины считывает этот 16-разрядный CRC из DS 2450, чтобы проверить правильность полученного нового адреса и байта данных. Если CRC неправильный, должен выдаваться импульс «Сброс», чтобы повторить последовательность команды «Запись памяти». Итак, начальный проход по блок-схеме «Запись памяти» генерирует 16-разрядное значение CRC, которое является результатом смещения командного байта в CRC-генератор и добавления к нему двух байт адреса и байта данных. Последующие проходы по блок-схеме «Запись памяти» вызывают автоматическое добавление единицы DS 2450 в адресный счетчик и, соответственно, генерацию 16-разрядного CRC, который является результатом загрузки (не сдвига) нового (+1) адреса в генератор CRC, а затем сдвиг в новый байт данных.
Решение о продолжении работы после получения неверного CRC, или при наличии сбоев, однозначно определяется ведущим шины. Доступ для записи в регистр «Считывание преобразования» невозможен. Если попытаться сделать запись на странице 0, прибор отследит алгоритм «Запись в память» правильно, но проверка байта данных, полученного обратно из памяти, обычно не удается. Последовательность команды «Запись памяти» может заканчиваться в любой точке с выдачей импульса «Сброс».
Преобразование (3C h)
Команда «Преобразование» используется для начала преобразования аналогового сигнала в цифровой по одному или более каналам с расширяющей способностью, указанной на странице 1 памяти данных управления/состояния. Преобразование происходит за 60–80 мкс/бит + 160 мкс — время смещения, которое требуется каждый раз для выдачи команды на преобразование. Для четырех каналов c 12-разрядным разрешением на команду «Преобразование» потребуется не более 4х12х80+160=4 мсек. Если DS 2450 запитывается через вывод Vcc, то пока DS 2450 занят аналого-цифровым преобразованием, ведущий шины может общаться с другими приборами однопроводной шины. Если прибор получает питание только от однопроводной шины, то ведущий шины должен надежно соединить прибор через нагрузочный резистор к +5В и на всю предполагаемую длительность преобразования обеспечить его достаточной энергией. Преобразование управляется маской выбора входа (табл. 4а) и служебным байтом считывания (табл. 4б).
В маске выбора входа ведущий шины определяет, какие каналы участвуют в преобразовании. Канал выбран, если бит, указывающий на канал, установлен в единицу. Если выбирается более одного канала, то преобразование происходит последовательно — один канал за другим: A, B, C, D, пропуская те каналы, которые не выбраны. Ведущий шины может считывать результаты преобразования каналов до того, как преобразование закончится во всех остальных выбранных каналах. Чтобы отличить предыдущий результат от нового значения, ведущий шины использует служебный байт считывания. Последний позволяет предварительно установить в регистры «считывание преобразования» для каждого выбранного канала все единицы или все нули. Если ожидаемый результат близок к нулю, то предварительно устанавливают все 1. Если — наоборот, то устанавливают все 0.
В случае когда выборка может производиться после преобразования во всех каналах, необходимость в предварительной установке регистров отпадает.
Канал, не выбранный маской, может не устанавливаться в 0 или 1, но если транзистор на входе этого канала должен быть проводящим, то регистр этого канала нужно установить в 0. После команды «Преобразование» ведущий считывает CRC 16 от суммы командного байта, маски выбора и служебного байта. Не ранее чем через 10 мкс после получения ведущим шины наибольшего значащего разряда CRC 16 начинается преобразование.
При питании от источника Vcc ведущий шины может послать импульс «Сброс» для выхода из преобразования в любой момент или непрерывно считывать данные. При «паразитном» питании ведущий шины должен надежно подключить прибор через нагрузочный регистр к шине +5 В на время не менее 10 мкс. Если строка данных готова, то ведущий может возобновить считывание. Ведущий шины для выхода из команды «Преобразование» должен послать импульс «Сброс». Перед подачей импульса «Сброс» регистр данных необходимо установить в 1 по всем разрядам.
Пример использования DS 2450
(раздел установки)
Для примера рассмотрим команды, которые необходимы при работе ведущего шины с DS 2450 на однопроводной шине. При этом считаем, что DS 2450 подключен к источнику Vcc. Канал D установлен для преобразования с разрешением 12 разрядов, диапазон 5–12 В и сигнальные пороги 2,0 В (64 h) и 3,0 В (96 h) с шагом 20 мВ. Включается выход канала А, если аварийный сигнал низкого уровня, и выход канала В, если аварийный сигнал высокого уровня.
|