Дослідження і конфігурація послідовного периферійного інтерфейсу - SPI мікроконтролера ATmega128. Дослідження і конфігурація керованого синхронно-асинхронного послідовного приймача-передавача мікроконтролера ATmega128, страница 3

*  - висока розрізнювальна здатність генератора швидкості зв'язку;

*  - підтримка формату переданих даних з 5, 6, 7, 8 або 9 бітами даних й 1 або 2 стоп-бітами;

*  - апаратна генерація й перевірка біта паритету;

*  - визначення переповнення даних;

*  - визначення помилки в структурі посилки;

*  - фільтрація шуму з детекцією помилкового старт-біта й цифровим ФНЧ;

*  - три окремих переривання після завершення передачі, звільнення регістра переданих даних і завершення прийому;

*  - режим багатопроцесорного зв'язку;

*  - режим подвоєння швидкості зв'язку в асинхронному режимі.

УСАПП складається із трьох основних блоків: тактового генератора, передавача й приймача, зображених на рисунку 17.


Рисунок 17 - Функціональна схема УСАПП

Логіка тактового генератора складається з логіки синхронізації, пов'язаної із зовнішнім тактовим входом (використовується в підпорядкованому режимі), і генератора швидкості зв'язку. Вивід XCK (синхронізація передачі) використовується тільки в режимі синхронної передачі.

Передавач складається з одного буфера записування, послідовного зсувного регістра, генератора паритету й керуючої логіки, що підтримує різні формати послідовної посилки. Буфер записування дозволяє безперервно передавати дані без будь-яких затримок між передачею посилок.

Приймач є більше складним блоком УСАПП, тому що до його складу входять модулі виявлення даних і синхронізації. Модулі виявлення необхідні для асинхронного прийому даних. Крім модулів виявлення в приймач входить пристрій перевірки паритету, зсувний регістр, і дворівневий приймальний буфер (UDR). Приймач підтримує ті ж послідовні формати, що й передавач, і може визначити помилку в посилці (кадрі), переповнення даних і помилку паритету.

Структура  регістра  введення-виведення  представлена  в таблиці 56.

Таблиця 56 - Регістр введення-виведення УСАПП

Розряд

7

6

5

4

3

2

1

0

RXB[7:0]

TXB[7:0]

Зчитування/

записування

Зч./

Зп

Зч./

Зп

Зч./

Зп

Зч./

Зп

Зч./

Зп

Зч./

Зп

Зч./

Зп

Зч./

Зп

Вих. значення

0

0

0

0

0

0

0

0

УСАПП конфігурується за допомогою трьох регістрів керування, описаних нижче.

У таблиці 57 представлене призначення бітів регістра А керування й статусу UCSR0A.

Таблиця 57 - Призначення бітів регістра А керування й статусу UCSR0A

біта

Ім'я

Призначення

7

RXC0

Прапорець завершення прийому УСАПП

6

TXC0

Прапорець завершення передачі УСАПП

5

UDRE0

Прапорець звільнення регістра даних УСАПП

Продовження таблиці 57

біта

Ім'я

Призначення

4

FE0

Помилка посилки

3

DOR0

Прапорець переповнення даних

2

UPE0

Помилка паритету

1

U2X0

Подвоєння швидкості зв'язку УСАПП

0

MPCM0

Режим багатопроцесорного зв'язку

Розряд 7 - RXC0. Прапорець завершення прийому УСАПП. Прапорець RXC0 установлюється, якщо в приймальному буфері знаходяться незчитані дані й скидається, коли приймальний буфер вільний (тобто, не містить незчитаних даних). Якщо приймач відключається, то приймальний буфер скидається, отже, прапорець RXC0 приймає нульове значення.

Розряд 6 - TXC0.  Прапорець завершення передачі УСАПП. Установлюється в тому випадку, якщо вся посилка зі зсувного регістра передавача повністю передана й у передавальному буфері UDR0 немає нових даних для передачі.

Розряд 5 - UDRE0. Прапорець звільнення регістра даних УСАПП. Індицирує про готовність приймалього буфера UDR0 до прийому нових даних. Якщо UDRE0=1, то буфер вільний, отже, готовий до записування.

Розряд 4 - FE0. Помилка посилки. Установлюється, якщо під час прийому посилки, що перебуває на виході із приймалього буфера, була визначена помилка в структурі посилки. Під помилкою структури в цьому випадку розуміється нульове значення першого стоп-біта в цій посилці. Значення даного біта дійсне до зчитування вмісту приймалього буфера (UDR0). Прапорець FEn приймає нульове значення, якщо прийнятий стоп-біт мав правильне одиничне значення.

Розряд 3 - DOR0. Прапорець переповнення даних. Установлюється, якщо виявлено умову переповнення. Переповнення даних виникає, якщо заповнено приймальний буфер (дві посилки), нова посилка повністю прийнята в приймальний зсувний регістр, а також виявлений новий старт-біт. Значення даного біта дійсне до зчитування вмісту приймалього буфера (UDR0).

Розряд 2 - UPE0. Помилка паритету. Установлюється, якщо наступна посилка в приймальому буфері характеризується помилкою паритету (якщо під час прийому цієї посилки був дозволений контроль паритету (UPM01 = 1)). Даний біт має дійсне значення до зчитування приймалього буфера (UDR0).

Розряд 1 - U2X0. Подвоєння швидкості зв'язку УСАПП . Біт має вплив тільки в асинхронному режимі зв'язку. У синхронному режимі в даний біт необхідно записати логічний 0. Записування у даний біт логічної 1 зменшує у два рази значення коефіцієнта ділення швидкості зв'язку з 16 до 8, тим самим подвоюючи швидкість передачі даних в асинхронному режимі.

Розряд 0 - MPCM0. Дозволяє режим багатопроцесорного зв'язку. Якщо до біт MPCM0 записати логічну 1, то всі вхідні посилки, прийняті приймачем УСАПП, будуть ігноруватися, якщо вони не містять адресної інформації. Установлення біта MPCM0 не впливає на роботу передавача.

У таблиці 58 представлене призначення бітів регістра В керування й статусу UCSR0В.

Розряд 7 - RXCIE0. Дозвіл переривання після завершення прийому.  Записування до біт RXCIE0 логічної 1 дозволяє переривання по прапорцю RXC0. Переривання після завершення прийому УСАПП0 генерується, якщо RXCIE0=1, прапорець загального дозволу переривань I=1 (у регістрі SREG), а також установлений біт RXC0 у регістрі UCSR0A.

У таблиці 58 представлений уміст регістра В керування й статусу UCSR0В.

Таблиця 58 - Призначення бітів регістра В керування й статусу UCSR0В