Модуль передає і приймає дані, використовуючи стандартний без повернення до нуля формат (NRZ) Він реалізує два рівня: VOH високе стан, що представляє «1» біта даних, а VOL низький стан, яке представляє «0» біта даних NRZ означає той факт, що послідовно передаються біти даних того ж значення залишаються на тому ж рівні без повернення до нейтрального рівня між кожним переданим бітом Порт передачі NRZ знаходиться у високому стані при спокої Кожен символ передачі складається з одного стартового біта з подальшими вісьмома або девятьма бітами даних і завжди завершується одним або більш стоповим бітом Стартовий біт завжди низького рівня, а стоповий біт (або біти) завжди високого рівня Найбільш широко поширене використання 8і бітів даних Кожен переданий біт займає 1 / (Baud Rate) Вбудований спеціалізований 8/16і бітовий генератор швидкості обміну (Baud Rate) використовується для отримання стандартних частот швидкості обміну від системного генератора Нижче в таблиці наведені приклади конфігурації

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

Рис 521 Приклади таблиць конфігурації

У своїй розповіді я використовую асинхронний обмін даними, але раджу вам прочитати все, що є в описі мікроконтролера про модуль USART

Включення передачі

Передавачу EUSART дозволяється робота для асинхронних операцій конфигурированием наступних трьох бітів:

·              TXEN = 1

·              SYNC = 0

·              SPEN = 1

Всі інші керуючі біти EUSART передбачається залишити в стані, заданому за замовчуванням

Установка біта TXEN регістра TXSTA дозволяє роботу схеми передавача EUSART Очищення біта SYNC регістра TXSTA готує EUSART до асинхронним операціями Установка біта SPEN регістра RCSTA дозволяє роботу EUSART і автоматично конфігурує висновок входу-виходу TX / CK на вихід Якщо висновок TX / CK повязаний з аналогової периферією, функції аналогового введення-виведення повинні бути заборонені очищенням відповідного біта ANSEL

Передача даних

Передача ініціюється записом символу в регістр TXREG Якщо це перший символ або попередній символ був повністю витягнутий з TSR, дані з TXREG негайно передаються в регістр TSR Якщо TSR все ще містить всі або частину попередніх символів, новий символ даних залишається в TXREG поки не буде переданий стоповий біт попереднього символу Дзвінок в TXREG символ потім буде переданий в TSR в один з TCY негайно слідом за передачею стопового бита Передача послідовності з стартового біта, бітів даних і стопового біта (ів) починається негайно за передачею даних в TSR з TXREG

Асинхронна передача

1                           Ініціалізується реєстрову пару SPBRGH, SPBRG і біти BRGH і BRG16, щоб задати потрібну швидкість обміну (baud rate)

2                           Дозвольте роботу порту асинхронного послідовного обміну, очистивши біт SYNC і встановивши біт SPEN

3                           Якщо потрібна 9і-бітова передача, встановіть керуючий біт TX9 Установка девятого біта даних означатиме, що 8 останніх значущих бітів даних

– Це адреса, коли приймач налаштований на виявлення адреси

4                           Дозвольте передачу, встановивши керуючий біт TXEN Це викличе установку біта переривання TXIF

5                           Якщо переривання потрібно, встановіть біт дозволу переривання TXIE Переривання буде виявлено негайно, підтримуючи встановлення бітів GIE і PEIE регістра INTCON

6                           Якщо обрана 9і-бітова передача, девятий біт буде завантажений в TX9D біт даних

7                           Завантажте 8і-бітові дані в регістр TX9D Це відразу почне передачу

Включення приймача

Приймачу EUSART дозволяються асинхронні операції конфигурированием наступних трьох керуючих бітів:

·              CREN = 1

·              SYNC = 0

·              SPEN = 1

Мається на увазі, що всі інші керуючі біти EUSART встановлені за замовчуванням

