Wbudowane układy komunikacyjne cz. 1 Wykład 10
Wbudowane układy komunikacyjne UWAGA Nazwy rejestrów i bitów, ich lokalizacja itd. odnoszą się do mikrokontrolera ATmega32 i mogą być inne w innych modelach! Ponadto jeśli nie jest napisane inaczej, włączenie funkcji za pomocą zmiany wartości bitu jest równoważne z ustawieniem jego wartości na 1. 2
SPI SPI 3
SPI SPI (Serial Peripheral Interface) jest trójprzewodową, szeregową magistralą komunikacyjną pracującą w trybie full duplex Umożliwia wzajemną komunikację mikrokontrolerów AVR oraz innych układów z interfejsem SPI W przypadku mikrokontrolerów AVR piny SPI są wykorzystywane w procesie programowania układu 4
SPI - topologia W danej chwili w magistrali może funkcjonować jeden MASTER i dowolna liczba układów SLAVE Zwykle wykorzystuje się połączenia 1-1 Magistrala posiada mechanizmy detekcji kolizji Brak weryfikacji odebrania danych 5
SPI implementacja w AVR 6
SPI topologia 7
SPI topologia MOSI - (ang. Master Output Slave Input) - dane dla układu peryferyjnego MISO - (ang. Master Input Slave Output) - dane z układu peryferyjnego SCK - (ang. Serial ClocK) - sygnał zegarowy (taktujący) SS aktywacja układu 8
SPI schemat komunikacji 9
SPI schemat komunikacji CPOL=0 bazowa wartość zegara: 0 CPHA=0 dane są przechwytywane na zboczu narastającym, a propagowane na zboczu opadającym CPHA=1 dane są przechwytywane na zboczu opadającym, a propagowane na zboczu narastającym CPOL=1 bazowa wartość zegara: 1 CPHA=0 dane są przechwytywane na zboczu opadającym, a propagowane na zboczu narastającym CPHA=1 dane są przechwytywane na zboczu narastającym, a propagowane na zboczu opadającym 10
SPI piny Pin Kierunek (MASTER SPI) Kierunek (SLAVE SPI) MOSI Definiuje użytkownik Wejście MISO Wejście Definiuje użytkownik SCK Definiuje użytkownik Wejście SS Definiuje użytkownik Wejście 11
SPI pin SS Tryb SLAVE Musi być zawsze skonfigurowany jako wejście 1 slave nieaktywny 0 slave aktywny Tryb MASTER Skonfigurowany jako wyjście steruje urządzeniem SLAVE (patrz wyżej) Skonfigurowany jako wejście + 1 jak wyżej Skonfigurowany jako wejście + 0 do magistrali podłączony jest inny układ MASTER i dotychczasowy MASTER staje się SLAVE 12
Moduł SPI - rejestry SPCR rejestr kontrolny SPI: SPIE przerwanie zgłaszane przez SPI włączone SPE moduł SPI włączony DORD porządek danych (1 pierwszy LSB, 0 pierwszy MSB) MSTR tryb (1 MASTER, 0 SLAVE) CPOL polaryzacja zegara (patrz: schemat komunikacji) CPHA faza zegara (patrz: schemat komunikacji) 13
Moduł SPI - rejestry SPCR c.d.: SPR1, SPR0 preskaler SCK SPI2X SPR1 SPR0 Częstotliwość SCK 0 0 0 f_osc/4 0 0 1 f_osc/16 0 1 0 f_osc/64 0 1 1 f_osc/128 1 0 0 f_osc/2 1 0 1 f_osc/8 1 1 0 f_osc/32 1 1 1 f_osc/64 14
Moduł SPI - rejestry SPSR rejestr statusu SPI: SPIF flaga przerwania od SPI WCOL flaga kolizji podczas zapisu SPI2X podwojenie prędkości transmisji w trybie MASTER SPDR rejestr wymiany danych (nadawanie/odbiór) 15
TWI TWI 16
TWI - informacje ogólne TWI (Two Wire Interface) to synchroniczna dwukierunkowa magistrala szeregowa o zwyczajowej nazwie I2C Dwie linie: SCL i SDA W normalnej konfiguracji do magistrali może być podłączony jeden master i określona liczba urządzeń podrzędnych (liczba zależna od przestrzeni adresowej) Występuje w wariancie 3V3 i 5V 17
TWI - informacje ogólne Każde urządzenie posiada jeden adres dla operacji zapisu i drugi dla operacji odczytu. Zwykle adresy te różnią się o 1: do zapisu kończy się 0, do odczytu 1. Wiele urządzeń obsługujących I2C posiada możliwość sprzętowej modyfikacji jednego lub kilku bitów adresu (tych samych dla operacji odczytu i zapisu) 18
TWI - wersje Generyczna prędkość transmisji 100 kbps 7-bitowa przestrzeń adresowa 1.0 prędkość transmisji 400 kbps (Fast Mode) rozszerzenie u o możliwość adresowania 10-bitowego 2.0 prędkość transmisji 3,4 Mbps (High Speed Mode) Zwiększenie zakresu tolerancji napięcia w stanie wysokim: 2,3 5,5 V 19
TWI topologia 20
TWI transmisja 21
TWI transmisja schemat ogólny START Adres ACK Bajt danych ACK Bajt danych NACK STOP 22
TWI zapis Zapis danych START Wyślij adres urządzenia dla zapisu Wyślij adres pierwszego rejestru, który ma być zapisany Wyślij dane STOP 23
TWI odczyt Odczyt danych START Wyślij adres urządzenia dla zapisu Wyślij adres pierwszego rejestru, który ma być odczytany START Wyślij adres urządzenia dla odczytu Odczytaj dane STOP 24
TWI implementacja w AVR Praca jako MASTER lub SLAVE Moduł rozpoznawania adresu (w trybie SLAVE) może wybudzać procesor nawet z głębokiego uśpienia TWI może być źródłem przerwania (dość niski priorytet) 25
TWI implementacja w AVR 26
Moduł TWI - rejestry TWBR konfiguracja prędkości transmisji f SCL fcpu 16 2 TWBR 4 TWPS TWCR: TWINT: 1 flaga przerwania po zakończeniu wykonywania operacji TWEA: 1 wyślij bit ACK 27
Moduł TWI - rejestry TWCR c.d.: TWSTA: 1 wyślij START (w trybie MASTER) TWSTO: 1 wyślij STOP (w trybie MASTER) TWWC: flaga kolizji przy zapisie TWEN: 1 włączenie modułu TWI TWIE: 1 włączenie przerwania po zakończeniu wykonywania operacji 28
Moduł TWI - rejestry TWSR TWS3..7: status magistrali TWPS1 i TWPS0: preskaler magistrali TWPS1 TWPS0 Preskaler 0 0 1 0 1 4 1 0 16 1 1 64 29
Moduł TWI - rejestry TWDR: rejestr danych TWAR rejestr adresu (tryb SLAVE): TWA0..6: adres TWGCE: 1 włączenie rozpoznawania adresu 30