69378

Архітектура послідовних портів

Лекция

Коммуникация, связь, радиоэлектроника и цифровые приборы

Існує два способи обміну даними між зовнішніми пристроями ЗВПР і мікропроцесорною системою МПС: паралельний коли одночасно передаються всі біти або декілька біт слова даних; послідовний коли біти слова даних пересилаються по черзі починаючи наприклад з його молодшого розряду.

Украинкский

2014-10-04

1.23 MB

2 чел.

РОЗДІЛ 3 ОСОБЛИВОСТІ АРХІТЕКТУРИ ОКРЕМИХ ФУНКЦІОНАЛЬНИХ МОДУЛІВ МІКРОКОНТРОЛЕРА

Тема 3.3 Послідовні порти

леКЦІЯ 7 Архітектура послідовних портів

 


  1.  місце послідовних портів у структурі мікроконтролера
  2.  Принцип роботи послідовного порту

Існує два способи обміну даними між зовнішніми пристроями (ЗВПР) і мікропроцесорною системою (МПС):

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

ЗВПР зв'язується з МПС лініями зв'язку, довжина яких при паралельному обміні обмежена і складає кілька метрів.

При послідовному обміні даними обмежень на довжину ліній зв'язку не накладається. Ця обставина, а також бажання використовувати для дистанційного обміну інформацією між ЗВПР і МПС існуючі канали зв'язку, обумовили широке поширення послідовного обміну даними між ЗВПР і МПС чи між декількома МПС.

Обмін інформацією в МП-рі або МК-рі здійснюється в паралельній формі. Тому при послідовному обміні даними необхідно: при передачі даних від МПС до ЗВПР  перетворити дані з паралельної форми в послідовну, а при прийомі інформації від ЗВПР та введенні її у МПС – перетворити з послідовної форми в паралельну.

Процес перетворення даних з паралельної форми в послідовну показаний на рисунку 1.

Для перетворення даних з паралельної форми в послідовну, інформація завантажується в регістр зсуву. Вміст регістра зсуву послідовно зсувається на один розряд при надходженні кожного тактового імпульсу від генератора тактових імпульсів (ГТІ).

Рисунок 1 – Перетворення даних з паралельної форми в послідовну

Дані на виході такого регістра будуть мати послідовну форму. Часто, при послідовній передачі в канал зв’язку (КЗ) першим передається молодший значущий розряд (МЗР) слова даних, останнім – старший значущий розряд (СЗР).

Для зворотного перетворення даних з послідовної форми в паралельну необхідно виконати дії, зворотні відносно описаного. Дані, що надходять з каналу зв'язку в послідовній формі, вводяться біт за бітом у регістр зсуву. Після заповнення регістра зсуву, інформація з нього в паралельній формі передається в МП-р.

Подібні перетворення виконуються в МК-рі при обміні даними через його послідовний порт (рисунок 2).

Рисунок 2 – Спрощена структура послідовного порту мікроконтролера

  1.  Місце послідовного порту в структурі мікроконтролера AT89C51

Мікроконтролер типу МК-51, наприклад, АТ89С51, містить один модуль (блок) послідовного введення/виведення інформації (послідовний інтерфейс) (рисунок 3).

До складу інтерфейсу входять: буфер інтерфейсу, логіка керування інтерфейсом, регістр керування, буфер передавача, буфер приймача, приймач-передавач послідовного порту.

Рисунок 3 – Структурна схема МК АТ89С51

Буфер інтерфейсу забезпечує побайтовий обмін інформацією між внутрішньою (резидентною) магістраллю даних і шиною інтерфейсу.

Логіка керування інтерфейсом призначена для формування сигналів керування, які забезпечують чотири режими роботи послідовного інтерфейсу.

Регістр керування (SCON) призначений для прийому і зберігання коду восьмибітового слова, яке керує послідовним інтерфейсом. Позначення та призначення розрядів регістра SCON наведені у розділі 2. Всі розряди регістра SCON програмно доступні для запису і читання.

Буфер передавача призначений для прийому з шини мікроконтролера паралельних даних і їх видачі на передавач послідовного порту.

Буфер приймача служить для прийому даних у паралельній формі від приймача послідовного інтерфейсу.

Буфер приймача і буфер передавача при програмному доступі мають однакове логічне ім'я (SBUF) і адресу (99Н). Якщо команда використовує SBUF як регістр джерела, то звернення відбувається до буфера приймача. Якщо команда використовує SBUF як регістр призначення, то звернення відбувається до буфера передавача.

В усіх режимах роботи послідовного порту передача ініціюється будь-якою командою, яка використовує SBUF як регістр призначення.

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

Послідовний порт мікроконтролера може використовуватися або в якості регістра зсуву для розширення можливостей введення/виведення або в якості універсального асинхронного приймача-передавача (УАПП) з фіксованою або змінною швидкістю послідовного обміну і можливістю дуплексного обміну (тобто через послідовний порт можна одночасно приймати і передавати дані).

Принцип роботи послідовного порту пояснює його спрощена структура (рисунок 2), яка включає наступні вузли: регістр зсуву, що передає (регістр зсуву ПД); регістр зсуву, що приймає (регістр зсуву ПРМ); буферний регістр приймача-передавача (SBUF), що містить буфер передавача (ПД) і буфер приймача (ПРМ).

Зв'язок із ЗВПР здійснюється через дві лінії порту РЗ, які виконують альтернативну функцію:

  •  Р3.0 – RxD, вхід послідовного порту, призначений для введення послідовних даних у приймач послідовного порту;
  •  Р3.1 – ТхD, вихід послідовного порту, призначений для виведення послідовних даних із передавача послідовного порту.
  1.  Програмування послідовного порту

Для програмування послідовного порту призначені:

  •  регістр керування приймачем-передавачем (РКПП): SCON;
  •  старший біт регістра керування потужністю (РКП): PCON.7 (SMOD).

Регістр керування (SCON) призначений для прийому і зберігання коду восьмибітового слова, яке керує послідовним інтерфейсом. Позначення розрядів регістра SCON наведене в таблиці 1. Всі розряди регістра SCON програмно доступні для запису і читання.

Розряди SM0, SM1 визначають режим роботи інтерфейсу, як зазначено в таблиці 2.

Таблиця 1 – Позначення розрядів регістра SCON

Біти

7

6

5

4

3

2

1

0

Позначення

SM0

SM1

SM2

REN

ТВ8

RB8

TI

RI

Таблиця 2 – Вплив розрядів SM0, SM1 SCON на режим роботи інтерфейсу

SM0

SM1

Режим

Найменування

Швидкість передачі

0

0

0

Регістр зсуву

fBQ/12

0

1

1

8-бітовий універсальний асинхронний приймач-передавач (УАПП)

змінна, задається Т/Л1

1

0

2

9-бітовий УАПП

fBQ/64 або fBQ/32

1

1

3

9-бітовий УАПП

змінна, задається Т/Л1

Інші біти регістра мають наступне призначення:

SM2 – дозвіл багатопроцесорної роботи. У режимах 2 і 3 при SM2 = 1 прапорець RI не активізується, якщо дев'ятий прийнятий біт даних дорівнює "0". У режимі 1 при SM2 = 1 прапорець RI не активізується, якщо не прийнятий стоп-біт, що дорівнює "1". В режимі 0 біт SM2 повинен бути встановлений у "0";

REN – дозвіл прийому послідовних даних. Встановлюється і скидається програмою відповідно для дозволу і заборони прийому;

ТВ8 – дев'ятий біт даних, які передаються, у режимах 2 і 3. Встановлюється і скидається програмою;

RB8 – дев'ятий біт прийнятих даних у режимах 2 і 3. У режимі 1, якщо SM2 = 0, RB8 є прийнятим стоп-бітом. У режимі 0 біт RB8 не використовується;

TI – прапорець переривання передавача. Встановлюється апаратно наприкінці видачі 8-го біта в режимі 0 або на початку стоп-біта в інших режимах. Скидається програмно;

RI – прапорець переривання приймача. Встановлюється апаратно наприкінці прийому 8-го біта в режимі 0 або через половину інтервалу стоп-біта в режимах 1, 2, 3 при SM2 = 0. При SM2 = 1 див. опис для біта SM2.

Для програмування послідовного порту призначений також старший біт регістра PCON: PCON.7 (SMOD), за допомогою якого можна змінювати швидкість передачі даних послідовним портом (див. розділ 4).

  1.  режими роботи інтерфейсу
  2.  Загальні відомості

Послідовний порт працює в одному з двох режимів: передачі та прийому.