Установка біта CREN регістра RCSTA дозволяє роботу схеми приймача EUSART Очищення біта SYNC регістра TXSTA конфігурує EUSART для асинхронних операцій Установка біта SPEN регістра RCSTA дозволяє роботу EUSART і автоматично конфігурує висновок RX / DT на вхід Якщо висновок RX / DT повязаний з аналогової периферією, аналогові функції повинні бути заборонені очищенням відповідного біта ANSEL

Отримання даних

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

стартового біта і перевіряє, що біт все ще залишається нульовим Якщо ні, тоді ланцюг відновлення даних перериває прийом символу без генерації помилки і відновлює стеження за спадаючим фронтом стартового бита Якщо перевірка стартового нульового біта успішна, тоді схема відновлення підраховує повний час установки біта до центру наступного біта Потім біт перевіряється схемою виявлення зростання і результуючі «0» або «1» «вдвигаются» в RSR

Це повторюється, поки всі біти даних не будуть отримані і «всунути» у RSR Один остаточний часовий інтервал біта вимірюється, і значення приймається за зразок Це стоповий біт, який завжди дорівнює «1» Якщо схема відновлення даних приймає «0» в позиції стопового біта, тоді встановлюється помилка кадру для цього символу, інакше ця помилка очищається

Відразу, як тільки отримано всі біти даних і стоповий біт (и), символ в RSR передається в приймач FIFO і прапор переривання RCIF регістра PIR1 встановлюється Верхній символ FIFO виводиться з FIFO при читанні в регістр RCREG

Асинхронний прийом

1 Ініціалізується реєстрову пару SPBRGH, SPBRG і біти BRGH і BRG16, щоб вибрати потрібну швидкість обміну

2 Дозвольте роботу порту установкою біта SPEN Біт SYNC повинен бути очищений для асинхронних операцій

3 Якщо переривання вибрано, встановіть дозвіл переривання RCIE і біти GIE і PEIE регістра INTCON

4 Якщо вибрано 9і-бітовий прийом, встановіть біт RX9

5 Дозвольте прийом установкою біта CREN

6 Прапор переривання RCIF буде встановлений, коли символ буде переданий з RSR в буфер прийому Переривання відбудеться, якщо встановлено дозвіл переривання RCIE

7 Прочитайте регістр RCSTA, щоб перевірити на наявність прапорів помилок і, якщо дозволений 9і-бітовий прийом, девятий біт даних

8 Отримайте 8 значущих бітів даних з буфера прийому читанням регістра RCREG

9 Якщо виявляється збій темпу, скиньте прапор OERR, очистивши біт CREN дозволу прийому

Регістри USART

Рис 522 Регістри, повязані з асинхронної передачею

Рис 523 Регістри, повязані з асинхронним прийомом TXSTA:

Рис 523 Регістр управління і стан передачі Біт 7 CSRC: біт вибору джерела тактового сигналу

Асинхронний режим: Не бере участь

Синхронний режим:

1 = Режим ведучого (Master) (така частота генерується внутрішньо з BRG) 0 = Режим веденого (Slave) (тактова частота від зовнішнього джерела)

Біт 6 TX9: біт дозволу 9і-бітової передачі 1 = Вибирається 9і-бітова передача

0 = Вибирається 8і-бітова передача

Біт 5 TXEN: біт дозволу передачі 1 = Передача дозволена

0 = Передача заборонена

Біт 4 SYNC: біт вибору режиму EUSART 1 = Синхронний режим

0 = Асинхронний режим

Біт 3 SENDB: Відсилає біт Break символу Асинхронний режим:

1 = Відправляє Sync Break при наступній передачі (очищається апаратно по завершенні) 0 = Передача Sync Break завершена

Синхронний режим: Не бере участь

Біт 2 BRGH: біт вибору високій швидкості (High Baud Rate)

Асинхронний режим: 1 = Висока швидкість 0 = Низька швидкість Синхронний режим:

Не використовується в цьому режимі

Біт 1 TRMT: біт стану зрушується регістра передачі (Transmit Shift Register) 1 = TSR порожній

0 = TSR повний

