Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > AVR

реклама

 




Мероприятия:




19.6. Работа подчиненного модуля TWI

Подчиненный модуль TWI предназначен для побайтной передачи данных и поддерживает возможность генерации прерываний после передачи/приема каждого байта. Предусмотрены отдельное прерывание по данным и отдельное прерывание по адресу/условию STOP. Флаги прерывания могут использоваться для опроса состояния модуля. Предусмотрены отдельные флаги статуса для сигнализации приема бита ACK/NACK, задержки синхронизации, коллизии, ошибки шины и направления 'чтение/запись'.

Если флаг прерывания установлен, линия SCL удерживается в низком состоянии. Благодаря этому, подчиненное устройство получает время на реагирование или обработку данных, что в большинстве случаев требует взаимодействия с программой. Работу подчиненного модуля TWI демонстрирует рисунок 19.13. Ромбовидным значком с надписью SW отмечены места, где требуется взаимодействие с программой.

Работа подчиненного модуля TWI
Рисунок 19.13. Работа подчиненного модуля TWI

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

Облегчить реализацию подчиненного устройства, которое должно реагировать на любой принятый адрес, поможет режим PROMISCUOUS.

19.6.1. Прием пакета адреса

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

Флаг прерывания по адресу/условию STOP устанавливается, когда вслед за условием START был обнаружен действительный пакет адреса. Этот флаг прерывания также устанавливается при обнаружении адреса общего вызова.

Условие START, которое передано сразу за условием STOP, является недопустимым и, в таком случае, устанавливается флаг ошибки шины.

Состояние флага направления R/W отражает состояние принятого в пакете адреса бита направления передачи. Для определения типа транзакции предусмотрена возможность программного опроса этого флага.

В зависимости от состояния бита направления (R/W) и состояния шины дальнейшая работа шины после приема пакета адреса может выполняться по 4 сценариям. Все эти сценарии необходимо реализовать программно.

19.6.1.1. Сценарий 1: принят пакета адреса с равным единице битом направления

Если флаг направления R/W равен единице, это указывает на транзакцию типа "чтение ведущим устройством". Линия SCL удерживается в низком состоянии для задержки синхронизации шины. Если подчиненное устройство отправило бит ACK, его схема установит флаг прерывания по данным, сигнализируя о необходимости передачи данных. Если же подчиненное устройство отправит бит NACK, оно перейдет к ожиданию нового условия START и совпадения адреса.

19.6.1.2. Сценарий 2: принят пакет адреса с равным нулю битом направления

Если флаг направления R/W равен нулю, это указывает на транзакцию типа "запись ведущим устройством". Линия SCL удерживается в низком состоянии, задерживая синхронизацию шины. Если подчиненное устройство отправило бит ACK, оно переходит к ожиданию приема данных. После этого, возможен прием данных, а также условий REPEATED START или STOP. Если же подчиненное устройство отправит NACK, оно перейдет к ожиданию нового условия START и совпадения адреса.

19.6.1.3. Сценарий 3: коллизия

Если подчиненное устройство не может отправить высокий уровень или бит NACK, устанавливается флаг коллизии и выход данных и подтверждения отключается от блока логики подчиненного устройства. Удержание линии синхронизации отменяется. В дальнейшем возможен прием условия START или REPEATED START.

19.6.1.4. Сценарий 4: принято условие STOP

Данный сценарий идентичен сценарию 1 или 2 за одним исключением. После приема условия STOP устанавливается флаг подчиненного адреса/условия STOP, сигнализируя об обнаружении условия STOP и о том, что не было обнаружено совпадение адреса.

19.6.2. Прием пакетов данных

О необходимости приема данных подчиненное устройство узнает после поступления пакета адреса с равным нулю битом направления R/W. После подтверждения этого пакета, подчиненное устройство должно быть готово принять данные. По завершении приема пакета данных, устанавливается флаг прерываний по данным, а подчиненное устройство должно передать бит ACK или NACK. После передачи NACK подчиненное устройство переходит к ожиданию условия STOP или REPEATED START.

19.6.3. Передача пакетов данных

О необходимости передачи пакета данных подчиненное устройство узнает после приема пакета адреса с равным единице битом направления R/W. Чтобы начать отправку данных, необходимо выполнить запись в регистр данных подчиненного устройства. По завершении передачи пакета данных устанавливается флаг прерывания по данным. Если мастер отвечает битом NACK, подчиненное устройство должно остановить передачу данных и перейти к ожиданию условия STOP или REPEATED START.

19.7. Разрешение работы интерфейса внешнего драйвера

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

По умолчанию, в качестве линий SDA и SCL выступают выводы 0 (Pn0) и 1 (Pn1) порта ввода-вывода. Интерфейс внешнего драйвера - это совокупность сигналов SDA_IN, SCL_IN, SDA_OUT и SCL_OUT, в качестве которых используются выводы 0…3 порта ввода-вывода.



<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники