Вспомогательные микросхемы I2C часть 2

PCF8583

В оригинальной документации (Product Specification) [31 ] микро­схема имеет наименование clock/calendar with 240x8 bit RAM. Это очень интересная микросхема, которая имеет в своем составе часы реального времени и статическое ОЗУ (RAM). Причем микросхема может использоваться и как только часы, и как только ОЗУ, а также выполнять совмещенные функции — все ячейки памяти находятся в одном адресном пространстве. Где можно применить данную микро­схему? Например, запитав ее от отдельного автономного источника (гальванической батареи или аккумулятора), разместить в устройст­ве, требующем считывания текущего времени в процессе работы (скажем, для ведения протокола каких-либо измерений). Такие часы имеются в любом PC-совместимом компьютере для сохранения даты создания файлов. В составе уличных телефонов-автоматов тоже есть часы реального времени для фиксации времени разговора и определения просроченных телефонных карт. Часы реального времени можно использовать в разнообразных системах избирательного дос­тупа, в бытовой технике (таймеры кухонной техники), в автомобиль­ной электронике. Читатель сам найдет варианты применения PCF8583, если внимательно оглянется вокруг и задействует свою фантазию.

Итак, каковы заманчивые свойства микросхемы:

• управление по интерфейсу I2C;

• диапазон напряжений питания — от 2,5 до 6,0 В;

• часы реального времени сохраняют работоспособность в диапа­зоне напряжений 1...6 В;

• максимальный рабочий ток (fosc = 0 Гц) — 50 мкА;

• 240 х 8 bit низковольтное RAM;

• календарь на четыре года;

• универсальный таймер с функциями alarm и overflow;

• формат 24 и 12 часов;

• базовая частота 32 768 и 50 Гц;

• автоматический инкремент адреса при обращении по шине I2C;

• программируемые функции alarm, overflow и interrupt (преры­вание).

Микросхема PCF8583 представляет собой статическое КМОП RAM, состоящее из 2048 битов, организованных в 256 байтов по 8 битов. Встроенный регистр адреса байта автоматически инкременти- рует свое значение после каждой операции записи (чтения) данных. Вывод АО используется для программирования slave-адреса микро­схемы. Понятно, что без дополнительных средств к одной шине мо­жет быть подключено не более 2 микросхем PCF8583. Первые 8 бай­тов RAM используются для функционирования часов/календаря. Причем адрес 00h — специальный регистр статуса. Вторые 8 байтов (адреса 08...0Fh) могут быть запрограммированы как сигнальные ре­гистры (alarm registers), а также возможно их использование как яче­ек свободной памяти. Последующие 240 байтов — свободная память RAM, распределяемая и заполняемая по усмотрению пользователя.

Расположение выводов микросхемы PCF8583 приведено на рис. 3.74, назначение выводов — в табл. 3.39. Блок-схема внутренне­го устройства — на рис. 3.75.

clip_image002

Таблица 3.39. Назначение выводов

Символ

Вывод

Описание

0SC1

1

Вход генератора

OSCO

2

Выход генератора

АО

3

Программирование slave-aflpeca

Vss

4

Общий питания

SDA

5

Линия SDA шины I2C

SCL

CD

Линия SCL шины I2C

INT

7

Вывод генерации прерывания

V0D

оз

Питание«+»

clip_image004

Рассмотрим теперь принципы работы с микросхемой. Как видно из рис. 3.75, первые 8 байтов использованы непосредственно для функционирования часов реального времени. Регистр статуса (control/status, адрес 00h) используется для конфигурирования мик­росхемы, индивидуальной ее настройки, а также для определения си­туаций, возникающих в процессе работы. Перечисляемые далее ре­гистры имеют следующее функциональное назначение (в режиме clock modes):

• адрес Olh [hundredth of a seconds] — 1/10 и 1/100 секунды;

• адрес 02h [scconds] — секунды и десятки секунд;

• адрес 03h [minutes] — минуты и десятки минут;

• адрес 04h [hours] — десятки часов и часы;

• адрес 05h [year/date] — год и дата;

• адрес 06h [weekday/months] — неделя и месяц;

• адрес 07h [timer] — функциональный таймер.

Таймер рассчитан на 99 дней. Все числа хранятся в регистрах в упакованном BCD-формате (двоично-десятичном). Старшая тетрада байта относится к десяткам (например, десятки секунд), а млад­шая — к единицам (единицы секунд).

