Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
377
Добавлен:
21.05.2015
Размер:
7.55 Mб
Скачать
      1. Ctrlc - регистр управления с ведущего модуля twi

Бит

7

6

5

4

3

2

1

0

 

+0x03

-

-

-

-

-

ACKACT

CMD[1:0]

CTRLC

Чтение/запись

Чт.

Чт.

Чт.

Чт.

Чт.

Чт/Зап

Чт/Зап

Чт/Зап

Нач значение

0

0

0

0

0

0

0

0

  • Биты 7:3 - Res: резервные биты

Данные биты не используются и зарезервированы для использования в будущем. Для совместимости с более новыми МК, выполняя запись в этот регистр, всегда записывайте нули в резервные биты.

  • Бит 2 - ACKACT: выбор подтверждения

С помощью бита ACKACT можно задать значение бита подтверждения, который передается в режиме чтения ведущим устройством. Передача этого бита выполняется при записи команды в биты CMD. Если бит SMEN в регистре управления В равен единице, то заданный бит подтверждения передается при чтении из регистра DATA.

Описание настроек бита ACKACT представлено в таблице 19.3.

Таблица 19.3. Описание бита ACKACT

ACKACT

Действие

0

Отправляется ACK

1

Отправляется NACK

  • Биты 1:0 - CMD[1:0]: команда

Запись в биты CMD инициирует выполнение ведущим устройством операции в соответствии с таблицей 19.4. Биты CMD являются стробами и всегда считываются с нулевым значением. Передача бита подтверждения со значением заданным битом ACKACT действительна только для режима чтения ведущим устройством (R). В режиме записи ведущим устройством (W), выполнение команды приводит только к генерации условия REPEATED START или STOP. Бит ACKACT и биты CMD необходимо записывать одновременно. В этом случае, перед исполнением команды будет выполнено обновление типа подтверждения.

Таблица 19.4. Описание бит CMD

CMD[1:0]

MODE

Команда

00

X

(резерв)

00

X

Выполнить заданное битом ACKACT подтверждение после условия REPEATED START

10

/W

Нет операции

R

Выполнить заданное битом ACKACT подтверждение после приема байта

11

X

Выполнить заданное битом ACKACT подтверждение после ввода условия STOP

Запись команды в биты CMD приводит к сбросу флагов прерываний ведущего устройства и флага CLKHOLD.

      1. Status - регистр статуса ведущего устройства

Бит

7

6

5

4

3

2

1

0

 

+0x04

RIF

WIF

CLKHOLD

RXACK

ARBLOST

BUSERR

BUSSTATE[1:0]

STATUS

Чтение/запись

Чт/Зап

Чт/Зап

Чт/Зап

Чт/Зап

Чт/Зап

Чт/Зап

Чт/Зап

Чт/Зап

Нач значение

0

0

0

0

0

0

0

0

  • Бит 7 - RIF: флаг прерывания по чтению

Флаг прерывания по чтению (RIF) становится равным единице в случае успешного приема в режиме чтение ведущим устройством, т.е. когда во время передачи не был проигран арбитраж и не возникло ошибок. Запись единицы в данный бит приводит к сбросу флага RIF. Когда данный флаг равен единице, ведущее устройство удерживает линию SCL на низком уровне, задерживая синхронизацию шины TWI. После сброса флагов прерывания, линия SCL освобождается.

Данный флаг также автоматически сбрасывается в следующих случаях:

  • Запись в регистр ADDR.

  • Запись в регистр DATA.

  • Чтение регистра DATA.

  • Запись действительной команды в биты CMD (регистр CTRLC).

  • Бит 6 - WIF: флаг прерывания по записи

Флаг прерывания по записи (WIF) становится равным единице после передачи байта в режиме записи ведущим устройством. Флаг устанавливается, независимо от ошибок шины и результата арбитража. Установка флага WIF происходит, даже если проигрывается арбитраж при отправке бита NACK в режиме чтения ведущим устройством и если вводится условие START при неопределенном состоянии шины (UNKNOWN). Запись единицы в данный бит приводит к сбросу флага WIF. Когда данный флаг равен единице, линия SCL удерживается на низком уровне, что приводит к задержке синхронизации шины TWI.

Освобождение линии SCL происходит после сброса всех флагов прерываний.

Автоматический сброс флага происходит при тех же условиях, что и у флага RIF.

  • Бит 5 - CLKHOLD: флаг задержки синхронизации

Флаг задержки синхронизации ведущим устройством (CLKHOLD) становится равным единице, если ведущее устройство удерживает линию SCL в низком состоянии. Он является флагом статуса и доступен только для чтения. Флаг CLKHOLD равен единице, когда установлен флаг RIF и/или WIF. Сброс флагов прерываний приводит к освобождению линии SCL, а, следовательно, и к сбросу флага CLKHOLD.

Автоматический сброс флага происходит при тех же условиях, что и у флага RIF.

  • Бит 4 - RXACK: флаг принятого подтверждения

Флаг принятого подтверждения (RXACK) содержит значение последнего принятого от подчиненного устройства бита подтверждения. Равенство данного флага нулю означает, что последним принятым подтверждением было ACK. Если же флаг равен единице, то в последний раз был принят бит подтверждения со значением NACK.

  • Бит 3 - ARBLOST: флаг проигрыша арбитража

Флаг проигрыша арбитража (ARBLOST) становится равным единице, когда проигрывается арбитраж при передаче старшего бита данных, бита NACK или во время ввода на шине условия START или REPEATED START. Запись единицы в данный бит приводит к сбросу флага ARBLOST.

Автоматический сброс флага ARBLOST происходит во время записи в регистр ADDR.

  • Бит 2 - BUSERR: флаг ошибки шины

Флаг ошибки шины (BUSERR) становится равным единице при возникновении на шине недопустимого условия. К таким условиям относятся возникшее на шине условие REPEATED START или STOP, а также передача по шине между условиями START некратного девяти числа бит. Запись единицы в данный бит приводит к сбросу флага BUSERR.

Автоматический сброс флага BUSERR происходит при записи в регистр ADDR.

  • Биты 1:0 - BUSSTATE[1:0]: состояние шины

Биты BUSSTATE сигнализируют о текущем состоянии шины TWI в соответствии с таблицей 19.5. Состояние шины изменяется в зависимости от выполняющихся на ней действий. См. раздел 19.4 "Логика контроля состояния шины TWI".

Таблица 19.5. Состояние шины ведущего модуля TWI

BUSSTATE[1:0]

Групповая конфигурация

Описание

00

UNKNOWN

неопределенное состояние шины

01

IDLE

шина свободна

10

OWNER

шина занята её владельцем

11

BUSY

шина занята внешним устройством

Запись значения 01 в биты BUSSTATE переводит автомат состояний шины в состояние IDLE. Ввод иных состояний через логику контроля состояния шины не предусмотрено. Когда ведущий модуль TWI отключен, а также когда МК находится в состоянии сброса, логика контроля состояния шины отключается, а шина находится в состоянии UNKNOWN.

Соседние файлы в папке Архитектура ЭВМ