Данные биты задают частоту синхронизации на выводе SCK в режиме мастера. SPR1 и SPR0 не оказывают никакого влияния в режиме подчиненного. Связь между частой SCK и частотой генератора синхронизации fosc показана ниже в таблице:

Таблица 72. Связь между частотами SCK и генератора

SPI2X

SPR1

SPR0

Частота SCK

0

0

0

fosc /4

0

0

1

fosc /16

0

1

0

fosc /64

0

1

1

fosc /128

1

0

0

fosc /2

1

0

1

fosc /8

1

1

0

fosc /32

1

1

1

fosc /64

Регистр статуса SPI - SPSR

Разряд

7

6

5

4

3

2

1

0

SPIF

WCOL

-

-

-

-

-

SPI2X

SPSR

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

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

*  Разряд 7 - SPIF: Флаг прерывания по SPI

Флаг SPIF устанавливается по завершении последовательной передачи. Прерывание генерируется в том случае, если установлен бит SPIE в регистре SPCR и разрешены общие прерывания. Если SS настроен как вход и к нему приложен низкий уровень, то, если SPI находился в режиме мастера, также установится флаг SPIF. SPIF сбрасывается аппаратно при переходе на соответствующий вектор прерывания. Альтернативно, бит SPIF сбрасывается при первом чтении регистра статуса SPI с установленным флагом SPIF, а также во время доступа к регистру данных SPI (SPDR).

*  Разряд 6 - WCOL: Флаг повторной записи

Бит WCOL устанавливается, если выполнена запись в регистр данных SPI (SPDR) во время передачи данных. Бит WCOL (а также бит SPIF) сбрасывается при первом чтении регистра статуса SPI с установленным WCOL, а также во время доступа к регистру данных SPI.

НЕ нашли? Не то? Что вы ищете?

*  Разряды 5..1 - Res: зарезервированные биты

В ATmega128 данные биты не используются и всегда считываются как 0.

*  Разряд 0 - SPI2X: Бит удвоения скорости SPI

Если в данный бит записать лог. 1 то скорость работы SPI (частота SCK) удвоится, если SPI находится в режиме мастера (см. табл. 72). Это означает, что минимальный период SCK будет равен двум периодам синхронизации ЦПУ. Если SPI работает как подчиненный, то работа SPI гарантирована только на частоте fosc /4 или менее.

Интерфейс SPI в ATmega128 также используется для чтения или программирования памяти программ и ЭСППЗУ. См. также "Последовательное программирование".

Регистр данных SPI - SPDR

Разряд

7

6

5

4

3

2

1

0

Ст. разр.

Мл. разр.

SPDR

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

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

x

x

x

x

x

x

x

x

Неопред.

Регистр данных SPI имеет доступ на чтение и запись и предназначен для обмена данными между файлом регистров (r0…r31) и сдвиговым регистром SPI. Запись в данный регистр инициирует передачу данных. При чтении данного регистра фактически считывается содержимое приемного буфера сдвигового регистра.

Режимы передачи данных

Комбинация бит CPHA и CPOL задает четыре возможных режима последовательной передачи данных. Форматы передачи данных для SPI представлены в таблице 73, а их временные диаграммы показаны на рис. 77 и 78. Биты данных выводятся сдвигом и фиксируются на входе противоположными фронтами синхросигнала SCK, тем самым гарантируя достаточное время на установление сигналов данных. Таким образом, можно обобщить информацию из табл. 70 и 71 и представить ее в следующем виде:

Таблица 73. Функциональные возможности CPOL и CPHA

Передний фронт

Задний фронт

Режим SPI

CPOL = 0, CPHA = 0

Выборка нарастающим фронтом

Установка данных падающим фронтом

0

CPOL = 0, CPHA = 1

Установка данных нарастающим фронтом

Выборка падающим фронтом

1

CPOL = 1, CPHA = 0

Выборка падающим фронтом

Установка данных нарастающим фронтом

2

CPOL = 1, CPHA = 1

Установка данных падающим фронтом

Выборка нарастающим фронтом

3

Формат передачи данных SPI с CPHA = 0
Рисунок 77. Формат передачи данных SPI с CPHA = 0

