Логика контроля состояния шины TWI 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Логика контроля состояния шины TWI



После разрешения работы TWI в качестве ведущего устройства, логика контроля состояния шины непрерывно следит за активностью на линиях шины. Она остается в работе во всех экономичных режимах МК, в т.ч. режим POWER DOWN.

Логика контроля состояния шины состоит из схемы обнаружения условий START и STOP, схемы обнаружения коллизий, таймера для измерения интервалов времени бездействия шины и счетчика бит. Все эти узлы используются для определения состояния шины. Программа может оценить состояние шины путем опроса бит статуса шины в регистре статуса ведущего устройства. Как показано на рисунке 19.11, шина может находиться в следующих состояниях: UNKNOWN (неопределенное). IDLE (незанятое), BUSY (занятое внешним устройством) и OWNER (занятое владельцем). На рисунке также представлены соответствующие состояниям шины значения бит статуса шины.


Рисунок 9.11. Диаграмма состояний шины

После системного сброса, состояние шины является неопределенным (UNKNOWN). Из этого состояния автомат состояний может перейти в состояние IDLE с одновременной соответствующей записью в биты состояния шины. Данное состояние также вводится, если иного состояния не было введено программой и обнаружено условие STOP. Дополнительно, переход в состояние IDLE происходит по истечении выдержки времени таймера, контролирующего интервалы бездействия шины (только при условии разрешения его работы). После перехода в любое известное состояние обратный переход в состояние UNKNOWN из любого другого состояния не предусмотрен. Состояние UNKNOWN вводится только системным сбросом или отключением ведущего модуля TWI.

Нахождение шины в состоянии IDLE указывает на её готовность к новой транзакции. При обнаружении внешне сгенерированного условия START, шина переходит в занятое состояние (BUSY) вплоть до появления на шине следующего условия STOP. Условие STOP вновь переведет шину в состояние IDLE. Переход в это состояние также произойдет по истечении выдержки времени таймера контроля интервалов бездействия шины, но только при условии разрешения его работы.

Если же из состояния IDLE условие START вводит модуль TWI, то осуществляется переход в состояние OWNER. В случае нормального выполнения транзакции, т.е. без обнаружения коллизий, ведущее устройство генерирует условие STOP и шина возвращается в состояние IDLE. В случае же обнаружения коллизии и проигрыша арбитража, шина переходит в состояние BUSY вплоть до обнаружения условия STOP. Условие REPEATED START способно изменить состояние шины только при проигрыше арбитража во время генерации этого условия.

Работа ведущего модуля TWI

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

После установки флага прерывания, линия SCL удерживается в низком состоянии. Данная задержка необходима ведущему устройству для реагирования на прерывание или обработку данных, что в большинстве случаев требует участия программы. Работу ведущего модуля TWI иллюстрирует рисунок 19.12. Ромбовидный значок с надписью SW указывает на участки, где требуется взаимодействие с программой. Освобождение линии SCL произойдет только после сброса флагов прерываний.


Рисунок 19.12. Работа ведущего модуля TWI

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

Передача пакета адреса

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

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



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 219; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.151.214 (0.004 с.)