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

Розряд 2 - CPHA. Фаза синхронізації. Значення біта фази синхронізації (CPHA) визначає по якому фронту SCK відбувається вибірка даних. У таблиці 49 узагальнена дія біта CPHA.

Таблиця 49 - Результат дії біта CPHA

CPHA

Передній фронт

Задній фронт

0

Вибірка

Установлення

1

Установлення

Вибірка

Комбінація бітів CPHA й CPOL задає чотири можливих режими послідовної передачі даних.

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

Розряди 1, 0 - SPR1, SPR0. Біти вибору частоти синхронізації SPI. Дані біти задають частоту синхронізації на виводі SCK у режимі майстра. SPR1 і SPR0 ніяк не впливають в режимі підпорядкованого. Зв'язок між змістом бітів SPR1, SPR0 і частотою SCK представлений у таблиці 50.

Таблиця 50 - Зв'язок між умістом бітівSPR1, SPR0 і частотою SCK

SPI2X

SPR1

SPR0

Частота SCK

0

0

0

fosc /4

0

0

1

fosc /16

0

1

0

fosc /64

0

1

1

fosc /128

1

0

0

fosc /2

1

0

1

fosc /8

1

1

0

fosc /32

1

1

1

fosc /64

Призначення бітів регістра статусу SPSR представлені в таблиці 51.

Таблиця 51 - Призначення бітів регістра статусу SPSR

№ біта

Ім'я

Призначення

7

SPIF

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

6

WCOL

Прапорець повторного записування

5 – 1

Зарезервовані біти

0

SPI2X

Вибір частоти синхронізації SPI біт 0

Розряд 7 - SPIF. Прапорець переривання по SPI. Прапорець SPIF установлюється після завершення послідовної передачі. Переривання генерується в тому випадку, якщо встановлено біт SPIE у регістрі SPCR і дозволені загальні переривання. Якщо SS настроєний як вхід і до нього прикладений низький рівень, то, якщо SPI перебував у режимі майстра, також установиться прапорець SPIF.

Розряд 6 - WCOL. Прапорець повторного записування. Біт WCOL установлюється, якщо виконано записування до регістру даних SPI (SPDR) під час передачі даних.

Розряди 5..1 - Res. Зарезервовані біти.

Розряд 0 - SPI2X. Біт подвоєння швидкості SPI. Якщо в даний біт записати лог. 1, то швидкість роботи SPI (частота SCK) подвоїться, якщо SPI перебуває в режимі майстра.

Регістр даних SPI має доступ на зчитування і записування і призначений для обміну даними між файлом регістрів (r0...r31) і зсувним регістром SPI. Записування до даного регістру ініціює передачу даних. Під час зчитування даного регістра фактично зчитується вміст приймального буфера зсувного регістра. Структура регістра даних SPI - SPDR наведена в таблиці 52.

Таблиця 52 - Регістр даних SPI – SPDR

Розряд

7

6

5

4

3

2

1

0

Ст.

розряд

Мол.

розряд

SPDR

Зчитування/

записування

Зч. /

Зп

Зч. /

Зп

Зч. /

Зп

Зч. /

Зп

Зч. /

Зп

Зч./

Зп

Зч./

Зп

Зч. /

Зп

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

x

x

x

x

x

x

x

x

Приклад конфігурації послідовного периферійного інтерфейсу - SPI мікроконтролера ATmega128

Настроїти послідовний периферійний інтерфейс на передачу п'яти байт даних у режимі майстер.

1. Запишемо стан регістра керування SPCR за заданої умови.

Регістр керування SPCR буде мати наступний варіант установок згідно таблиці 53: дозвіл переривання SPI, запуск, порядок зсування даних убік молодших розрядів, режим ведучого, SCK має низький рівень у стані очікування, вибірка даних по задньому фронту.

Таблиця 53 - Варіант установок регістра керування SPI – SPCR

SPIE

SPE

DORD

MSTR

CPOL

CPOL

SPR1

SPR0

1

1

1

1

0

0

1

0

2. Запишемо стан регістра статусу SPSR.

У регістрі статусу встановимо біт подвоєння швидкості передачі в стан логічного 0, що значитиме нормальну швидкість передачі згідно таблиці 54.

Таблиця 54 - Регістр статусу SPSR

SPIF

WCOL

SPI2X

0

Програма

void InitPorts(void);

void InitADC(void);

void InitSPI(void);

int adch, adcl,i;

void InitPorts(void)

{ DDRF=0x00;

DDRB=0x07;

}

void InitADC(void)

{ADMUX=0x40;

ADCSRA=0xfd;

}

void InitSPI(void)

{SPCR=0xdb;

SPDR=adch;

}

SIGNAL(SIG_ADC)

{adch=ADCH;

adcl=ADCL;

}

SIGNAL(SIG_SPI)

{ cli();

switch (i)

{case 0:

SPDR=adch;

i=1;

break;

case 1:

SPDR=adcl;

i=0;

break;

}

sei();

}

void main (void)

{ InitPorts();

InitADC();

InitSPI();

sei();

while(1){}

}

V PF0 VSS SLIDER_1(0 5) ;x: Panel sliders 1 - 3

 .PLOT V(PB0) V(PB1) V(PB2)

Висновок: на  цій лабораторній роботі ядослідила принцип побудови, освоїла методику конфігурації й особливості застосування послідовного периферійного інтерфейсу - SPI мікроконтролера ATmega128

Лабораторна робота № 6

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

Мета роботи: дослідити принцип побудови, освоїти методику конфігурації й особливості застосування синхронно-асинхронного послідовного приймача-передавача мікроконтролера ATmega128

Завдання до лабораторної роботи

2 варіант

Передати масив із семи 6-розрядних слів. У структуру посилки включити перевірку паритету на непарність і два стоп-біти.

Теоретичні основи

Універсальний синхронно-асинхронний послідовний приймач-передавач (УСАПП, USART) призначений для організації гнучкого послідовного зв'язку між двома або декількома мікроконтролерами.

Відмінні риси:

*  - повнодуплексна робота (окремі регістри прийому й передачі);

*  - асинхронна або синхронна робота;

*  - ведуче або підпорядковане тактування зв'язку в синхронному режимі роботи;