Регистры с адресами 08h...0Fh используются для задания функ­ции alarm. То есть при разрешении отработки этой функции в регист­ре статуса при совпадении числа, занесенного в alarm-регистры, с числом, содержащимся в счетных регистрах 01h...07h, будет возни­кать сигнал прерывания.

Существует также режим event counter (счетчик событий), когда микросхема работает в режиме простого счетчика и может генериро­вать прерывание по совпадению чисел в регистрах [00h...03h] и [08h...0Ah], а также по таймеру 07h и OEh.

Назначение регистров в обоих режимах приведено на рис. 3.76.

Теперь поговорим подробнее о функции alarm. Как уже было ска­зано, эта функция может быть активизирована или отключена в реги­стре статуса 00h. Установками можно задавать датированный alarm, ежедневный alarm, недельный alarm, alarm по таймеру. О возникно­вении события «alarm» свидетельствует установка в низкий уровень сигнала на выводе 7 микросхемы. Необходимо обратить внимание читателя на то, что этот вывод выполнен по технологии «открытый

control/status

00

control/status

00

hundred of a second

1/10S I 1 /100s

01

D1

DO

01

seconds

10s I Is

02

D3

D2

02

minutes

10min t 1min

03

D5

D4

03

hours 10h I 1h

04

Свободно

04

year/date lOdav 1 1dav

05

Свободно

05

weekday/month

10month Г 1 month

06

Свободно

06

timer

10dav I 1dav

07