При передачі байт по резидентній шині даних (РШД) записується у буфер передавача. Імпульсами зсуву, які може формувати таймер/лічильник1, дані у послідовному двійковому коді, починаючи з молодшого значущого розряду, передаються у канал зв'язку (КЗ).

При прийомі під дією імпульсів зсуву, які можуть бути також сформовані в Т/Л1, дані з каналу зв'язку у послідовному двійковому коді, починаючи з молодшого розряду, заповнюють регістр зсуву приймача. Після виконання необхідних перевірок прийнятий байт переписується у буфер приймача, звідки він може бути прочитаний відповідною командою.

Отже, при передачі проводиться перетворення паралельного ДК у послідовний, а при прийомі – навпаки.

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

Прийом і видача байта даних починається з молодшого розряду і закінчується старшим розрядом. Для дозволу прийому необхідно встановити в 1 розряд REN регістра керування SCON (регістр SCON описаний вище).

Послідовний порт може бути запрограмований на один з чотирьох режимів прийому/передачі шляхом програмування розрядів SM0 і SM1 регістра SCON. В усіх чотирьох режимах передача ініціюється будь-якою командою, що використовує SBUF в якості регістра призначення (виконує операцію "Запис у SBUF"). Прийом у режимі 0 ініціюється одночасним виконанням умов REN = 1 і RI = 0 (REN і RI – розряди регістра керування SCON). В інших режимах прийом ініціюється приходом старт-біта (нульовий рівень) при REN = 1.

  1.  Робота послідовного порту в режимі 0
  2.  Загальні відомості

У режимі 0 послідовний порт працює як восьмирозрядний регістр зсуву. При цьому 8 біт інформації у послідовному коді приймаються і передаються через двонаправлений вивід RxD. На виводі TxD формується сигнал синхронізації зсувів. Швидкість (частота) прийому/передачі в режимі 0 постійна і складає: fBQ/12, де fBQ – частота синхронізації мікроконтролера.

Часові діаграми, що ілюструють роботу послідовного порту у режимі 0, показані на рисунках 4, 5. Всі зображені на цих рисунках сигнали, за винятком RxD і TxD, є внутрішніми сигналами мікроконтролера.

  1.  Передача в режимі 0

Передача починається будь-якою командою, яка використовує SBUF в якості регістра призначення (виконує операцію "запис у SBUF") (рисунок 4).

Рисунок 4 – Передача в режимі 0

При виконанні такої команди у фазі S6 P2 виробляється внутрішній імпульс ЗАПИС У SBUF, за яким призначений до передачі байт записується у регістр зсуву передавача і запускається блок керування передачею.

Внутрішня система тактування мікроконтролера організована так, що між сигналом ЗАПИС У SBUF і початком передачі проходить один повний машинний цикл, після чого виробляється внутрішній сигнал ПОСИЛКА, що дозволяє видачу вмісту регістра зсуву передавача на вихід RxD (вивід Р3.0 мікроконтролера) та імпульсів синхронізації зсуву (СИНХР ЗСУВ на рисунку 4) на вихід TxD (вивід Р3.1 мікроконтролера). Сигнал СИНХР ЗСУВ має низький рівень у станах S3, S4 і S5 кожного машинного циклу і високий рівень у станах S6, S1 і S2. У фазі S6 P2 кожного машинного циклу, в якому сигнал ПОСИЛКА активний, формується внутрішній імпульс ЗСУВ, за яким вміст регістра зсуву передавача зсувається на одну позицію і на вихід RxD виставляється черговий біт посилки, що передається. Усього формується вісім імпульсів ЗСУВ, після чого блок керування передачею знімає сигнал ПОСИЛКА і встановлює прапорець переривання передавача TI (розряд у регістрі SCON). Обидві ці дії виконуються у фазі S1 P1 10-го машинного циклу після сигналу ЗАПИС У SBUF. За перериванням (TI = 1) переривається основна програма, викликається підпрограма, що скидає прапорець TI і записує черговий байт, що передається, у SBUF.

  1.  Прийом у режимі 0

Прийом починається при одночасному виконанні двох умов: REN = 1 і RI = 0 (рисунок 5).

Рисунок 5 – Прийом у режимі 0

У фазі S6 P2 наступного машинного циклу блок керування прийомом виробляє внутрішній сигнал ПРИЙОМ, що дозволяє видачу імпульсів СИНХР ЗСУВ на вихід мікроконтролера TxD. Імпульси СИНХР ЗСУВ змінюють свій стан у фазах S3 P1 і S6 P1 і синхронізують моменти надходження посилок на вхід RxD (ПРМ). Біти посилок, що приймаються, через вхід RxD надходять на регістр зсуву приймача. Стан входу RxD опитується у фазі S5 P2. У фазі S6 P2 кожного машинного циклу, в якому сигнал ПРИЙОМ активний, формується внутрішній імпульс ЗСУВ і вміст регістра зсуву приймача зсувається вліво на одну позицію. Значення, яке при цьому записується в його крайній правий розряд, є значенням сигналу на вході RxD, отриманий у фазі S5 P2 цього ж машинного циклу. Всього формується вісім імпульсів ЗСУВ, після чого блок керування прийомом формує сигнал завантаження вмісту регістра зсуву приймача у SBUF. У фазі S1 P1 10-го машинного циклу після запису в SCON, який скинув RI у 0, сигнал ПРИЙОМ скидається і встановлюється прапорець переривання приймача RI (біт у регістрі SCON). Далі за RI = 1 виконується переривання основної програми, викликається підпрограма, яка скидає прапорець RI і читає прийнятий байт із буфера ПРМ.

  1.  Робота послідовного порту в режимі 1
  2.  Загальні відомості

У режимі 1 прийом/передача даних здійснюється у форматі восьмирозрядного УАПП. Через TxD передаються, а через RxD приймаються 10 біт: старт-біт (лог. 0), 8 біт даних і стоп-біт (лог. 1). Під час прийому стоп-біт заноситься у біт RB8 регістра SCON. Швидкість (частота) прийому/передачі визначається частотою переповнень таймера/лічильника1: FOV T/С1. Ця частота усередині УАПП формується за схемою, наведеною на рисунку 6.

Рисунок 6 – Схема формування синхрочастот передачі і прийому всередині МК-51 для послідовного порту, що працює в режимах 1, 3

В залежності від значення біта SMOD регістра PCON частота, що надходить на вхід дільників на 16, F'OV T/C1 = FOV T/C1 при SMOD = 1 і  при SMOD = 0. На виходах дільників на 16 формуються частоти синхронізації передавача fСИНХР. ПД і приймача fСИНХР. ПРМ. На виходах 7, 8, 9 дільника на 16, що формує fСИНХР. ПРМ, виробляються 3 коротких імпульси, коли на вхід лічильника (дільника) надходять відповідно 7-, 8- і 9-й імпульси частоти F'OV T/C1, починаючи з початку циклу лічби. Ці імпульси використовуються логічною схемою ідентифікації значення чергової прийнятої посилки (0/1) за мажоритарним принципом.

  1.  Передача в режимі 1

Передача (рисунок 7) ініціюється будь-якою командою, що використовує SBUF в якості регістра призначення, у який виконується запис. Внутрішній імпульс мікроконтролера ЗАПИС У SBUF, що виробляється при цьому, завантажує призначений до передачі байт у молодші 8 розрядів регістра зсуву передавача та ініціює початок роботи блока керування передачею.

В режимі 1 регістр зсуву передавача має 9 розрядів і в його 9-й розряд за імпульсом ЗАПИС У SBUF заноситься "1" (стоп-біт).

Реально передача починається у фазі S1 P1 машинного циклу, яка слідує за найближчим після ЗАПИС У SBUF переповненням дільника на 16 у ланцюзі формування сигналу fСИНХР. ПД (рисунок 6). Таким чином, початок передачі синхронізований дільником на 16, а не імпульсом ЗАПИС У SBUF. Період сигналу fСИНХР. ПД (синхронізація передачі) визначає час, протягом якого біт, що видається, присутній на виході TxD (час передачі біта).

Рисунок 7 – Передача в режимі 1