Формат передачи данных SPI с CPHA = 1
Рисунок 78. Формат передачи данных SPI с CPHA = 1

УСАПП

Универсальный синхронный и асинхронный последовательный приемопередатчик (УСАПП) предназначен для организации гибкой последовательной связи.

Отличительные особенности:

·  Полнодуплексная работа (раздельные регистры последовательного приема и передачи)

·  Асинхронная или синхронная работа

·  Ведущее или подчиненное тактирование связи в синхронном режиме работы

·  Высокая разрешающая способность генератора скорости связи

·  Поддержка формата передаваемых данных с 5, 6, 7, 8 или 9 битами данных и 1 или 2 стоп-битами

·  Аппаратная генерация и проверка бита паритета (четность/нечетность)

·  Определение переполнения данных

·  Определение ошибки в структуре посылки

·  Фильтрация шума с детекцией ложного старт-бита и цифровым ФНЧ

·  Три раздельных прерывания по завершении передачи, освобождении регистра передаваемых данных и завершении приема

·  Режим многопроцессорной связи

·  Режим удвоения скорости связи в асинхронном режиме

Два УСАПП

ATmega128 содержит два УСАПП: УСАПП0 и УСАПП1. Описание функционирования обоих УСАПП приведено ниже. УСАПП0 и УСАПП1 имеют раздельные регистры ввода-вывода, что показано в "Сводной таблице регистров". Обратите внимание, что в режиме совместимости с ATmega103 УСАПП1 не доступен, а также нет регистров UBRR0H и UCRS0C. Это означает, что в режиме совместимости с ATmega103 поддерживается только асинхронная работа УСАПП0.

Краткий обзор

На рисунке 79 представлена упрощенная функциональная схема УСАПП. На рисунке жирным шрифтом выделены регистры и выводы УСАПП.

Функциональная схема УСАПП
Рисунок 79. Функциональная схема УСАПП

Прим. : Расположение выводов УСАПП см. на рисунке 1, табл. 76 и 39.

На рисунке 79 пунктирной линией выделены три основных блока УСАПП: тактовый генератор, передатчик и приемник. Регистры управления используются всеми блоками. Логика тактового генератора состоит из логики синхронизации, связанной с внешним тактовым входом (используется в подчиненном режиме) и генератора скорости связи. Вывод XCK (синхронизация передачи) используется только в режиме синхронной передачи. Передатчик состоит из одного буфера записи, последовательного сдвигового регистра, генератора паритета и управляющей логики, которая поддерживает различные форматы последовательной посылки. Буфер записи позволяет непрерывно передавать данные без каких-либо задержек между передачей посылок. Приемник является более сложным блоком УСАПП, т. к. в его состав входят модули обнаружения данных и синхронизации. Модули обнаружения необходимы для асинхронного приема данных. Помимо модулей обнаружения в приемник входит устройство проверки паритета, сдвиговый регистр, и двухуровневый приемный буфер (UDR). Приемник поддерживает те же последовательные форматы, что и передатчик, и может определить ошибку в посылке (кадре), переполнение данных и ошибку паритета.

Совместимость УСАПП с УАПП других AVR-микроконтроллеров

УСАПП полностью совместим с УАПП AVR-микроконтроллеров по следующим позициям:

*  Расположение бит внутри всех регистров УСАПП

*  Генерация скорости связи

*  Работа передатчика

*  Функционирование буфера передатчика

*  Работа приемника

Однако в схеме буферизации приемника реализовано два улучшения, которые в некоторых случаях может повлиять на совместимость:

*  Добавлен второй буферный регистр. Два буферных регистра работают как циклический буфер FIFO. Поэтому, UDR необходимо опрашивать только один раз при каждом получении данных! Более важным является тот факт, что флаги ошибок (FE и DOR), а также 9-ый бит данных (RXB8) также буферизованы вместе с данными в приемном буфере. Поэтому, состояние статусных бит необходимо всегда считывать перед чтением регистра UDR. В противном случае состояние флагов ошибок будет потеряно, т. к. будет изменено состояние буфера.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66