Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
222.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
412 Кб
Скачать
☆

1.5.5 Застосування протоколу spi

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

17

Рисунок 1.24 - Типове з'єднання ведучого й веденого SPІ

На рисунку показане типове з'єднання двох мікроконтролерів. Головний мікроконтролер (процесор 1) ініціалізує передачу, формуючи тактовий сигнал SCK. Дані зсуву по встановленому бітом SMP фронті тактового сигналу. Для одночасного прийому/передачі даних (фіктивних даних) обидва мікроконтролери повинні мати однакову полярність тактового сигналу (біт CKP).

Модуль ведучого синхронного послідовного порту (MSSP) може використовуватися для зв'язку з периферійними мікросхемами або іншими мікроконтролерами. Модуль MSSP може працювати в одному із двох режимів:

  • послідовний периферійний інтерфейс (SPІ);

  • Іnter-Іntegrated Cіrcuіt (І2C).

В SPІ режимі можливі одночасний синхронний прийом і передача 8- розрядних даних.

Модуль MSSP складається із прийомного/передавального регістра зсуву (SSPSR) і буферного регістра (SSBUF). У регістрі SSPSR виконується зсув даних з/у мікроконтролер старшим бітом уперед. У регістрі SSPBUF зберігаються записані дані, поки не будуть отримані нові. Прийнявши 8 біт даних у регістр SSPSR вони записуються в SSPBUF, встановлюється в '1' прапорець повного прийомного буфера BF (SSPSTAT<0>) і прапорець переривання SSPІ. Подвійна буферизація прийнятих даних дозволяє приймати наступний байт до читання попереднього. Будь-який запис у регістр SSPBUF під час виконання операції прийому/передачі даних буде ігнорований, при цьому встановлюється в '1' прапорець WCOL (SSPCON<7>). Користувач повинен програмно скинути біт WCOL в '0', щоб була можливість перевірки виконання запису в регістр SSPBUF. При прийманні даних у режимі SPІ регістр SSPBUF повинен бути прочитаний до моменту закінчення прийому наступного байта. Біт статусу прийомного буфера BF (SSPSTAT<0>) вказує на одержання нового байта даних. Біт BF апаратно скидається в '0' при читанні регістра SSPBUF. Прийняті дані можуть бути недостовірними, якщо режим SPІ використовується тільки для передачі даних. Переривання від модуля MSSP використовуються для визначення завершення прийому/передачі даних (у підпрограмі обробки переривань необхідно прочитати/записати регістр SSPBUF). Якщо не планується використовувати переривання від модуля MSSP, то необхідно передбачити програмну перевірку виконання запису в регістр SSPBUF для передачі даних. Приклад Завантаження даних у регістр SSPBUF(SSPSR):

BCF

STATUS,

RP1

;Банк 1

BSF

STATUS,

RP0

LOOP

BTFSS

SSPSTAT,

BF

;Дані прийняті?

GOTO

LOOP

;Немає

BCF

STATUS,

RP0

;Банк 0

MOVF

SSPBUF,

W

;Завантажити в W значення з SSPBUF

MOVWF

RXDATA

;Якщо необхідно, зберегти значення в пам'яті

MOVF

TXDATA,

W

;Завантажити в W значення з TXDATA

MOVWF

SSPBUF

;Передати нові дані

Рисунок 1.25 - Структурна схема модуля MSSP в SPІ режимі

Режим ведучого SPІ. Ведучий може ініціалізувати передачу даних у будь-який момент, оскільки він генерує тактовий сигнал, і визначає, коли ведений (процесор 2) повинен передати дані відповідно до використовуваного протоколу.

У режимі ведучого дані передаються/прийняті після їхнього запису/читання з регістра SSPBUF. Якщо в SPІ режимі потрібно тільки приймати дані, вивід SDO може бути заблокований (настроєний як вхід). Дані з виводу SDІ послідовно зсуваються в регістр SSPSR із встановленою швидкістю. Кожний прийнятий байт завантажується в регістр SSPBUF (як нормально отриманий байт) з формуванням переривань і впливом на відповідні біти статусу. Ця функція може бути корисна при реалізації "монітора шини".

Для коректної роботи послідовного порту біти регістрів TRІS повинні бути налаштовані наступним чином:

  • SDІ, відповідний біт TRІS повинен бути встановлений в '1';

  • SDO, відповідний біт TRІS повинен бути скинутий в '0';

  • SCK (ведучий режим), відповідний біт TRІS повинен бути скинутий в '0';

  • SCK (ведений режим), відповідний біт TRІS повинен бути встановлений в '1';

  • -SS, відповідний біт TRІS повинен бути встановлений в '1'.

Будь-яка небажана функція послідовного порта може бути виключена, налаштовуючи відповідні біти регістрів напрямку даних TRІS. Наприклад, якщо в режимі ведучого SPІ виконується тільки передача даних, то виводи SDІ й -SS можуть використовуватися як цифрові виходи, скинувши відповідні біти TRІS в '0'.Фрагмент ініціалізації модуля MSSP в режимі SPI, передача та прийом даних наведено у додатку Д.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]