Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Для сигнализации об окончании цикла сдвига в аппаратном SPI МК AVR предусмотрено отдельное прерывание и установка специального флага SPIF. Буферизация по передаче одинарная (т. е. нельзя записать следующий байт, пока полностью не передали предыдущий), а при чтении двойная (т. е. принятый байт можно прочесть во время обмена). При этом необходимо следить, чтобы принятая посылка была считана из регистра данных SPI, прежде чем завершится цикл сдвига новой посылки. В противном случае первый байт будет потерян.

Никаких стартовых и стоповых битов в SPI не предусматривается, и если обмен непрерывный, то выделить начало байта, чтобы синхронизировать чтение/запись, невозможно. Поэтому обычно на время чтения генератор приостанавливают и заодно подают сигнал высокого уровня на /CS (если этот вывод используется вообще), чтобы остановить ведомый и привести его в исходное состояние. По паузе в передаче (во время которой уровень на линии SCK может принимать выбранное в зависимости от режима значение) в принципе можно устанавливать синхронизацию начала очередного байта или кадра, если это необходимо.

Другой способ выделить начало информационной последовательности приводится в главе 11 применительно к обмену с картами памяти. Значения скорости обмена по SPI-интерфейсу не стандартизованы и могут достигать у некоторых микросхем десятков Мбит/с (так, в памяти серии AT45DBJCJCJCD тактовая частота может быть до 66 МГц). Аппаратный SPI МК AVR предполагает максимальную частоту тактирования равной 1/4 от частоты тактового сигнала МК. Отметим, что SPI-интерфейс последовательного программирования, имеющийся во всех моделях МК AVR, — не то лее самое, что пользовательский SPI для обмена информацией (обратите внимание, что на схеме рис. 2.1 они размещены в разных местах), и в общем случае у них могут даже не совпадать выводы. Кроме того, не все модели МК AVR имеют полнофункциональный аппаратный SPI, даже если в них имеется возможность последовательного программирования по этому интерфейсу. В младших моделях семейства Classic и в представителях семейства Tiny с объемом памяти 1 кбайт SPI вообще отсутствует, а в других моделях (вроде ATtiny2313) может быть реализован более простой вариант под названием USI (см. далее). Существуют, разумеется, и программные методы имитации SPI (в частности, они описаны в Application Notes AVR320). Более подробно об обращении с SPI см. главу 11.

Интерфейс TWI (12С)
Аббревиатурой TWI (Two-Wire Interface, двухпроводной интерфейс) компания Atmel назвала свою реализацию последовательной шины данных 12С, разработанную фирмой Philips еще в начале 1980-х, в надежде, видимо, избежать патентных разборок. Не знаю, насколько это получилось, но с 1 октября 2006 г. лицензионные отчисления за использование протокола PC все равно отменены (остались только отчисления за выделение эксклюзивного адреса на шине PC, но непосредственно к МК это не относится, там адрес выделяется программистом), так что можно называть вещи своими именами.
Интерфейс 12С, как и UART, требует двухпроводного соединения, но с обязательным объединением "земель", т. к. сигналы в нем абсолютные, а не дифференциальные, отсчитываются относительно "земли" и соответствуют уровням КМОП-логики. Как и в SPI, в интерфейсе 12С устройства могут работать в режиме "ведущий" (Master) или "ведомый" (Slave). В отличие от большинства других интерфейсов, ведомые устройства с интерфейсом 12С (память, часы реального времени, различные датчики) должны иметь индивидуальный адрес, присваиваемый производителем. Для различения одинаковых устройств, если их более двух на одной линии, в некоторых типах устройств имеются дополнительные адресные линии, выводы для установки индивидуального адреса или входы типа "выбор кристалла".

12С, как и SPI, как правило, служит для связи между собой микросхем на одной плате или в пределах одного устройства. Однако это значительно более медленный интерфейс (типовое значение скорости обмена— 100 кбит/с), и потому применяется там, где не требуется скоростной передачи данных. В принципе с помощью этого интерфейса можно соединять и удаленные устройства, если не нужна высокая помехозащищенность. Интересно, что существуют устройства (например, датчики температуры фирмы Dallas Semiconductor, в настоящее время являющейся подразделением фирмы Maxim), которые способны работать без питания, получая его от сигнальных линий интерфейса 12С (подобно тому, как это делается в "самодельном" преобразователе уровня RS-232/UART, см. рис. 13.2). Более подробно о работе с интерфейсом 12С рассказывается в главе 12.

Универсальный последовательный интерфейс USI
Блок USI (Universal Serial Interface), которым снабжены некоторые модели Tiny, представляет собой по сути "голый" сдвиговый регистр (USIDR) С регистром управления (USICR) И статуса (USISR) без каких-либо буферов данных. С USI связано аппаратное прерывание. В состав USI входит 4-битовый счетчик тактовых импульсов, управляющийся от регистра USISR. USI можно использовать и в качестве трехпроводного SPI, и в качестве двухпроводного TWI, и для имитации UART, и еще для ряда применений (например, тактовый счетчик совместно с TimerO может образовывать 12-разрядный таймер; с помощью USI можно организовать дополнительное внешнее прерывание и т. п.). Управляется сдвиг в регистре USIDR либо "вручную" (пользовательской программой), либо от прерывания переполнения TimerO, либо от внешнего источника (что допускает функционирование устройства с USI в качестве ведомого). С USI связаны три внешних вывода — вход и выход данных (DI, DO) и ввод-вывод тактовых импульсов (USCK).

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



     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru