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





Минимальное число стоповых битов задается, например, для того, чтобы приемник "знал", какой наименьший интервал времени ему нужно ожидать следующего стартового бита (как минимум, это может быть, естественно, один период частоты обмена, т. е. один столовый бит). Если по истечении этого времени стартовый бит не придет, приемник может регистрировать так называемый timeout, т. е. "перерыв", по-русски, и посчитать это за конец передачи блока данных. Если мы не применяем подобные протоколы с временным разделением блоков (а автор, по крайней мере, для связи с компьютером, их не использует никогда из-за неопределенности задания временных интервалов в Windows), нам в принципе все равно, сколько стоповых битов будет.

Из описанного алгоритма работы понятно, что погрешность несовпадения скоростей обмена должна быть такой, чтобы фронты не "разъезжались" за время передачи/приема всех десяти-двенадцати битов более чем на полпериода, т. е. в принципе фактическая разница частот тактовых импульсов может достигать 4-5%. На практике их стараются сделать как можно ближе к стандартным величинам: рекомендуемое отклонение составляет не более 0,5%. Существуют специальные "кварцы" для формирования частот, кратных стандартным скоростям передачи RS-232 (например, 1,8432 МГц, 4,608 МГц и др.), которые позволяют сформировать скорости передачи с нулевой ошибкой. Однако они не всегда удобны на практике.

Кроме основных линий на прием и передачу, в стандартах RS-232 (и прочих того же семейства) фигурируют также и другие линии, о чем подробнее мы поговорим в главе 13. Отметим, что выводы МК, которые задействованы под UART, не рекомендуется нагружать еще какими-либо функциями, если в программе предполагается работа с портом.

В AVR семейства Tiny (кроме модели 2313, которая все же, если позволительно так выразиться, "не совсем" Tiny) UART отсутствует, а в большинстве моделей семейства Mega этот порт заменен более функциональным USART ("синхронно-асинхронным"), в некоторых моделях их даже несколько. USART полностью совместим с UART (кроме наименований некоторых регистров), и отличается от UART тем, что, во-первых, может самостоятельно обрабатывать девятибитовые посылки с контролем четности (не требуя программной реализации этого контроля), во-вторых, может иметь длину слова от 5 до 9 бит (UART только 8 или 9). Самое же главное его отличие (из-за которого он и получил свое название) в том, что он поддерживает синхронный режим, при котором по специальной дополнительной линии ХСК передаются тактовые импульсы (в результате USART почти перестает отличаться от рассматриваемого далее SPI, кроме того, что последний может работать значительно быстрее). Еще одна особенность USART— возможность работы в режиме мультипроцессорного обмена. Более подробно возможности этого порта мы рассмотрим в главе 13.

UART удобен для обмена на сравнительно большие расстояния. Большинство внешних устройств, устанавливаемых на плате или в составе аппаратуры (память, датчики, внешние АЦП) имеют иные интерфейсы для обмена данными. Их мы сейчас и рассмотрим.

Интерфейс SPI
Идея передачи информации побитно с определенными интервалами времени лежит в основе всех последовательных интерфейсов, они различаются только способами синхронизации. В интерфейсе SPI (Serial Peripheral Interface, последовательный периферийный интерфейс) синхронизирующие импульсы передают по отдельной, специально выделенной линии. Это облегчает задачу синхронизации (не требуется специально задавать скорости обмена), но требует большего числа сигнальных проводов — не менее трех (см. примечание в предыдущем разделе). В подавляющем большинстве случаев необходим еще один — четвертый — провод, который присутствует всегда при подключении более чем двух микросхем к одному интерфейсу, но иногда требуется и при одиночном подключении.



     
 

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