Передача починається встановленням активного рівня внутрішнього сигналу мікроконтролера ПОСИЛКА, поява якого викликає видачу на вихід TxD рівня старт-біта (нуль). Після цього через час передачі одного біта стає активним внутрішній сигнал мікроконтролера ДАНІ, що дозволяє видачу вмісту регістра зсуву передавача на вихід TxD (вивід Р3.0 мікроконтролера ). При появі активного сигналу ДАНІ старт-біт на виході TxD замінюється бітом D0 регістра зсуву передавача. По закінченні часу передачі біта D0 формується перший внутрішній імпульс мікроконтролера ЗСУВ, за яким вміст регістра зсуву передавача зсувається на один розряд, і біт D0 на виході TxD замінюється бітом D1. Усього формується 9 імпульсів ЗСУВ, у результаті чого на вихід TxD видаються 8 біт даних і стоп-біт. По закінченні видачі всіх біт посилки блок керування передачею встановлює прапорець переривання передавача TI і знімає сигнали ПОСИЛКА і ДАНІ. За перериванням відбувається скидання прапорця TI, запис нового байта тощо.

  1.  Прийом у режимі 1

Прийом (рисунок 8) починається при виявленні переходу сигналу на вході RxD з "1" в "0". Для того, щоб виявити такий перехід, вхід RxD апаратно опитується з частотою F'OV T/C1 (рисунок 6), тобто 16 разів на одну посилку.

Рисунок 8 – Прийом у режимі 1

Коли перехід сигналу на вході RxD із "1" в "0" виявлений, негайно скидається лічильник (дільник на 16) у ланцюзі формування сигналу fСИНХР. ПРМ (рисунок 6), у результаті чого відбувається поєднання моментів переповнення цього лічильника (дільника) (імпульси fСИНХР. ПРМ на рисунку 6) із границями зміни бітів прийнятої посилки на вході RxD.

Шістнадцять станів лічильника (дільника) поділяють час, протягом якого кожний біт прийнятої посилки присутній на вході RxD, на 16 фаз, з 1-ї по 16-у для кожного біта. У фазах 7, 8 і 9 спеціальний пристрій мікроконтролера, біт-детектор, зчитує із входу RxD три значення прийнятого біта, за мажоритарним принципом "2 або 3 із 3-х" вибирає одне з них і подає його на вхід регістра зсуву приймача. Блок керування прийомом при цьому формує внутрішній імпульс мікроконтролера ЗСУВ, у результаті чого вміст регістра зсуву приймача зсувається на один розряд і прийнятий біт заноситься у регістр зсуву приймача. Усього формується 10 імпульсів ЗСУВ, а регістр зсуву приймача у режимі 1 є 9-розрядним. Тому після 10-го імпульсу ЗСУВ у регістрі зсуву приймача знаходяться біти даних D0-D7 і стоп-біт. Після 10-го імпульсу ЗСУВ блок керування прийомом завантажує дані з регістра зсуву приймача у SBUF, завантажує стоп-біт з регістра зсуву приймача у розряд RB8 регістра SCON і встановлює прапорець переривання приймача RI. Сигнал завантаження SBUF, RB8 і встановлення RI виробляється блоком керування прийомом тільки в тому випадку, якщо в момент генерації останнього імпульсу ЗСУВ виконуються наступні умови:

  •  RI = 0 і
  •  або SM2 = 0, або (SM2 = 1) прийнятий стоп-біт дорівнює "1".

Якщо хоча б одна з цих умов не виконується, прийнята посилка безповоротно втрачається, а прапорець RI не встановлюється. Якщо обидві наведені умови виконані, стоп-біт надходить у RB8, вісім біт даних надходять у SBUF і встановлюється прапорець RI. У цей час, незалежно від виконання наведених вище умов, послідовний порт знову починає відслідковувати наявність переходу сигналу з "1" у "0" на вході RxD і прийом нового байта. До закінчення цього процесу попередній байт повинний бути прочитаний із буфера ПРМ, інакше буде накладення нового прийнятого байта на старий.

Якщо мажоритарний відбір при прийомі першого біта посилки (старт-біт) показує ненульове значення біта, всі пристрої блоку прийому скидаються, і починається відслідковування наступного переходу сигналу з "1" в "0" на вході RxD. Таким чином, забезпечується захист від помилкових старт-бітів.

  1.  Робота послідовного порту в режимах 2 і 3

Режими 2 і 3 – це режими 9-розрядного УАПП з постійною (режим 2) та змінною (режим 3) швидкостями обміну. У цих режимах 11 біт передаються/приймаються відповідно через виводи TxD/RxD у наступній послідовності: старт-біт, 9 біт даних, стоп-біт. 9-й біт даних при передачі визначаються вмістом розряду ТВ8 регістра SCON. При прийомі 9-й біт даних заноситься у біт RB8 регістра SCON.

Швидкість (частота) прийому/передачі у режимі 2 (рисунок 9) програмно налаштовується на одну з двох можливих величин: fBQ/32 і fBQ/64, де fBQ – частота синхронізації мікроконтролера.

Рисунок 9 – Схема формування синхрочастот передачі і прийому всередині МК-51 для послідовного порту, що працює у режимі 2

У режимі 3 швидкість (частота) прийому/передачі визначається частотою переповнень таймера/лічильника1: FOV T/C1.

Розходження у швидкості (частоті) прийому/передачі є єдиною відмінністю між режимом 2 і режимом 3. В усьому іншому ці два режими є цілком ідентичними.

Часові діаграми, що ілюструють роботу послідовного порту в режимах 2 і 3, наведені у [].

Робота УАПП у режимах 2 і 3 дуже схожа на режим 1. Але при цьому існує ряд відмінностей:

  •  у форматі даних, якими відбувається обмін. Після восьми інформаційних, перед стоп-бітом, присутній 9-й біт, що програмується. При передачі значення 9-го біта визначається значенням розряду TB8 регістра SCON. При прийомі 9-й біт фіксується у розряді RB8 регістра SCON;
  •  якщо біт SM2 регістра SCON встановлений в одиницю, то повідомлення, у якому 9-й біт дорівнює нулю, бракується (втрачається). Тобто прапорець RI не встановлюється, і переривання основної програми при прийомі не відбувається;
  •  на часових діаграмах роботи передавача у режимах 2 і 3 у порівнянні з режимом 1 буде доданий ще один біт (TB8) і цикл передачі подовжується на один такт (період частоти синхронізації передавача);
  •  на часових діаграмах роботи приймача у режимах 2, 3 буде доданий ще один прийнятий біт (RB8) перед стоп-бітом. Крім того, детектування стоп-біта не відбувається, і прапорець RI встановлюється після 10-го зсуву, тобто після фіксації RB8.
  1.  швидкість передачі-прийому даних через послідовний порт

Швидкість (частота передачі бітів) послідовного обміну Vпд в залежності від режиму роботи послідовного порту визначається або частотою синхронізації мікроконтролера fBQ (режими 0 і 2), або частотою переповнення таймера/лічильника1 Fov T/C1 (режими 1 і 3).

У режимі 0 швидкість послідовного обміну максимальна. Вона постійна і складає:

Vпд = fBQ/12  [біт/с]. (1)

При необхідності працювати зі зміненою у 2 рази швидкістю використовується режим 2 послідовного порту. У цьому режимі швидкість послідовної передачі залежить від стану біта SMOD регістра SCON і частоти fBQ:

Vпд = (2SMOD/64) * fBQ  [біт/с]. (2)

Тобто при SMOD = 0, Vпд = fBQ/64, а при SMOD = 1, Vпд = fBQ/32. За сигналом “скидання” біт SMOD встановлюється в нуль. Для встановлення біта SMOD використовуються команди з адресацією байтів, наприклад, команда MOV 87H, #80Н.

У режимах 1, 3 є можливість змінити швидкість послідовної передачі у більш широкому діапазоні:

Vпд = (2SMOD/32) * FOV T/C1  [біт/с], (3)

де FOV T/C1 – частота переповнення Т/Л1.

Для використання Т/Л1 в якості джерела для задання швидкості обміну необхідно:

  •  заборонити переривання від Т/Л1;
  •  запрограмувати роботу Т/Л1 в якості таймера або в якості лічильника, встановивши при цьому для нього один з режимів 0, 1 або 2;
  •  увімкнути Т/Л1 на лічбу.

Звичайно для синхронізації послідовного порту таймер Т/Л1 вмикається у режим автозавантаження (режим 2). У цьому випадку швидкість послідовного обміну визначається за формулою:

Vпд = (2SMOD * fBQ)/(32 * 12 * [256-(TH1)])  [біт/с], (4)

де (ТН1) – десятковий код вмісту ТН1.

Якщо необхідний послідовний обмін з дуже низькою швидкістю, то можна використовувати Т/Л1 у режимі 16-розрядного таймера (режим 1), дозволивши при цьому переривання від Т/Л1 з метою перезавантаження TL1/TH1 у підпрограмі обслуговування переривання.