T1 tl[T;er ТО

07

alarm/control

08

alarm/control

08

hundred of a second

1/10s I 1/100s

09

D1

alarm

DO

09

alarm seconds I

OA

D3

D2

OA

alarm minutes 1

DB

D5

D4

DB

alarm hours 1

OC

Свободно

DC

alarm date 1

0D

Свободно

0D

alarm month

0E

Свободно

0E

alarm timer

OF

alarm timer

OF

Свободная

Свободная

RAM

RAM

clock mode event counter

Рис. 3.76. Назначение и формат регистров микросхемы PCF8583 в режимах clock modes и event counter

сток», а значит, требует подключения pull-up резистора к напряже­нию питания. Флаг прерывания (1NT) остается активным до момента повторного программирования режима alarm.

Если функция alarm не задействована (бит 2 регистра статуса ус­тановлен в «О»), ячейки 08h...0Fh могут быть использованы по ус­мотрению разработчика электронной схемы.

Назначение бита регистра статуса приведено на рис. 3.77. Ре­гистр доступен как по условию чтения, так и по условию записи. Детальное описание регистров часов (hours), года и даты (year/date), недели и месяца (weekday/months) приведено на рис. 3.78—3.80. 12-часовой или 24-часовой формат можег быть установлен програм­мированием бита 7 в регистре hours (адрес 04h). При осуществлении чтения по адресам 05h и 06h желательно установить флаг mask в ре­гистре статуса. Это позволит пользователю непосредственно читать дату и месяц, не проводя дополнительные вычисления.

В случае использования режима event counter все данные в ячей­ках D0...D5 также должны содержаться в BCD-формате. Тетрада D5 в этом случае является старшей тетрадой, а тетрада DO — младшей.

clip_image006

clip_image008

clip_image010

clip_image012

Таблица 3.40

Единица измерения

Режим счета

Переход к следующей единице

Содержание счетчика месяца

Hundredths of second

00 to 99

99 to 00

-

Seconds

00 to 59

59 to 00

-

Minutes

00 to 59

59 to 00

-

Hours (24 h)

00 to 23

23 to 00

;

Hours (12h)

12AM

-

-

01 AM to 11 AM

-

-

12 PM

-

-

01 PMto 11 PM

11 PMto 12 AM

-

Date

01 to 31

31 to 01

1,3,5, 7, 8, 10, 12

01 to 30

30 to 01

4, 6, 9, 11

01 to 29

29 to 01

2, year = 0

01 to 28

28 to 01

2, year = 1,2,3

Months

01 to 12

12 to 01

-

Year

0 to 3

-

-

Weekdays

0 to 6

6 to 0

-

Timer

00 to 99

нет содержания

-

Диапазон изменения величин во всех регистрах приведен в табл. 3.40.

В случае установки бита 2 регистра статуса в состояние «1» акти­визируется режим alarm, таймер и схема генерации прерываний (interrupt). Все эти функции могут быть определены с помощью реги­стра alarm control, располагающегося по адресу 08h. Возможные со­стояния этого регистра приведены на рис. 3.81.

clip_image014

Регистры, относящиеся к режиму alarm, следуют за регистром alarm control (адреса G9h...0Fh). Их адреса соответствуют счетным регистрам со смещением 08h. Сигнал alarm генерируется тогда, ко­гда содержание этих регистров совпадает «бит в бит». Установки «год» и «педеля» не участвуют в генерации сигнала «alarm по опре­деленной дате». Установки «дата» и «месяц» игнорируются при ге­нерации сигнала «ежедневный alarm». Если выбран режим «недель­ный alarm», при генерации сигнала alarm будет учтено состояние ре­гистра alarm weekdays (адрес OEh), показанного на рис. 3.82. При включении функции «часовой alarm» биты 6 и 7 регистра alarm hours должны соответствовать битам счетного регистра часов.

Таймер (адрес 07h) активизируется при установке в регистре ста­туса комбинации ХХОХ XIXX. Таймер может осуществлять счет от О (или от другой установленной величины) до 99. Флаг timer в реги­стре статуса должен быть установлен при превышении таймером указанной величины, а возврат обеспечивает программно. Этот флаг может генерировать внешнее прерывание при установке бита 3 в ре­гистре alarm control.

Alarm от таймера может быть установлен по биту 6 в регистре alarm control. Когда счетное число таймера сравняется с величиной,

clip_image016

определенной в регистре alarm timer (адрес OFh) — при условии уста­новки бита 1 в регистре статуса, — генерируется сигнал alarm. Этот сигнал может также сгенерировать внешнее прерывание при уста­новке бита 7 в регистре alarm control.

Режим event counter (счетчик событий) активизируется установ­кой битов 4 и 5 в регистре статуса. Этот режим применяется в случае необходимости подсчета импульсов, поступающих на вход OSC1. Счетчик хранит 6 цифр, которые, как уже было сказано ранее, содер­жатся в памяти микросхемы в двоично-десятичном упакованном формате. Предельная величина счетчика 999 999 тактов входного импульса. Счетчик может генерировать сигнал alarm при программи­ровании соответствующих регистров по адресам 09h, OAh, OBh и раз­решения генерации сигнала alarm в регистре статуса (биты 4 и 5). Также должен быть установлен бит 1 в регистре статуса. Генерация внешнего прерывания на выводе 7 также возможна.

Все внешние прерывания, как уже было отмечено, передаются на вывод INT микросхемы. Активный уровень на этом выводе (при сге­нерированном прерывании) — низкий. Возврат осуществляется уста­новкой соответствующего флага в регистре статуса, который вызы­вал это прерывание. В режиме подсчета реального времени, если ре­жим alarm не задействован, вывод INT может генерировать постоянные прерывания с частотой 1 Гц и скважностью 50%. Воз­можные состояния регистра alarm control в режиме event counter при­ведены на рис. 3.83.

Чтобы задействовать внешний генератор, к выводам OSC1 (вы­вод 1) и OSCO (вывод 2) нужно подключить кварцевый резонатор на частоту 32,768 кГц. Подстроенный конденсатор (триммер), подклю-

clip_image018

ченный между выводами OSC 1 и VDD, служит для подстройки часто­ты генератора. В таком режиме часы тактируются частотой 100 Гц. В режиме event counter или clock modes возможно задействование внешнего генератора частотой 50 Гц. В таком случае сигнал нужно подавать на вывод OSC1.

После сброса (power-on reset), осуществляющегося после включе­ния питания, все регистры находятся в состоянии, определяемом схе­мой сброса: генератор 32,768 кГц, 24-часовой формат, первое января 0.00.00:00, на выводе INT — частота 1 Гц. Рекомендуется флаг stop counting в регистре статуса устанавливать после загрузки соответст­вующих счетных регистров. Только после этого можно разрешать счет. Загрузка неразрешенных (выходящих за диапазон) величин в регистры может привести к общему сбою счета.

Читателю, вероятно, пока не очень понятна логика работы с ре­жимом alarm, с таймером, с генерацией прерываний. Для пояснения приводится рис. 3.84, где все связи отображены четко и в полном объеме. Протокол доступа по шине I2C для микросхемы PCF8583 точно такой же, как и для ЭСППЗУ с последовательным доступом, поэтому здесь он подробно не рассматривается.

clip_image020

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

Таблица 3.41

Параметр технических условий

Символ

Мин.

Норма

Макс.

Ед. изм.

Напряжение питания (I2C активна)

Vdd

2,5

-

6,0

В

Напряжение питания (I2C неактивна)

Vdd

1,0

-

6,0

В

Потребляемый ток (fosc = 100 кГц)

'dd

-

-

200

мкА

Рабочая температура

^amb

-40

-

+85

•с


Микросхема выпускается в корпусах DIP8 и S08. Схема включе­ния приведена на рис. 3.85.

Окончание таблицы 3.41

Параметр технических условий

Символ

Мин.

Норма

Макс.

Ед. изм.

Температура хранения

^stg

-60

-

+150

•с

Интегрированная емкость генератора

Cose

-

40

-

пФ

Стабильность генератора

Afosc

-

2 ■ 10-7

-

Входная частота в режиме event counter

f,

-

-

1

МГц

Параметры кварцевого генератора

Последовательное сопротивление

Rs

-

-

40

кОм

Параллельная входная емкость

Cl

-

10

-

пФ

Подстроечный конденсатор (триммер)

C|

5

-

25

пФ

clip_image022

DS1621

Эта микросхема [46] выпускается фирмой Dallas Semiconductors. В оригинальной документации она называется digital thermometer and thermostat. Микросхема в своем составе содержит датчик тем­пературы, позволяющий проводить измерение температуры в диапа­зоне от --55 до +125 °С со стандартным шагом 0,5 °С либо в в диапа­зоне от -67 до +257 °F с шагом 0,9 °F. Кроме того, имеется встроен­ная схема термостата, позволяющая разрабатывать системы для поддержания определенной температуры. Среднее время преобразо­вания сигнала — 1 с.

Расположение выводов микросхемы показано на рис. 3.86, а на­значение выводов — в табл. 3.42.

clip_image002[4]

Таблица 3.42. Назначение выводов микросхемы

Символ

Вывод

— . . . -------------------------------------------------------------------------------------------------------------------

Описание ;

SDA

1

Линия SDA шины I2C

SCL

2

Линия SCl-Шины I2C

Tout

3

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

GND

4

Общий вывод

А2

5

Адресный вход 2

А1

6

Адресный вход 1

АО

7

Адресный вход 0

Vdd

8

Питание«+»

Измерение температуры происходит по оригинальной методике, показанной на рис. 3.87.

clip_image004[4]

В составе микросхемы предусмотрено два генератора: один с вы­сокой температурной стабильностью, второй — с сильной зависимо­стью частоты от температуры. Имеется также счетчик, который предварительно устанавливается на отсчет, соответствующий темпе­ратуре -55 °С. Устройство «сумматор фронтов сигнала» компенсиру­ет нелинейную зависимость частоты от температуры. Значение тем­пературы представляется в 9-разрядном двоичном коде, данные пе­редаются по шине двумя байтами. Вначале передается старший байт (начиная с бита MSB), вторым следует младший байт. Старший бит младшего байта носит название LSB и соответствует градации 0,5 °С. Семь последующих битов младшего байта всегда читаются как нулевые. Вообще-то точность измерения температуры можно по-

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

Значения байтов DATA для некоторых температур приведены в табл. 3.43.

Таблица 3.43

Температура, 'С

Код

+125

01111101 00000000

+25

00011001 00000000

+0,5

00000000 10000000

+0

00000000 00000000

-0,5

11111111 10000000

-25

11100111 00000000

-55

11001001 00000000

Микросхема может работать в режиме термостатирования. Для этого нужно задать верхнюю (ТН) и нижнюю (TL) температуры, ес­тественно, в двоичном коде. Тогда напряжение на выводе Tout будет соответствовать диаграмме, приведенной на рис. 3.88.

clip_image006[4]

При нагревании и превышении уставки ТН вырабатывается высо­кий уровень на выходе Тои1 и начинается процесс охлаждения. Когда температура станет ниже уставки TL, уровень сигнала на указанном выходе станет низким и вновь начнется нагрев. Реализуется так на­зываемый процесс управления с гистерезисом температуры.

Разберемся теперь, как конфигурировать микросхему и получать данные от нее. На рис. 3.89 показан вид конфигурационного регист­ра. Он имеет следующие биты:

• DONE — бит завершения преобразования температуры в дво­ичный код. Когда DONE = 1, преобразование завершено;

• THF — флаг «высокая температура». Этот флаг устанавливает­ся в «1». когда температура становится равной или больше ус­тановки ТН. Это г бит останется в положении «1», пока не будет сброшен программно или не будет отключено питание микро­схемы;

• TLF — флаг «низкая температура». Этот флаг устанавливается в «1», когда температура становится равной или ниже установ­ки TL. Работа с флагом аналогична работе с THF;

• NVB — флаг записи данных в энергонезависимую память. Ус­тановка в «1» свидетельствует о незавершенности записи ячей­ки памяти; после окончания записи аппаратно сбрасывается. Типичный цикл записи ячейки 10 мс;

• POL — бит полярности выхода Tout. При установке в «1» актив­ный уровень высокий; при установке в «0» активный уровень низкий. Этот бит энерг онезависим;

• 1SHOT — бит управления циклом измерения. При установ­ке в «1» преобразование выполняется однократно при полу­чении соответствующей команды; при установке в «0» пре­образование выполняется непрерывно. Этот бит энергонеза­висим.

clip_image008[4]

Обычно микросхема функционирует в режиме непрерывного преобразования. Тем не менее, в режиме пониженного энергопо­требления возможно использование однократных преобразований. Также в режиме однократного преобразования сигнал на выводе Тоц1 сохранит свое значение на момент окончания последнего пре­образования вне зависимости от текущей температуры окружаю­щей среды.

ентом. Допустимо использование команды только в режиме чтения;

• EEh — «старт счетчика» — команда начала преобразования температуры. После передачи этой команды не требуется пере­давать никаких дополнительных данных. В режиме непрерыв­ного преобразования эта команда активизирует счетчик, застав­ляет его работать непрерывно;

• 22h — «стоп счетчика» — команда окончания преобразования температуры. После передачи команды не требуется дополни­тельных данных. В режиме непрерывного преобразования оста­навливает счетчик; для возобновления требуется передача пре­дыдущей команды.

С помощью команд A8h и A9h можно повысить точность измере­ния температуры, вычислив ее с помощью формулы

clip_image010[4]

где T[AAh], T[A9h], T[A8h] — соответствующие значения, считанные по командам.

Возможные комбинации управляющих сигналов приведены на рис. 3.90.

clip_image012[4]

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

Таблица 3.44

Инструкция

Описание

Команда

Содержание

данных в протоколе

Режим преобразования температуры

Чтение текущей температуры

Чтение регистра температуры

AAh

Чтение 2 байтов данных

Чтение счетчика

Чтение счетчика с высоким темпе­ратурным коэффициентом

A8h

Чтение байта данных

Чтение slope

Чтение счетчика с низким темпера­турным коэффициентом

A9h

Чтение байта данных

Старт преобразования темпе­ратуры

-

EEh

Не содержатся

Стоп преобразования темпера­туры

-

22h

Не содержатся

Режим термостата

Обращение к ТН

Чтение и запись установки темпера­туры в ТН

A1h

Запись данных

Обращение к TL

Чтение и запись установки темпера­туры в TL

A2h ACh

Запись данных

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

Чтение и запись данных в регистр конфигурации

Запись данных

Как уже было сказано ранее, датчик DS1621 измеряет температу­ру с определенной погрешностью. Минимальная погрешность (не более ±0,5 °С) лежит в диапазоне от -15 °С до +105 °С, за его преде­лами погрешность возрастает. График поведения погрешности дат­чика приведен на рис. 3.91.

В заключение приведем основные электрические характеристики DS1621.

clip_image014[4]

Таблица 3.45

Параметр технических условий

Символ

Мин.

Норма

Макс.

Ед. изм.

Напряжение питания

VDD

2,7

-

5,5

В I

Время преобразования температуры

Ттс

-

0,4

1,0

с

Частота сигнала SCL: в режиме low-speed в режиме fast-speed

'scl

0 0

-

100 400

кГц

Диапазон рабочих температур

 

-55

-

+125

Ток потребления в неактивном режиме

'stby

-

-

1

мкА


Литература:
Б. Ю. Семенов, «ШИНА I2С В РАДИОТЕХНИЧЕСКИХ КОНСТРУКЦИЯХ» ,Москва СОЛОН-Р 2002

Предлагаю ознакомиться с аналогичными статьями: