Раздел 13: Мастер шины 1-Wire
Мастер шины 1-Wire может использоваться микроконтроллером семейства MAXQ для поддержания без использования ресурсов вычислительного ядра связи с периферийными приборами, имеющими интерфейс 1-Wire. Мастер шины обеспечивает законченный контроль шины 1-Wire и осуществляет прием и передачу данных. Вся синхронизация и последовательность управляющих действий шиной 1-Wire формируются мастером шины. Связь между вычислительным ядром и мастером шины осуществляется путем записи/чтения регистров адреса мастера 1-Wire (OWA) и данных мастера 1-Wire (OWD). Когда активность шины генерирует условие, требующее обслуживания его вычислительным ядром, то мастер шины устанавливает бит состояния, который вызывает прерывание, если оно разрешено. Мастер шины 1-Wire работает только когда частота системных синхроимпульсов лежит в пределах от 4 МГц до 25 Мгц. Мастер шины поддерживает режимы Bit Banging и Search ROM Accelerator. Детальное описание режимов шины 1-Wire описаны в Книге iButton Стандартов (Book of iButton Standards), которая доступна на сайте компании Maxim/Dallas Semiconductor по адресу www.maxim-ic.com/iButtonbook. На рисунке 45 показана функциональная схема мастера шины 1-Wire.
Рисунок 45. Функциональная схема мастера шины 1-Wire
Периферийные регистры мастера шины 1-Wire
Микроконтроллер семейства MAXQ связывается с мастером шины 1-Wire с помощью двух периферийных регистров: адреса мастера 1-Wire (OWA) и данных мастера 1-Wire (OWD). Эти два регистра обеспечивают доступ чтения/записи к шести встроенным регистрам мастера шины 1-Wire. Внутренние регистры позволяют вычислительному ядру настраивать и контролировать передачу/прием данных при помощи мастера шины 1-Wire. Три младших значащих бита (A2:A0) периферийного регистра OWA определяют адрес внутреннего регистра, к которому будет осуществлен доступ. OWD SFR используется для непосредственного чтения/записи данных из/в выбранного внутреннего регистра. Для правильного выполнения операции перед обращением к регистру данных необходимо установить адрес того внутреннего регистра, к которому будет осуществлено обращение. Исключение составляет флаг прерывания этого модуля, который доступен только для чтения и находится в регистре прерываний.
7 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Регистр адресации 1-Wire (1-Wire Address - OWA) |
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
Сброс при включении питания и системный сброс |
r |
r |
r |
r |
r |
rw |
rw |
rw |
Доступен для чтения (r), записи (w) или специальный (s) доступ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(A2:A0) Адресные биты внутренних регистров мастера шины 1-Wire (1-Wire Internal Register Address Bits) Эти биты используются для выбора одного из внутренних регистров мастера 1-Wire, к которому будет осуществлен доступ через регистр OWD. Перед осуществлением доступа к одному из внутренних регистров 1-Wire необходимо определить его адрес. Адреса, для которых A2:A0 = 11xb зарезервированы и не поддерживаются мастером шины. Считывание данных из этих регистров приведет к получению неверных данных в регистре OWD, а запись не приведет к изменению содержимого какого-либо внутреннего регистра. |
|
|
|
|
|
A2 |
A1 |
A0 |
Внутренний регистр (доступ для чтения/записи) |
|
|
|
|
|
0 |
0 |
0 |
Команда (запись/чтение) |
|
|
|
|
|
0 |
0 |
1 |
Буфер передатчика/приемника (чтение/запись) |
|
|
|
|
|
0 |
1 |
0 |
Флаг прерывания (только чтение) |
|
|
|
|
|
0 |
1 |
1 |
Разрешение прерывания (чтение/запись) |
|
|
|
|
|
1 |
0 |
0 |
Делитель частоты (чтение/запись) |
|
|
|
|
|
1 |
0 |
1 |
Контроль (чтение/запись) |
|
|
|
|
|
1 |
1 |
x |
Зарезервировано |
7 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Регистр данных мастера шины 1-Wire (1-Wire Data (OWD) Register) |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Сброс при включении питания и системный сброс |
rw |
rw |
rw |
rw |
rw |
rw |
rw |
rw |
Доступен для чтения (r), записи (w) или специальный (s) доступ |
Этот регистр содержит данные регистра, выбранного в соответствии с состоянием битов A2:A0 регистра OWA. Запись в регистр OWD приведет к записи этих данных в соответствующий выбранный битами A2:A0 регистра OWA регистр (за исключение записи в регистр флага прерывания, который доступен только для чтения). |
Контроль синхронизации мастера шины 1-Wire
Синхронизация шины 1-Wire осуществляется 1.0 МГц синхроимпульсами. Формирование этой частоты мастер шины 1-Wire осуществляет путем деления системных синхроимпульсов микроконтроллера. Внутренний регистр делителя синхроимпульсов содержит биты, задающие коэффициент деления. В соответствии с состоянием битов PRE1:PRE0 (00b, 01b, 10b, и 11b) предварительного делителя осуществляется деление на 1, 3, 5 или 7, соответственно. Биты делителя (DIV2:DIV0) задают коэффициент деления 1, 2, 4, 8, 16, 32, 64 или 128 синхроимпульсов на выходе предварительного делителя. Бит CLK_EN (седьмой бит регистра делителя синхроимпульсов (Clock Divisor)), активизирует или отключает схему формирования синхроимпульсов. Установка этого бита в 1 разрешает формирование синхроимпульсов, о сброс его в 0 - отключает схему формирования синхроимпульсов. Когда этот бит сброшен в 0, то по существу мастер шины 1-Wire переходит в дежурный режим, в котором происходит отключение схемы делителя синхроимпульсов. Обратите внимание, что без синхроимпульсов функциональные возможности мастера шины в основном отключены. Ниже описан регистр делителя синхроимпульсов мастера шины 1-Wire.
7 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Регистр делителя частоты мастера шины 1-Wire (1-Wire Clock Divisor Register) (OWA = 100b) |
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Сброс при включении питания и системный сброс |
rw |
r |
r |
rw |
rw |
rw |
rw |
rw |
Доступен для чтения (r), записи (w) или специальный (s) доступ |
|
|
|
(PRE1:0) Биты предварительного делителя синхроимпульсов (Clock Prescaler Bits 1:0). Эти биты предварительного делителя определяют коэффициент деления системных синхроимпульсов. Частота на выходе предварительного делителя определяется по формуле:Частота на выходе предварительного делителя = Частота системных синхроимпульсов / (2 x PRE1:0 + 1) |
(DIV2:0) Биты делителя (Divider Bits 2:0). Эти биты определяют коэффициент деления синхроимпульсов, полученных на выходе предварительного делителя:Базовая частота = Частота сигнала на выходе предварительного делителя / (2DIV2:0) |
(CLK_EN) Активизация задающего генератора (Clock Enable). Бит CLK_EN регистра делителя частоты используется для управления работой задающего генератора мастера шины. Установка бита CLK_EN в 1 активизирует задающий генератор, частота которого зависит от значения битов PRE1:0 и DIV2:0. |
Перед осуществлением обмена данными необходимо настроить регистр делителя синхроимпульсов. Параметры настройки делителя синхроимпульсов мастера шины позволяют сформировать нужную синхропоследовательность при частоте системных синхроимпульсов от 4 МГц до 25 МГц. В таблице 18 приведены параметры настройки для наиболее часто используемых частот. Параметры настройки, не приведенные в таблице, зарезервированы и при использовании могут привести к неправильной работе. Обратите внимание, что чем ближе частота системных синхроимпульсов к нижней допустимой частоте, тем более точно формируется частота 1 МГц.
Таблица 18. Таблица настроек регистра делителя частоты и соответствующих им частот генератора синхросигнала
Частота системных синхроимпульсов |
Коэффициент деления |
DIV2 |
DIV1 |
DIV0 |
PRE1 |
PRE0 |
min |
max |
4.0 |
< 5.0 |
4 |
0 |
1 |
0 |
0 |
0 |
5.0 |
< 6.0 |
5 |
0 |
0 |
0 |
1 |
0 |
6.0 |
< 7.0 |
6 |
0 |
0 |
1 |
0 |
1 |
7.0 |
< 8.0 |
7 |
0 |
0 |
1 |
1 |
1 |
8.0 |
< 10.0 |
8 |
0 |
1 |
0 |
0 |
0 |
10.0 |
< 12.0 |
10 |
0 |
0 |
0 |
1 |
0 |
12.0 |
< 14.0 |
12 |
0 |
1 |
1 |
0 |
1 |
14.0 |
< 16.0 |
14 |
0 |
0 |
1 |
1 |
1 |
16.0 |
< 20.0 |
16 |
1 |
0 |
0 |
0 |
0 |
20.0 |
< 24.0 |
20 |
0 |
1 |
0 |
1 |
0 |
24.0 |
<= 25.0 |
24 |
0 |
1 |
1 |
0 |
1 |
Управление мастером шины 1-Wire
Мастер шины 1-Wire может выполнять некоторые специфические функции для поддержки работы линии в режиме OW. Эти специфические функции могут быть установлены через регистр управления, описанный ниже. При сбросе в регистре устанавливается значение 00-h, что приводит к блокировке всех специфических функций.
7 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Регистр управления 1-Wire (1-Wire Control Register (OWA = 101b)) |
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Сброс при включении питания и системный сброс |
rw |
r |
rw |
r |
r |
rw |
rw |
rw |
Доступен для чтения (r), записи (w) или специальный (s) доступ |
|
(LLM) Режим длинной линии (Long Line Mode). Этот бит используется для активизации режима синхронизации по длиной линии. Установка этого бита в 1 устанавливает длительности свободного состояния и выборки данных 8 мкс и 22 мкс, соответственно. Время восстановления также будет увеличено до 14 мкс. Это обеспечивает снижение требований к среде распространения для длинных линий передачи данных. Сброс этого бита в 0 устанавливает длительности свободного состояния линии, выборки данных и восстановления соответственно 5, 15 и 10 мкс, соответственно. |
(РРМ) Маскирование импульса присутствия (Presence Pulse Masking). Этот бит используется для активизации функции маскирования импульса присутствия. Установка этого бита в 1 приведет к тому, что мастер будет инициализировать импульс присутствия при 1-Wire сбросе. Это дает возможность ведущему предотвратить большее количество вызовов ведущими при инициализации низкого уровня на линии OW. Если бит РРМ установлен, то бит результата PDR в регистре флагов прерывания всегда устанавливается, даже если ни одного ведомого прибора не подключено к линии. Сброс этого бита в 0 блокирует функцию маскирования импульса присутствия. |
(EN_FOW) Активизация форсирования OW (Enable Force OW). Для активизации команды форсирования линии OW бит EN_FOW должен быть установлен в 1. Сброс этого бита в 0 отключает команду форсирования линии OW в регистре команд. |
(BIT_CTL) Активизация режима обмена битами (Bit-Banging Mode Enable). Установка этого бита в 1 приводит к переводу мастера шины в режим обмена битами, в котором только младший значащий бит регистра передатчика/приемника передается/принимается, после чего устанавливается флаг прерывания, который означает конец передачи. Сброс этого бита в 0 переводит мастер шины в режим обмена байтами. Режим ускоренного поиска ПЗУ (SRA = 1) отменяет режим обмена битами. |
(EOWMI) Активизация прерываний мастера шины 1-Wire (Enable 1-Wire Master Interrupts). Установка этого бита в 1 разрешает запрос на прерывание при установке одного из флагов прерывания мастера шины. Сброс в 0 этого бита запрещает формирование запроса на прерывание от мастера шины 1-Wire. |
Команды мастера шины 1-Wire
Мастер шины 1-Wire может формировать на шине 1-Wire в дополнение к данным специфические команды. Команды формируются путем установки соответствующих бит (A2:A0 = 000b) регистра команд, который описан ниже. Эти рабочие режимы описаны в книге стандартов iButton (Book of iButton Standards).
7 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
Регистр команд 1-Wire (1-Wire Command Register (OWA = 000b) |
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
s |
0 |
0 |
0 |
Сброс при включении питания и системный сброс |
r |
r |
r |
r |
r |
rw |
rw |
rw |
Доступен для чтения (r), записи (w) или специальный (s) доступ |
|
(1WR) 1-Wire сброс (1-Wire Reset). Установка этого бита в 1 приводит к сбросу шины 1-Wire, который должен предшествовать любой команде, передаваемой по шине. Установка этого бита также автоматически сбрасывает бит SRA. Бит 1WR автоматически сбрасывается в 0 по окончании 1-Wire сброса. После сброса мастер шины устанавливает флаг прерывания поиска присутствия (PD). Результат 1-Wire сброса помещается в бит PDR регистра прерываний. Если импульс поиска присутствия был получен, то бит PDR сбрасывается, а в противном случае - устанавливается. Когда не требуется сброс, этот бит автоматически сбрасывается в 0. |
(SRA) Ускоренный поиск ПЗУ (Search ROM Accelerator). Установка этого бита в 1 переводит мастера шины в режим ускоренного поиска ПЗУ. Следует заметить, что перед инициализацией режима SRA приемный буфер должен быть очищен. Этот режим используется для получения адресов всех подключенных к шине 1-Wire приборов или адреса одного прибора и одновременной адресации прибора. Сброс этого бита в 0 приводит к отключению функции ускоренного поиска ПЗУ. |
(FOW) Форсирование 1-Wire (Force 1-Wire). Установка этого бита в 1 переводит линию OW в низкое значение если бит EN_FOW во внутреннем контрольном регистре 1-Wire также установлен в 1. Бит FOW не оказывает никакого влияния на линию OW если бит EN_FOW сброшен в 0. |
(OW_IN) Вход 1-Wire (1-Wire Input). Этот бит всегда отображает текущее состояние линии OWIN. |