У таблиці 3 наведений ряд стандартних швидкостей послідовного обміну і те, як вони можуть бути реалізовані в МК-рі.

Таблиця 3 – Формування стандартних швидкостей обміну через послідовний порт

Режим роботи послідовного порту

Швидкість прийому/ передачі, Кбод

fBQ, МГц

SMOD

Розряди

TMOD

TH1

Примітка

C/T

M1

M0

Режим 0

Макс.: 1000

12

Х

Х

Х

Х

Х

Режим 2

Макс.: 375

12

1

Х

Х

Х

Х


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

Режим 1, 3

62,5

12

1

0

1

0

FFH

19,2

11,059

1

0

1

0

FDH

9,6

11,059

0

0

1

0

FDH

4,8

11,059

0

0

1

0

FAH

2,4

11,059

0

0

1

0

E4H

1,2

11,059

0

0

1

0

E8H

0,1375

11,986

0

0

1

0

18H

0,110

6

0

0

1

0

72H

0,110

12

0

0

0

1

FEH

TL1 = EBH

У таблиці 4 наведена зведена інформація з усіх чотирьох режимів роботи послідовного порту МК-ра родини МК-51.

Таблиця 4 – Зведена інформація з усіх режимів роботи послідовного порту

Режим обміну

Вид обміну

Розряди регістра SCON

Швидкість передачі

Примітка

SM0

SM1

SM2

REN

TB8

RB8

ПРАПОРЕЦЬ

0

ПД

0

0

0

TI

ПРМ

1

RI

Для ініціалізації прийому встановити: RI=0


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

1

ПД

0

1

TI

ПРМ

0

1

стоп-біт

RI

1

1

0

Прийнятий байт губиться

2

ПД

1

0

9-й біт

даних

TI

ПРМ

0

1

9-й біт

даних

RI

1

1

0

Прийнятий байт губиться

3

ПРД

1

1

9-й біт

даних

TI

ПРМ

0

1

9-й біт

даних

RI

1

1

0

Прийнятий байт губиться

  1.  Приклад програмування послідовного порту Мікроконтролера РОДИНИ МК-51

Вихідні дані для програмування:

  •  швидкість обміну – 110 біт/с (бод);
  •  fBQ = 6 МГц;
  •  режим роботи послідовного порту – 3;
  •  режим роботи T/Л1 – 2;
  •  вид обміну – під управлінням мікропроцесора (програмно-управляючий);
  •  біт SMOD регістра PCON сигналом "RESET" встановлений у 0.

Нижче наведений приклад програми ініціалізації послідовного порту і фрагменти програмно-керуючого обміну:

; ініціалізація послідовного порту

; для роботи зі швидкістю 110 бод

; на частоті тактового сигналу 6 МГц;

INT1:   CLR  TCON.6 ; зупинка таймера;

CLR  IE.3 ; заборона переривань від T/Л1;

CLR  IE.4 ; заборона переривань від УАПП;

MOV  TH1,#72H ; значення, що автоматично завантажується,

; для отримання швидкості 110 бод;

MOV  SCON,#11011000B ; встановлення режиму 9-розрядного УАПП;

MOV  TMOD,#00100000B ; встановлення режиму автозавантаження

; таймера 1;

SETB  TCON.6 ; запуск таймера1;

; прийом символу від зовнішнього пристрою;

CIN:   JNB  RI,CIN ; очікування завершення прийому;

MOV  A,SBUF ; читання отриманого символу;

CLR  RI ; скидання прапорця прийому;

; передача символу на зовнішній пристрій;

COUT:   JNB  TI,COUT ; очікування закінчення передачі

; попереднього символу;

CLR  TI ; скидання прапорця передачі;

MOV  SBUF,A ; видача символу.

  1.  ОСОБЛИВОСТІ МІЖКОНТРОЛЕРНОГО ОБМІНУ ІНФОРМАЦІЄЮ В ЛОКАЛЬНИХ керуючих МЕРЕЖАХ ПРИ ВИКОРИСТАННІ ПОСЛІДОВНОГО ПОРТУ

Режими 2 і 3 послідовного порту дозволяють організувати роботу МК-рів у багатопроцесорних системах, які використовують для обміну інформацією між МК-ми моноканал, що розділяється (коаксіальний кабель, скрутна пара, оптоволокно) []. У цих режимах приймається дев'ять біт даних і 9-й прийнятий біт записується у біт RB8 регістра SCON. При цьому, якщо біт SM2 регістра SCON встановлений в "1", то після прийому останньої посилки прапорець переривання приймача RI буде встановлений тільки в тому випадку, якщо RB8 = 1. Цю особливість роботи послідовного порту у режимах 2 і 3 можна використовувати для організації міжконтролерного обміну наступним чином.

Коли ведучий МК-р хоче передати блок даних одному з ведених МКв, він видає в моноканал посилку з адресою веденого МК, котрому буде передаватися блок даних. Адресна посилка відрізняється від посилки з даними тим, що в адресній посилці 9-й біт даних дорівнює "1", а у посилці з даними  "0". Таким чином, при SM2 = 1 жоден з ведених МК-в не буде реагувати на посилку з даними, але усі ведені зреагують на адресну посилку. Проаналізувавши отриману адресу, той МК-р, що адресується, скидає свій біт SM2, а інші залишають його без зміни і знову переходять до виконання перерваної програми. Після цього ведучий МК-р може починати видачу в моноканал блоку даних, на посилки якого буде реагувати тільки МК-р, у котрого SM2 = 0.

Біт SM2 ніяк не бере участі у роботі послідовного порту в режимі 0. У режимі 1 біт SM2 може використовуватися для контролю правильності прийнятого стоп-біта: в режимі 1, якщо SM2 = 1, прапорець переривання приймача RI не буде встановлений, якщо прийнятий стоп-біт не дорівнює "1".


КОНТРОЛЬНІ ЗАПИТАННЯ

  1.  Визначте, у якій формі здійснюється обмін інформацією у МПС? Що з нею відбуваються при обміну даними із зовнішніми пристроями?
  2.  За малюнками опишіть складові інтерфейсу послідовного введення/виведення та їх призначення
  3.  Роль регістрів РКПП (SCON) та РКП (PCON.7) у програмуванні послідовного порту
  4.  Дайте характеристику кожному з режимів роботи послідовного порту за такими критеріями:
    1.  Команда (умова) початку передачі/прийому
    2.  Спосіб синхронізації зсувів
    3.  Швидкість передачі та можливість її змінювати
    4.  Кількість передаваних/прийманих біт
    5.  Алгоритм роботи
  5.  Розподілення ролей МК-рів у моно каналі, їх можливі режими роботи

ЛІТЕРАТУРА


САМОСТІЙНА РОБОТА СТУДЕНТІВ

  1.  РОЗВИТОК АРХІТЕКТУРИ ПОСЛІДОВНИХ ПОРТІВ У СУЧАНИХ МІКОКОНТРОЛЕРАХ РОДИНИ MK-51

Всі мікроконтролери МК-51 мають інтерфейс для послідовного обміну інформацією з іншими мікроконтролерами або персональними комп’ютерами.

Стандартна архітектура послідовного порту була розглянута вище, в матеріалі основного розділу лекції. Всі мікроконтролери даного сімейства мають у своєму складі один UART. Також до складу сучасних мікроконтролерів даного сімейства входять такі порти послідовного обміну інформацією: І2С, SPI, SEP.

Розглянемо роботу кожного інтерфейсу більш детально.

  1.  Послідовний периферійний інтерфейс (SPI)

Послідовний периферійний інтерфейс SPI (Serial Peripheral Interface) мікроконтролерів сімейства Cygnal представляє собою повнодуплексний чотирьохпровідний інтерфейс з шинною конфігурацією підключаємих вузлів (пристроїв). SPI інтерфейс дозволяє підключати до одного ведучого або головного (Master) вузлу кілька ведених (Slave) вузлів через загальну шину. Окремий сигнал NSS (Slave-Select signal) вибору веденого пристрою використовується для вибору веденого пристрою для здійснення з ним обміну даними. Крім того, можлива також побудова системи з багатьма ведучими вузлами. Виявлення конфліктів при одночасній передачі кількох ведучих вузлів також передбачено.