Біт 0 TX9D: девятий біт даних, що передаються

Може бути бітом адреси / даних або бітом парності

RCSTA:

Рис 524 Регістр управління і стану прийому

Біт 7 SPEN: біт дозволу роботи послідовного порту

1 = Робота порту дозволена (конфігурує RX / DT і TX / CK висновки як висновки порту) 0 = Робота порту заборонена (утримується при скиданні)

Біт 6 RX9: біт дозволу 9і-бітового прийому 1 = Вибирається 9і-бітовий прийом

0 = Вибирається 8і-бітовий прийом

Біт 5 SREN: біт дозволу одиночного прийому Асинхронний режим:

Не бере участь

Синхронний режим – провідний (Master): 1 = Дозволяє одиночний прийом

0 = Забороняє одиночний прем

Цей біт очищається після завершення прийому Синхронний режим – ведений (Slave):

Не бере участь

Біт 4 CREN: біт дозволу безперервного прийому Асинхронний режим:

1 = Дозволяє прийом 0 = Забороняє прийом Синхронний режим:

1 = Дозволяє безперервний прийом поки біт дозволу CREN очищений (CREN скасують SREN) 0 = Забороняє безперервний прийом

Біт 3 ADDEN: біт дозволу виявлення адреси Асинхронний режим 9і-бітовий (RX9 = 1):

1 = Дозволяє виявлення адреси, дозволяє переривання і завантажує буфер прийому, коли RSR <8> встановлений

0 = Забороняє виявлення адреси, всі байти приймаються і девятий біт можна використовувати, як біт парності

Асинхронний режим 8і-бітовий (RX9 = 0): Не бере участь

Біт 2 FERR: біт помилки кадру

1 = Помилка кадру (може бути оновлено читанням регістра RCREG і одержанням наступного правильного байти)

0 = Немає помилки кадру

Біт 1 OERR: біт помилки швидкості

1 = Помилка швидкості (може очищатися очищенням біта CREN) 0 = Немає помилки темпу

Біт 0 RX9D: девятий біт прийнятих даних

Можна використовувати, як біт адреси / даних або як біт парності, який повинен обчислюватися програмно користувачем

BAUDCTL:

Рис 526 Регістр управління швидкістю обміну

Біт 7 ABDOVF: біт переповнення автоматичного виявлення швидкості Асинхронний режим:

1 = Таймер Auto-baud переповнений

0 = Таймер Auto-baud не був переповнений Синхронний режим:

Не бере участь

Біт 6 RCIDL: біт прапора бездіяльності приймача Асинхронний режим:

1 = Приймач діє

0 = Був отриманий стартовий біт і приймач приймає Синхронний режим:

Не бере участь

Біт 5 не використовується: читається як «0»

Біт 4 SCKP: біт вибору полярності тактових синхроімпульсів Асинхронний режим:

1 = Передає інверсні дані на висновок RB7/TX/CK

0 = передається не інверсні дані на висновок RB7/TX/CK Синхронний режим:

1 = Дані тактується наростаючим фронтом тактових імпульсів

0 = Дані тактується спадаючим фронтом тактових імпульсів

Біт 3 BRG16: біт 16і-бітового вибору генератора швидкості (Baud Rate Generator) 1 = Використовується 16і-бітовий Baud Rate Generator

0 = Використовується 8і-бітовий Baud Rate Generator

Біт 2 не використовується: читається як «0» Біт 1 WUE: біт дозволу Wake-up

Асинхронний режим:

1 = Приймач чекає спадаючого фронту Не буде прийнятий байт символу, поки не встановлений RCIF WUE буде автоматично очищений після установки RCIF

0 = Приймач працює нормально Синхронний режим:

Не бере участь

Біт 0 ABDEN: біт дозволу виявлення Auto-Baud Асинхронний режим:

1 = Режим виявлення Auto-Baud дозволений (очищається, коли завершено автоматичне виявлення швидкості)

0 = Заборонено режим Auto-Baud Синхронний режим:

Не бере участь

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012