Послідовний зовнішній інтерфейс Motorola DSP56F827. Програмна модель.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2003
Тип роботи:
Розрахункова робота
Предмет:
Проектування вбудованих комп’ютерних систем
Група:
СКС

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра електронних обчислювальних машин Розрахункова робота №2 з курсу: “Проектування вбудованих Комп’ютерних систем” на тему: “Послідовний зовнішній інтерфейс Motorola DSP56F827. Програмна модель.” Контролер переривань Вступ Модуль послідовного зовнішнього інтерфейсу (Serial Peripheral Interface (SPI)) надає можливість дуплексного, синхронного послідовного з’днання між DSP та пепиферійними причтроями. Мікропрограма може опитувати ознаки стану чи роботи SPI а також може керувати ним за допомогою переривань. Цей блок вміщає 4 16-бітові масковані регістри для параметрів контролю, стану та переміщення даних. Чотири регістри керують та відображають роботу SPI. Доступ до цих регістрів може вестися тільки 16-розрядним словом. Робота зі словом іншої довжини може привести до невизначениз результатів. Адреса регістру є сумою базової адреси та адреси зміщення. Базова адреса визначена на рівні MCU, а адреса зміщення визначена на рівні модуля Загальна характеристика регістрів Послідовний зовнішній інтерфейс має такі чотири регістри • SPI Status and Control Register (SPSCR) • SPI Data Size Register (SPDSR) • SPI Data Receive Register (SPDRR) • SPI Data Transmit Register (SPDTR) Адрес Використання  SPI0_BASE + $0 SPI SPI Status and Control Register (SPSCR)  SPI1_BASE +$0 SPI SPI Status and Control Register (SPSCR)  SPI_BASE + $1 SPI SPI Data Size Register (SPDSR)  SPI_BASE + $2 SPI SPI Data Receive Register (SPDRR)  SPI_BASE + $3 SPI SPI Data Transmit Register (SPDTR)   Регістр стану та керування (SPI Status and Control Register (SPSCR)) SPSCR виконує таке: • Вмикає запити переривання модуля SPI module interrupt requests • Вибирає запити переривання кристалу • Конфігурує модуль SPI як головний чи підлеглий • Вибирає полярність, фазу Serial Clock та подільник частоти для головного SPI • Реогує на ознаку переповнення регістру даних • При невідповідності логічних рівнів на виводі SS видає помилку • Ознаку пустого регістру передачі даних SPI_BASE+$0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  Читання  DSO SPRF ERRIE OVRF MODF SPTE MOD FEN SPR1 SPR0 SPRIE SPMSTR CPOL CPHA SPE SPTIE  Запис                   11 Зарезервований — Біт 15 Зарезервований біт не може змінюватися. Читається як нуль Порядок зсуву даних - Data Shift Order (DSO)—Біт 14 Біт з повним доступом визначеє котрий біт відправляється ви одержується першим: MSB чи LSB. Обидва : головний та підлеглий SPI модулі потребують відправки і одержання пакетів однакової довжини. Незважаючи, як цей біт встановлені коли читається з SPDRR чи записується до SPDTR, LSB завжди буде в положенні нуля, а MSB в правильній бітовій позиції. Коли дані менші за 16 If the data length is less than 16 bits, дані розширюються старшими розрядами. • 1 = LSB відправляється першим (LSB > MSB) • 0 = MSB відправляється першим (MSB > LSB) Переповнення одержувача - SPI Receiver Full (SPRF)— Біт 13 Ознака тільки для читання встановлюється щоразу, пакер повної довжини вілправляється з регістру зсувів до регісте приймання даних. SPRF генерує переривання якщо SPRIE біт також встановлений. Автоматично очищається після прочитання SPDRR. • 1 = Регістр одержання даних заповнений • 0 = Регістр одержання даних не заповнений Ввімкнення переривань помилки - Error Interrupt Enable (ERRIE)—Біт 12 Біт з вільним доступом дозволяє бітам MODF та OVRF генерувати DSP запити на переривання Скид очищає ERRIE біт. • 1 = MODF і OVRF можуть генерувати DSP запити на переривання • 0 = MODF і OVRF не можуть генерувати DSP запити на переривання Переповнення - Overflow (OVRF)—Біт 11 Біт тільки для читання. Встановлений коли програма не прочитала даних з регістру прийому даних, покинаступні дані не заповнили регістр. За умови переповнення (OVRF) , Дані в регістрі-одержувачі застарілі а дані в регістрі зсуву втрачені. Очищується OVRF читанням регістру стану та управління SPI з встановленим OVRF а потім читанням регістра одержувача даних. • 1 = Переповнення • 0 = Нема переповнення 11 Помилка режиму - Mode Fault (MODF)—Біт 10 Ознака тільки для читання встановлена в підлеглому SPI якщо вивід SS в стані одиниці впродовж передачі з встановленим бітом MODFEN . В головному SPI Mode Fault (MODF) tознака встановлюється якщо вивід SS на рівні нулябудь коли, коли встановлений бітMODFEN . Очищеється MODF записом одиниці до MODF коли він встановлений. • 1 = SS в неправильному логічному рівні • 0 = SS в правильному логічному рівні Пустий відправник - SPI Transmitter Empty (SPTE)—Біт 9 Ознака тільки для читання. Встановлюється щоразу, коли регістр передачі даних передає пакет повної довжини до регістру зсуву. SPI Transmitter Empty (SPTE) генерує переривання якщо SPTIE біт також встановлений. Не записувати до регістру даних SPI доки SPTE біт в стані одиниці тому що дані можуть бути втрачені • 1 = Регістр передачі даних пустий • 0 = Регістр передачі даних не пустий Включення помилки режиму - Mode Fault Enable (MODFEN)—Біт8 Біт з повним доступом дозволяє MODF ознаці бути встановленою коли сам встановлений. Коли MODF встановлений, скид Mode Fault Enable (MODFEN) не скидає MODF ознаки. Коли MODFEN на рівні нуля, рівень виводу SS не вприває на роботу ввімкненого SPI сконфігурованого як головний. Для SPI в режимі підлеглого, низикий рівень MODFEN тільки утримує MODF ознаку від встановлення. Він не впливає на роботу SPI. 11 Вибір швидкості - SPI Baud Rate Select (SPR1 і SPR0)—Біти 7- 6 В режимі головного ці біти з повним доступом вибирають одну з чотирьох швидкостей передачі даних. SPI Baud Rate Select (SPR1 і SPR0) не мають впливу на пежим підлеглого. Скиз очищує SPR1 та SPR0. Швидкість передачі визначається за такою формулою SPR1:SPR0 Подільник швидкості (BD)  00 2  01 8  10 16  11 32   Швидкість передачі = clk/ BD clk= IPBus clock BD = подільник швидкості Переривання відправлення - SPI Receiver Interrupt Enable (SPRIE)—Біт 5 Біт з повним доступом генерує переривання через SPRF біт. SPRF встановлюється коли дані повної довжини передалися з регістру зсуву до регістра одержувача. • 1 = SPRF DSP запити на переривання дозволяються • 0 = SPRF DSP запити на переривання забороняються Режим роботи - SPI Master (SPMSTR) — Біт 4 біт з повним доступом вибитає роботу в режимі головного чи підлеглого • 1 = режим головного • 0 = режим підлеглого 11 Полярність таймера - Clock Polarity Bit (CPOL)—Біт 3 Біт з повним доступом визначає логічний стан SCLK виводу між переміщеннями. Щоб пермістити дані між двома SPI модулями, вони повинні мати однакові значення CPOL. • 1 = Зростаючий фронт SCLK розпочинає передачу • 0 =Спадаючий фронт SCLK розпочинає передачу Фаза таймера - Clock Phase Bit (CPHA)—Bit 2 Біт з повним доступом керує синхронізацією між таймером та даними SPI. Для переміщення даних між модулями SPI, вони повинні мати однакові значення CPHA. Коли CPHA = 0, SS вивід SPI модуля режиму підлеглого повинен були встановлений в одиницю між переміщенням даних повної довжини. Ввімкненя SPI Enable (SPE)—Bit 1 Біт з повним доступом для ввімкнення SPI. Очищення SPI Enable (SPE) спричиняє часткове перевантаження SPI. • 1 = SPI ввімкнений • 0 = SPI вимкнений Дозвіл переривань передачі - SPI Transmit Interrupt Enable (SPTIE)—Bit 0 Біт з повним доступом дозволяє запити переривань генеровані SPTE бітом. SPTE встановлений коли повний пакет даних переданий з регістру передачі даних до рнгістру зсуву. • 1= SPTE дозволені переривання • 0 = SPTE заборонені переривання Драйвер послідовного зовнішнього порту Код для створення та ініціалізації SPI драйвера автоматично включається проект вставкою такого рядка в файл appconfig.h : #define INCLUDE_SPI В файлі spi.h знаходиться така інформація int open(const char *pName, int OFlags, &SpiParams); ssize_t write(int FileDesc, const void * pBuffer, size_t Size); ssize_t read(int FileDesc, void * pBuffer, size_t Size); int close(int FileDesc); UWord16 ioctl(int FileDesc, UWord16 Cmd, void * pParams);: typedef struct { bool bSetAsMaster; UWord16 TransmissionSize; void (* pSlaveSelect)(void); void (* pSlaveDeselect)(void); } spi_sParams; BSetAsMaster Bool Встаноллює SPI в режим головного коли True і в режим підлеглого коли False  TransmissionSize UWord16 Встановлює розміри передачі від 2 до 16 біт  (* pSlaveSelect)(void) Void Вказівник на функцію що запускає SS. Якщо NULL, приймається SS по замовчуванню (Port B pin 5).  (* pSlaveDeselect)(void) Void Вказівник на функцію, що вимикає SS. Якщо NULL, використовується позамовчуванню (Port B pin 5)   int open(const char *pName, int OFlags, &SpiParams); PName in Назва пристрою SPI . Використовується BSP_DEVICE_NAME_SPI_0.  Oflag In Ознаки режиму відкриття. Ігноруються.  SpiParams In Структура заних, описана вище. Повинна бути заповненна перед передачею.  FileDesc Out Дескриптор на пристрій SPI повертається після виклику open та використовується викликів функцій read/write/ioctl.   Опис: виклвик open відкриває SPI для роботи та поверп\тає дескриптор що може використовуватися для викликів функцій read, write, close, and ioctl function calls. Повертає: Функція open повертає тип int. Коли виклик пройшов успішно , змінна - дескриптор на SPI ."-1" повертається коли не успішно. ssize_t write(int FileDesc, const void * pBuffer, size_t Size); FileDesc in SPI дескриатор, що повертається функцією open  pBuffer in Вказівник на буфер користувача  Size in Розмір даних запису/читанняSize of data to read/write   Опис: виклик write записує дані з буферу користувача до SPI . Повертає: тип ssize_t. Ця змінна є числом переданих слів, котрі визначені як розміл вхідних даних. ssize_t read(int FileDesc, void * pBuffer, size_t Size); FileDesc in SPI дескриатор, що повертається функцією open  pBuffer in Вказівник на буфер користувача  Size In Розмір даних запису/читанняSize of data to read/write   Опис: виклик write читає дані з SPI до буферу користувача . Повертає: Виклик read повертає тип ssize_t. Коли SPI є в режимі головного функція повертає тільки одне слово. Це слово є останнім словом , що прочиталося з впродовж останнього запису на пристрій SPI. Коли SPI в режимі “Slave” , функція повертає Size слів. int close (int FileDesc); FileDesc in SPI дескриптор, що повертається функцією open   Опис: Виклик close закриває SPI звільняє маніпулятор дескриатора Повертає: Виклик close повертає тип int; Завжди 0. Приклад викопистання #include "port.h" #include "io.h" #include "fcntl.h" #include "bsp.h" #include "spi.h" void main(void) { spi_sParams SpiParams; int SerialMaster; UWord16 Data = 0x1234; SpiParams.pSlaveSelect = NULL; /* По замовчуванню використовується PortB GPIO Pin 5 для перемикання SS */ SpiParams.pSlaveDeselect = NULL; /* По замовчуванню використовується PortB GPIO Pin 5 для перемикання SS */ SpiParams.bSetAsMaster = 1; /* Встановити пристрій SPI в режим головного */ SpiParams.TransmissionSize = 0x000F; /* Встановити розмір передачі в 16 біт */ /* відкрити SPI драйвер */ SerialMaster = open(BSP_DEVICE_NAME_SPI_0, 0, &SpiParams); /* Записати “Data” до пристрою */ write(SerialMaster, (UWord16 *)(&Data), sizeof(UWord16)); /* Закрити драйвер */ close(SerialMaster); } Блок-схема
Антиботан аватар за замовчуванням

24.03.2013 20:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!