Інтерфейс SPI може бути запрограмований для роботи в якості ведучого (Master) або веденого (Slave). Якщо інтерфейс запрограмований як ведучий, він може працювати на максимальній швидкості передачі даних (bits / sec), що дорівнює половині тактової частоти. Якщо інтерфейс запрограмований для роботи в якості веденого, його максимальна швидкість в повнодуплексному режимі дорівнює одній десятій тактової частоти. Мається на увазі, що джерелом синхронізації в обох випадках є системний генератор тактової частоти. Якщо ведучий інтерфейс виробляє SCK, NSS і послідовні вхідні дані асинхронно, максимальна швидкість передачі повинна бути менше однієї десятої тактовою частоти.

Існує ще один особливий режим, коли ведучий повинен тільки передавати дані веденогому (напівдуплексний режим), і не повинен приймати дані від нього. У цьому випадку максимальна швидкість передачі складає одну четверту від системної тактової частоти, при синхронному режимі роботи.

Функціональна схема роботи SPI інтерфейсу показана на рисунку 1, а типова структурна схема SPI мережі наведені в [].

Інтерфейс SPI має чотири сигнальні лінії: MOSI, MISO, SCK u NSS.

Лінія MOSI (Master-Out, Slave-In) - вихідна лінія даних ведучого інтерфейсу і вхідна лінія даних веденого інтерфейсу. З назви випливає, що лінія призначена для передачі даних від ведучого (Master) інтерфейсу (або вузла мережі) до веденого (Slave) інтерфейсу (або вузлу мережі).

Лінія MISO (Master-In, Slave-Out) - вхідна лінія даних ведучого інтерфейсу і вихідна лінія даних веденого інтерфейсу. Лінія призначена для передачі даних від веденого інтерфейсу до ведучого. Дані передаються байтами, побітно, починаючи зі старшого біта. Слід пам'ятати, що вивод MISO веденого інтерфейсу знаходиться в високоімпедансному стані, якщо ведений інтерфейс не обраний по лінії NSS.

Рисунок 1 - Функціональна схема роботи SPI інтерфейсу

Лінія NSS (Slave Select) - лінія вибірки веденого, призначена для вибірки (низьким логічним потенціалом) веденого інтерфейсу ведучим.

Лінія SCK (Serial Clock) - вихідна лінія тактових імпульсів ведучого вузла і вхідна лінія тактових імпульсів веденого вузла. Лінія SCK використовується для синхронізації передачі даних між ведучим і веденим інтерфейсами по лініях MOSI u MISO.

У мережі на базі SPI інтерфейсів тільки один інтерфейс може бути ведучим. Інтерфейс встановлюється в режим ведучого установкою прапора MSTEN (Master Enable flag) - бита SPI0CN.1. Якщо інтерфейс встановлений в режим ведучого, то запис байта даних у регістр даних SPI0DAT приводить до початку передачі. Ведучий інтерфейс негайно побітно зрушує дані і видає їх на лінію MOSI в супроводі тактових імпульсів на лінії SCK. Після завершення передачі встановлюється прапор SPIF (SPI0CN.7). Якщо дозволені переривання, видається відповідне переривання. Крім того, інтерфейс може бути запрограмований на видачу від одного до восьми бітів для здійснення зв'язку з SPI приладами, що мають різну довжину слова. Довжина передачі (кількість переданих бітів) може бути задана битами SPIFRS в регістрі конфігурації SPI0CFG. [2:0] (SPI Configuration Register).

З'єднання двох мікроконтролерів (ведучий-ведений) по інтерфейсу SPI приведена на рисунку 2, та більш детально показана в [ ].

Вище вже зазначалося, що інтерфейс може працювати в повнодуплексному режимі, це означає, що можлива одночасна передача даних по лініях MOSI від ведучого до веденого, і MISO від веденого до ведучого. Дані, отримані від веденого інтерфейсу, замінюють дані в регістрі даних ведучого інтерфейсу. Цей регістр двічі буферизований на введення, але не на виведення. Тобто якщо в регістр даних SPI0DAT здійснюється  спроба запису  даних під  час  передачі  попереднього  байта,

Рисунок 2 – Схема з’єднання вузлів SPI двох різних пристроїв

встановлюється прапор WCOL (SPI0CN.6) і спроба запису ігнорується. Таким чином, поточна передача даних триває безперервно. Зчитування з регістра даних SPI0DAT призводить до зчитування приймального буфера. Якщо прийом не закінчений, встановлюється прапор RXOVRN (SPI0CN.4). Нові дані не передаються в регістр зчитування, поки попередній прийнятий байт не буде прочитаний. Очевидно, що при затримці зчитування прийнятих байтів може відбутися втрата даних. Якщо SPI інтерфейс не налаштований, як ведучий (Master), він буде працювати в режимі веденого (Slave).

Крім того, підтримується режим мережі з багатьма ведучими. Прапор MODF (SPI0CN.5-Mode Fault flag) встановлюється в логічну одиницю, якщо інтерфейс визначений як ведучий (MSTEN = 1) і вивід NSS переведений в низький логічний рівень, тобто SPI інтерфейс намагаються використовувати в якості веденого. Якщо при цьому встановлено прапор MODF, біти MSTEN та SPIEN в регістрі керування SPI стираються автоматично апаратно, переводячи інтерфейс в автономний стан. Таким чином, у системі з багатьма веденими ядро ​​може визначити чи вільна шина шляхом опитування прапора SLVSEL (SPI0CN.2) перед тим, як встановити MSTEN прапор (тобто визначити інтерфейсу режим ведучого) і ініціалізувати обмін.

Часові діаграми роботи SPI інтерфейсу показані на рисунку 3.

Рисунок 3 – часові діаграми роботи SPI інтерфейсу

Можливі чотири комбінації фаз тактових імпульсів і їх полярності залежно від комбінації керуючих бітів у регістрі конфігурації SPI0CFG (SPI Configuration Register). Біт CKPHA (SPI0CFG.7) вибирає одну з двох фаз тактових імпульсів, тобто фронт, за яким здійснюється запис даних. Інший біт CKPOL (SPI0CFG.6) визначає активну полярність (високий чи низький рівень). Очевидно, що і ведучий, і ведений вузли повинні мати однакові налаштування фази і полярності. Ще одна важлива особливість налаштування полягає в тому, що інтерфейс SPI повинен бути заборонений (шляхом обнулення біта SPIEN, SPI0CN.0) на час налаштування фази і полярності тактових імпульсів.

Крім описаних SFR регістрів, при налаштуванні SPI інтерфейсу використовуються регістр налаштування швидкості передачі (SPI0CKR).

  1.  Інтерфейс I2C

Інтерфейс I2C являється двохпровідним послідовним синхронним інтерфейсом, розробленим фірмою Philips Corporation, і призначений для зв'язку між інтегральними мікросхемами або модулями. Існує ціла група I2C-сумісних пристроїв для різних додатків: цифро-аналогові й аналого-цифрові перетворювачі, мікросхеми пам'яті, мікроконтролери, що містять модуль I2C і т.д.

Шина інтерфейсу I2C складається із двох ліній:

- двонаправленої лінії даних (SDA);

- лінії тактових (синхро) імпульсів (SCL).

На рисунку 4 приведена структурна схема типової мережі, що використовує для обміну даними інтерфейс (шину) I2C.

Лінії SDA і SCL шини з'єднані з додатнім полюсом напруги живлення (+Vcc) через резистори, що підтягують,  та .

Передавач генерує та передає повідомлення, а приймач його приймає.

Один із двох пристроїв, що беруть участь в обміні, являється ведучим (master), а інший - веденим (slave). Ведучий пристрій управляє роботою шини та формує тактові сигнали (синхросигнали) SCL.

              Рисунок 4 - Структурна схема мережі з інтерфейсом I2C

Кожний пристрій, що використовує для обміну інтерфейс I2C, має свою адресу. Коли ведучий пристрій бажає ініціювати обмін даними, він передає на лінію SDA адресу пристрою, з яким буде виконуватися обмін (передача/прийом). Всі ведені пристрої стежать за адресою, що виставляється на шину, і порівнюють її із власною адресою. Після адреси ведучий передає біт напрямку , що визначає чи буде ведучий читати дані від веденого (= 1) або буде передавати дані веденому (= 0). Ведений приймач після одержання адреси або даних видає на шину SDA біт підтвердження (логічний нуль). Інтерфейс I2C може використовувати два формати адреси:

  •  7-ми бітну адресу;
  •  10-ти бітну адресу.

На рисунку 6 наведений формат 7-ми бітної адреси.

Рисунок  6 – Формат 7-бітної адреси ( S-Старт, - біт «читання/запис»

- підтвердження )

На рисунку 7 наведені часові діаграми, що відображають стани на шині (рисунок 7, а), а також пояснюють формування сигналу підтвердження (рисунок 6, б).

А

Б

Рисунок 7 - Стани на шині: старт - s, стоп - p, передача

даних (а); формування сигналу підтвердження (б).

Наведені діаграми відображають наступні коректні стани сигналів на шині під час обміну даними:

- шина не зайнята: на обох лініях одиниця ( SDA = SCL = 1 );

- початок обміну даними: зміна сигналу на лінії даних SDA з одиниці в нуль при одиничному значенні сигналу на лінії SCL, що визначає умову початку обміну (умова «СТАРТ» - S);

- припинення передачі: зміна сигналу на лінії даних з нуля в одиницю при одиничному значенні сигналу на лінії SCL, що визначає умову закінчення обміну (умова «СТОП» - P);

- коректність даних: при одиничному значенні сигналу на лінії SCL стан лінії даних не повинен змінюватися, щоб не сформувати невірну умову СТАРТ або СТОП. Дані можна змінювати, якщо на лінії SCL присутній низький рівень сигналу (логічний нуль). На один біт інформації на лінії SDA міститься один тактовий імпульс на лінії SCL. Кожний цикл обміну даними починається умовою «СТАРТ» і закінчується умовою «СТОП». Кількість інформаційних бітів даних, переданих між цими станами, необмежена. Дані передаються побайтно. Приймач підтверджує одержання чергового  байта, посилаючи біт підтвердження (логічний нуль) після прийому кожного байта;

- біт підтвердження: передається після прийому кожного байта даних або адреси. Активний передавач (ведений або ведучий) після передачі чергового байта формує на лінії SDA сигнал високого рівня. Ведучий пристрій (приймач або передавач) формує на лінії SCL тактовий імпульс, а приймач (ведучий або ведений) видає на лінію даних SDA сигнал підтвердження низького рівня.

Приймач, що генерує біт підтвердження, підключає лінію SDA до низького рівня і утримує її в цьому стані доти, поки тактовий імпульс лінії SCL не переключиться в стан низького рівня. Для припинення обміну приймач повинен залишити останній прийнятий байт без підтвердження, що автоматично викликає формування активним передавачем умови «СТОП».

Можливі чотири режими (типу) обміну даними для інтерфейсу I2C (Рисункок 8):

- Ведучий передавач: на вихід SDA передавача виводяться дані, а на лінію SCL видаються синхроімпульси. Перший переданий байт містить адресу веденого приймача (7 біт) і біт напрямку обміну даними = 0, що говорить про те, що буде проводитися запис (передача). Дані передаються послідовно по 8 біт. Після передачі чергового байта (адреса або дані), ведучий передавач очікує від веденого приймача біт підтвердження  . Для задавання початку й кінця сеансу обміну даними ведучий передавач формує умови «СТАРТ» і «СТОП»;

- Ведучий приймач: спочатку сеансу обміну ведучий приймач передає на лінію SDA адресу веденого передавача (7 біт) і біт напрямку обміну = 1, що говорить про те, що ведучий буде здійснювати прийом. Ведучий приймач формує імпульси синхронізації, що передаються  лінією SCL. Після прийому адреси ведений передавач виставляє на лінію SDA сигнал підтвердження , а потім передає дані. Дані від веденого передавача передаються послідовно по 8 біт лінією SDA. Після прийому чергового байта ведучий приймач виставляє на лінію SDA сигнал підтвердження . Умови СТАРТ і СТОП формуються ведучим пристроєм для вказівки початку й кінця сеансу обміну послідовними даними;

- Ведений приймач: ведучий передавач видає на лінію SDA адресу веденого приймача й біт напрямку = 0 , що говорить про те, що буде виконуватися запис (передача). На лінії SCL ведучий передавач видає синхроімпульси. Після одержання від веденого приймача сигналу підтвердження  ведучий передавач послідовно передає на лінію SDA дані. Ведений приймач після прийому чергового байта даних передає сигнал підтвердження , що надходить до ведучого передавача лінією SDA. Умови СТАРТ і СТОП формуються ведучим передавачем;

- Ведений передавач: перший байт на шині SDA приймається й обробляється веденим передавачем так само, як і в режимі веденого приймача. При цьому біт напрямку =1, що говорить про те, що ведучий буде здійснювати прийом. Дані послідовно передаються  лінією SDA від веденого передавача, у той час, як синхроімпульси передаються лінією SCL від ведучого приймача. Після передачі кожного байта ведений передавач аналізує наявність на лінії SDA біта підтвердження , що передає ведучий приймач. Умови СТАРТ і СТОП формує ведучий приймач.

У підпорядкованому режимі апаратні засоби інтерфейсу I2C здійснюють пошук своєї власної підпорядкованої адреси або адреси загального виклику. Якщо детектується одна із цих адрес, запитується переривання й виконуються відповідні дії. Якщо модуль I2C хоче захопити шину й стати ведучим, то він чекає, поки шина звільниться (SDA = SCL = 1). Можливе функціонування в якості веденого при цьому не переривається.

Два й більше пристрої I2C можуть спробувати стати ведучими й одночасно згенерувати умову «СТАРТ». У цьому випадку здійснюється арбітраж шини в моменти, коли шина SCL перебуває у високому стані. Якщо один ведучий передає на лінію даних низький рівень, а інший - високий, то останній відключається від лінії, тому що стан шини SDA (низький) не відповідає високому стану внутрішньої шини даних пристрою, що бажає стати ведучим.

Якщо арбітраж шини загублений у головному режимі, то відповідний пристрій I2C переключається в підпорядкований режим і може детектувати свою власну підпорядковану адресу.

На рисунку8 наведені часові діаграми, що відображають обмін даними шиною I2C.

Рисунок 8 - Приклад обміну даними по шиною I2C

 Багато мікроконтролерів фірми Cygnal оснащєні послідовним інтерфейсом введення/виведення SMBus, який відповідає специфікації версії 1.1. (System Management Bus Specification, vl 1) [5-7]. Цей інтерфейс є двухпроводною двонаправленою послідовною шиною, що сумісна з послідовним інтерфейсом I2С. Зчитування та запис інформації проводиться байтами під автономним керуванням вбудованого контролера послідовної передачі даних. Дані можуть передаватися зі швидкостю до 1/178 від системної частоти. При цьому швидкість передачі може бути вище, ніж передбачено специфікацією. Реальна швидкість передачі залежить від типів пристроїв, підключених до шини (точніше від їх граничної швидкодії), і звичайно може бути набагато меншою.

Шина SMBus використовує механізм синхронізації, аналогічний інтерфейсу I2C. Головний вузол передає тактові імпульси, а ведений або працює на запропонованій головним вузлом швидкості, або пригальмовує швидкість, переводячи лінію SCL в низький логічний рівень через один імпульс SCL, знижуючи, таким чином, швидкість тактових імпульсів.

На шині SMBus можливі кілька типів стану таймауту.

Таймаут тактової лінії в нулі (SCL Low Timeout). Якщо лінія SCL переведена низькошвидкісних веденим вузлом в стан низького логічного рівня, ніяка подальша передача неможлива. Очевидно, що головний вузол у цій ситуації нічого не може зробити. Для виключення цієї ситуації передбачено, що кожен вузол визначає тривалість перебування лінії SCL в стані низького рівня, і якщо ця тривалість перевищує 25 ms, стан вважається таймаутом. Кожен вузол, який визначив стан таймауту на шині, зобов'язаний скинути свій інтерфейс не пізніше 10 ms. Інтерфейс SMBus не має спеціального вузла моніторингу лінії SCL, однак будь-який з таймерів загального призначення в режимі шістнадцятибітну регістра з автозавантаженням може бути використаний для цього, а таймер 3 багатьох мікроконтролерів спеціально пристосований для таких цілей.

Таймаут тактової лінії в одиниці (SCL High Timeout). Цей таймаут можна вважати функціонально нормальним (тобто не помилковим), тому що він свідчить про те, що шина вільна. Цей таймаут визначається, якщо обидві лінії SCL і SDA, перебувають у стані логічної одиниці більш ніж 50 mks. Якщо біт FTE в регістрі SMB0CN встановлений, то визначити чи вільна лінія можна за станом регістра SMB0CR.

Інтерфейс SMBus, як і всі інші інтерфейси, доступний через 5 регістрів (в SFR): SMB0CN - регістр керування; SMB0CR - регістр завдання швидкості; SMB0ADR - регістр адреси; SMB0DAT - регістр даних і SMB0STA - регістр стану.

  1.   Розширений послідовний порт (SEP)

Мікроконтролери групи 8XC51GB фірми INTEL мають у своєму складі розширений послідовний порт  8XC51GB побудований на базі ядра МК51.

Розширений послідовний порт (SEP) має апаратні засоби для реалізації шини FC-bus, де-факто є стандартом послідовного обміну. SEP допускає  функціонування в чотирьох різних режимах, має три різних джерела тактування. Під його потреби використовується два виводи мікросхеми: Р4.1 - введення / виведення даних і Р4.0 - для виведення тактового сигналу. Пакет що передається або приймається складається з восьми біт даних. При цьому використовується вісім тактів роботи SEP. За відсутності прийнятої чи переданої інформації тактовий сигнал і дані неактивні.

За SEP закріплено три SFR-регістра - SEPCON (0D7H), SEPDAT (0Е7Н) і SEPSTAT (0F7H). Регістри адресуються тільки побайтно. Призначення біт в регістрах SEPCON і SEPSTAT наведено в табл. 2 і 1 відповідно.


Таблиця 1 – призначення бітів регістру SEPSTAT

Біт

Позиція

Функція

-

SEPSTAT.7

Зарезервований

-

SEPSTAT.6

Зарезервований

-

SEPSTAT.5

Зарезервований

-

SEPSTAT.4

Зарезервований

-

SEPSTAT.3

Зарезервований

SEPFWR

SEPSTAT.2

Прапор помилки запису SEP

SEPFRD

SEPSTAT.1

Прапор помилки читання SEP

SEPIF

SEPSTAT.0

Прапор переривання SEP

На рисунку 9 наведено відмітні особливості режимів роботи SEP - активні рівні сигналу тактування та фронти, використовувані для прийому або передачі. Як випливає з таблиці 2, режим роботи SEP визначається станом бітів CLKPOL і CLKPH, розташованих в регістрі SEPCON.

Для прийому або передачі байта користувач повинен встановити режим роботи порту (біти CLKPOL і CLKPH), швидкість передачі (SEPS1 і SEPS0), а також встановити в 1 біт SEPE. Процес передачі починається відразу після завантаження байта в регістр SEPDATA. Прийом ініціюється установкою в 1 біта SEPREN у разі, коли регістр SEPDATA порожній і немає передачі. Після прийому 8 бітів SEPREN апаратно скидається. Завершення прийому або передачі приводить до установки в 1 біта SEPIF. Скидання цього біта можливий тільки програмним шляхом.

Якщо користувач зробить спробу записати або прочитати інформацію з регістру SEPDATA в момент передачі або прийому, встановлюється відповідний біт помилки. Прапор SEPFWR встановлюється при наявності такої спроби в процесі передачі байта, a SEPFRD - в процесі прийому. Переривання, пов'язані з встановленням цих бітів відсутні, внаслідок чого користувач повинен контролювати їх стан самостійно.  Скидання цих прапорів може бути здійснено тільки програмним шляхом.

Таблиця 2 – призначення бітів регістру SEPCON

Біт

Позиція

Функція

-

SEPCON.7

Зарезервований

-

SEPCON .6

Зарезервований

SEPE

SEPCON .5

Дозвіл  SEP

SEPREN

SEPCON .4

Дозвіл прийому SEP

CLKPOL

SEPCON .3

Полярність тактування SEP

CLKPH

SEPCON .2

Фаза тактування SEP

SEPS1

SEPCON .1

Біт 1 вибору швидкості

SEPS0

SEPCON .0

Біт 2 вибору швидкості

Таблиця 3 – програмування режимів роботи  SEP

CLKPOL

CLKPH

Режим  SEP

0

0

SEPMODE0

0

1

SEPMODE1(тільки передача)

1

0

SEPMODE2

1

1

SEPMODE3(тільки передача)

Таблиця 4 – програмування швидкості роботи  SEP

SEPS

SEPS2

Швидкість  SEP

0

0

FOSC/12

0

1

FOSC/24

1

0

FOSC/48

1

1

FOSC/96

Рисунок 9 – Режими роботи SEP

Регістр WDTRST послідовно два байти - 01ЕН і 0А6Н. Відзначимо, що в WDTRST можна тільки записувати інформацію, засоби читання його вмісту відсутні.

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

Коли 8XC51GB переводиться в режим мікроживлення, відбувається зупинка внутрішнього тактового генератора. HWDT при цьому також зупиняється. Вивести контролер з режиму мікроживлення можливо скиданням або викликом зовнішнього переривання, якщо воно дозволеного. При першому способі  HWDT скидається. У другому випадку при старті тактового генератора вміст лічильника HWDT продовжить збільшуватися.  Оскільки для нормального запуску тактового генератора необхідно час, який дорівнює близько двох десятків його періодів, рекомендується подавати тривалість імпульсу зовнішнього переривання, що виводить контролер з режиму мікроживлення, не меншою двох десятків періодів генератора.

 Програма обробки переривання почне виконуватися тільки після переходу рівня сигналу зовнішнього переривання в одиницю, коли частота генерації стабілізується. Тоді ж і почнеться інкрементування лічильника HWDT, тобто поки сигнал переривання має нульовий рівень, HWDT не працює.
 У режимі холостого ходу тактовий генератор контролера не відключається. Внаслідок цього вміст лічильника HWDT безперервно збільшується, і для запобігання повторного скидання необхідно використовувати таймерні переривання, за яким буде відбуватися вихід з цього режиму, скидання лічильника сторожового таймера і повернення в режим Idle.

  1.   UART мікроконтролерів сімейства 8052

Прийомопередавач мікро-ЕОМ сімейства 8052 в цілому ідентичний прийомопередавачу 8051 – ті ж чотири режими роботи, але відрізняються кількістю передаваємих  біт інформації, швидкістю передачі, умовами встановлення прапорців переривань RI або ТІ після прийому або передачі байта інформації. UART мікроконтролера  8052 має ряд відмінностей.

Перша відмінність прийомопередавача - можливість роботи в режимах 1 і 3 не тільки від таймера 1, але й від таймера 2. Завдяки цій можливості розробник при необхідності може використовувати різні між собою швидкості прийому і передачі без переналаштування таймерів.

Наступною відмінністю прийомопередавача 8052 є наявність в ньому пристрою детектування помилок формату (Framing Error Detection). Цей пристрій дозволяє послідовному порту перевіряти правильність стоп-бітів в режимах 1, 2 або 3. Втрата стоп-біта може виникнути, наприклад, через шуми на лініях зв’язку або через одночасну передачу інформації двома процесорами багато – процесорної  системи.

Якщо біт зупинки втрачений, встановлюється біт помилки формату (FE). Цей біт може бути перевірений програмно після кожного прийому для виявлення помилок зв'язку. Будучи встановленим, біт помилки формату може бути скинутий тільки програмним шляхом. Якщо після встановлення біта помилки формату, він не був скинутий програмно, а в наступному циклі обміну інформацією отриманий байт даних має правильний стоп-біт, скидання біта помилки формату автоматично не відбудеться.

FE біт розташований в SCON і ділить одну адресу з SM0. Біт управління SMOD0 в регістрі PCON (PCON.6) визначає, до якого біту звертається мікроконтролер - до SM0 або до FE. Якщо SMOD0 має низький рівень, то мікроконтролер звертається до SM0. Якщо SMOD0 = 1 - до FE.

Третьою  відзнакою прийомопередавача 8052 від 8051 є автоматичне розпізнавання адреси. Автоматичне розпізнавання адреси зменшує час, необхідний мікроконтролеру на обслуговування послідовного порту. Оскільки в цьому випадку CPU не переривається при отриманні адресного байта, відмінного від своєї власної адреси, затрати CPU на порівняння адрес виключаються.  При цьому прапорець переривання від приймача (RI) встановлюється тільки тоді, коли отриманий адресний байт збігається з індивідуальною або з широкомовною адресою.

Цю відмінність прийомопередавача 8052 можна використовувати в багато - мікропроцесорних системах наступним чином. Коли ведучий процесор хоче передати блок даних одному або декільком підлеглим процесорам системи, він спочатку посилає адресний байт, який ідентифікує потрібний підлеглий компонент. Нагадаємо, що в адресному байті 9-й біт встановлений в 1, тоді як в байті даних 9-й біт встановлений в 0. У всіх підлеглих процесорах біти SM2 повинні бути встановлені в 1, тобто робота процесора може бути перервана при прийомі адресного байта. Здатність автоматичного розпізнавання адреси дозволяє забезпечити переривання тільки того підлеглого компонента, до якого адресується ведучий процесор. У цьому режимі, порівняння адрес відбувається апаратно, а не програмно. 

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

Так само, як в 9-бітових режимах 2 і 3, автоматичне розпізнавання адреси функціонує і в 8-бітовому режимі 1. Однак у режимі 1 місце 9-го біта даних займає в RB8 стоп-біт. Якщо SM2 встановлено, то прапорець RI встановлюється тільки в разі, коли отриманий байт відповідає заданим або широкомовному  адресу і супроводжується правильним стоп-бітом. Установка SM2 ніяк не проявляється в режимі 0.

Ведучий процесор може вибірково зв'язуватися і з групами підлеглих процесорів. Адресація до всіх підлеглим відразу або до якої-небудь групи з них можлива при використанні адрес, що зберігаються в двох спеціальних функціональних регістрах SADDR і SADEN.

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

  1.   Послідовні порти в мікроконтролерах різних виробників

Нижче наведені таблиці різних виробників, різних модельних рядів мікроконтролерів з різною кількістю послівних портів. Для прикладу наведено лише декілька мікроконтролерів, щоб показати наявність різної кількості послідовних портів, з повним списком ви можете ознайомитися в літературі.

Таблиця 5 – мікроконтролери фірми Philips

Позначення

Послідовні канали

На базі 6-тактного ядра

8хС524

UART, I2C

8xC576

UART

8xC748

-

8xC751

I2C

На базі ядра 51MX

87C51MB2

2 UART, SPI

87C51MC2

2 UART, SPI

Сімейство SOC5XA

P51XAG1x

2 UART

P51XAC37

UART, SPI, CAN 2.0

P51XAH40

4 UART

Таблиця 6 – мікроконтролери фірми ATMEL

Позначення

Послідовні канали

AT89LS8252

UART, SPI

AT89S51

UART

AT89S4D12

SPI

T89C51IC2

UART, SPI, I2C

AT89C52

UART

TS87C51U2

2 UART

TS83C51U2

2 UART

T89C51CC01

UART, SPI, CAN

Таблиця 7 – мікроконтролери фірми Siemens

Позначення

Послідовні канали

C501G

UART

C505C

UART, CAN

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

C509

2xUART

C517A

2xUART

Таблиця 8 – мікроконтролери фірми Dallas Semiconductor

Позначення

Послідовні канали

DS80C310

UART

DS80C320

2xUART

DS80C520

2xUART

DS80C350

2xUART

Таблиця 9 – мікроконтролери фірми Silicon Laboratories

Сімейство

Послідовні канали

С8051F0xx

SPI, SMBus (I2C), UART

С8051F3xx

SPI, SMBus (I2C), UART

С8051F2xx

SPI, UART

С8051F02x

SPI, SMBus (I2C), 2xUART

С8051F04x

SPI, SMBus (I2C), 2xUART

С8051F06x

SPI, SMBus (I2C), 2xUART

С8051F12x

SPI, SMBus (I2C), 2xUART

С8051F13x

SPI, SMBus (I2C), 2xUART

PAGE   \* MERGEFORMAT 50


 

А также другие работы, которые могут Вас заинтересовать

23047. Регістри та лічильники 1.83 MB
  Виведіть графік залежності вхідних Reset Shift Info та вихідних Q0Q2 цифрових сигналів регістра від часу та поясніть ці залежності. Виведіть відповідні графіки для вхідних та вихідних сигналів та поясніть ці залежності. Джерела пробних сигналів підберіть таким чином щоб регістр послідовно виконав операції: а паралельного запису числа 0101; б перетворення цього числа на послідовний код; в послідовного запису числа 1010; Проведіть моделювання для цієї схеми. Виведіть відповідні графіки для вхідних та вихідних сигналів та поясніть ці...
23048. Імпульсні цифрові схеми 2.62 MB
  Формувачі імпульсів. 1 зображено схему формувача імпульсів на логічних елементах ІНЕ. 1 Недоліком цієї схеми є те що для формування імпульсів досить великої тривалості потрібно використати велику кількість логічних елементв. 2 Для формування імпульсів з синусоїдальної напруги часто застосовується тригер Шмітта рис.
23049. Схеми на операційних підсилювачах. Інвертуюче увімкнення ОП 2.04 MB
  Завдяки своєму високим коефіцієнту підсилення та вхідному опору а також низькому опору вихідному операційні підсилювачі ОП дуже широко застосовуються у схемотехніці особливо в мішаних аналоговоцифрових схемах. Додавши до ОП коло зворотнього звязку можна отримати підсилювач практично з будьяким коефіцієнтом підсилення. Коефіцієнт підсилення такої схеми у межах лінійності ОП рівний Rc Rin. Параметри ОП дозволяють добирати Rc та Rin у широкому діапазоні опорів отримуючи різні коефіцієнти підсилення.
23050. Цифро-аналогові перетворювачі 1.33 MB
  1 зображено схему 4розрядного ЦАП. 1 Лічильник U3A та пробні джерела складають тестову схему яка послідовно подає на вхід ЦАП цифрові коди від 0 0000 до 15 1111. Зростаючий код на виході ЦАП буде перетворюватися на лінійно зростаючу напругу. 2 зображено схему дослідження 8розрядного інтегрального ЦАП.
23051. Ознайомлення з основними можливостями пакета програм автоматизованого проектування електронних схем MicroSim PSPICE 8.0 1.35 MB
  Система автоматизованого проектування MicroSim PSPICE використовує один з найбільш вдалих кодів схемотехнічного моделювання SPICE Simulation Program with Integrated Circuit Emphasis який був розроблений на початку 70х років фахівцями Каліфорнійського університету США. Фактично зазначений код став стандартним для моделювання електронних схем і застосовується також у інших відомих системах моделювання схем зокрема MicroCap а вхідний формат мови завдань SPICE підтримується практично усіма пакетами автоматизованого проектування електронних...
23052. Електронний ключ на біполярному транзисторі 482 KB
  Каскад виконує логічну операцію заперечення оскільки високий рівень напруги на вході забезпечує введення транзистора у режим насичення коли напруга на навантаженні буде низькою. При введенні наведеної вище схеми дослідження ключового каскаду застосовуються джерела сталої напруги живлення VCC та імпульсної вхідної напруги VIN. Перелічимо основні параметри даних джерел: Як джерело сталої напруги живлення застосовується стандартна модель VSRC що міститься у бібліотеці source. Основними є такі її параметри: DC стала напруга що її виробляє...
23053. Електронні ключі на МДН-транзисторах 1.07 MB
  Вважайте що напруга живлення дорівнює 10 В амплітуда вхідного імпульсу 10 В тривалість цього імпульсу 500 нс його період 1000 нс. Тривалості фронту і спаду імпульсу задайте дуже малими наприклад по 0. Поясніть зміни у тривалості спаду вихідного імпульсу та рівні напруги логічного нуля на виході. Параметри джерел вважайте такими: напруга живлення 20 В амплітуда вхідного імпульсу 20 В тривалість цього імпульсу 500 нс його період 1000 нс.
23054. Базовий елемент транзисторно-транзисторної логіки (ТТЛ) 1016 KB
  Насправді опором навантаження для виходу ТТЛсхеми звичайно є вхідний опір наступної ТТЛсхеми. Оскільки у реальних ситуаціях на один вихід треба під’єднувати досить багато входів важливим є такий параметр схеми як навантажувальна здатність тобто максимальна кількість входів яку можна навантажити на вихід без втрати працездатності схеми. Оскільки транзистори в даній схемі працюють у режимах насичення та відсікання має місце досит значна інерційність схеми потрібен певний час для переведення транзисторів з одного граничного стану в...
23055. Моделювання цифрових логічних схем 178.5 KB
  Перелічимо деякі логічні ІМС 74ї серії: 74x00 базовий елемент 2ІНЕ 74x10 логічний елемент 3ІНЕ 74x20 логічний елемент 4ІНЕ 74x30 логічний елемент 8ІНЕ 74x02 логічний елемент 2АБОНЕ 74x27 логічний елемент 3АБОНЕ 74x08 логічний елемент 2І 74x32 логічний елемент 2АБО 74x04 інвертор логічний елемент НЕ 74x51 логічний елемент 2І2АБОНЕ 74x86 логічний елемент Виключне АБО на 2 входи Пакет OrCAD дозволяє провести суто цифрове моделювання для даного вузла схеми якщо до цього вузла під’єднані лише входи та виходи...