Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Interfejsy synchroniczne
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
2
Interfejsy synchroniczne
Interfejsy można podzielić na synchroniczne (oddzielna linia zegara), np. I2C, SPI oraz asynchroniczne, np. CAN W rozwiązaniach synchronicznych zmiana częstotliwości zegara w trakcie transmisji danych nie wpływa na jej jakość Zygmunt Kubiak
3
Interfejsy synchroniczne
Transmisja synchroniczna Zazwyczaj jeden z węzłów pełni funkcje master’a – zarządza transmisją (inicjuje) i generuje zegar Zygmunt Kubiak
4
Interfejsy synchroniczne
Zygmunt Kubiak
5
Interfejsy synchroniczne I²C
Magistrala I2C (ang. Inter IC) opracowana została na początku lat 80-tych w firmie Philips jako lokalny synchroniczny interfejs szeregowy (początkowo dla sprzętu audio-wizualnego), służący do wymiany danych pomiędzy układami scalonymi danego systemu. M Zygmunt Kubiak
6
Interfejsy synchroniczne I²C
Magistrala łączy układy programowalne Zygmunt Kubiak
7
Interfejsy synchroniczne I²C
Przykładowa sieć I²C (IIC - Inter Integrated Circuit) Zygmunt Kubiak
8
Interfejsy synchroniczne I²C
Magistrala I2C składa się z dwóch linii sygnałowych : SDA (serial data) - do przesyłania danych i SCL (serial clock) - do przesyłania sygnału taktującego, oraz linii masy. Obydwie linie magistrali I2C są liniami dwukierunkowymi. Dzięki przemyślanej konstrukcji magistrali I2C może być do niej podłączonych wiele układów Zygmunt Kubiak
9
Interfejsy synchroniczne I²C
Dzięki zastosowaniu tranzystorów z otwartym drenem w stopniu wyjściowym („suma na drucie”) możliwe jest podłączenie do magistrali kilku i więcej układów komunikujących się ze sobą po szynie I2C. Obwody sterujące liniami SCL i SDA maja taka samą budowę i są przystosowane do pracy dwukierunkowej. Rezystory Rp są niezbędne. Zygmunt Kubiak
10
Interfejsy synchroniczne I²C
Transmisja bitów – „0” jest sygnałem dominującym który wymusza stan linii Zygmunt Kubiak
11
Interfejsy synchroniczne I²C
Warunki Start i Stop Zygmunt Kubiak
12
Interfejsy synchroniczne I²C
Potwierdzenie transmisji bajta – potwierdza zawsze odbiorca (9-ty bit 0 - sygnał „0”) Zygmunt Kubiak
13
Interfejsy synchroniczne I²C
Procedura arbitrażu dwóch Master’ów Zygmunt Kubiak
14
Interfejsy synchroniczne I²C
Przykład kompletnego procesu transmisji danych Zygmunt Kubiak
15
Interfejsy synchroniczne I²C
Transmisja danych do modułu Slave Odczyt danych z modułu Slave Zygmunt Kubiak
16
Interfejsy synchroniczne I²C
Kombinowany transfer z powtórzonym warunkiem Startu (kierunek transferu zależy od wartości bitów R/W) Zygmunt Kubiak
17
Interfejsy synchroniczne I²C
Transfer kombinowany. Master przesyła dane do dwóch węzłów Slave, jednego z 7-bitowym adresem i drugiego z adresem 10-bitowym. Pierwszy bajt 10-bitowego adresu rozpoczyna się od charakterystycznego ciągu 11110 Zygmunt Kubiak
18
Interfejsy synchroniczne I²C
C8051F020 – SMBUS/I²C Zygmunt Kubiak
19
Interfejsy synchroniczne I²C
C8051F020 – SMBUS/I²C Master nadaje sekwencje danych Zygmunt Kubiak
20
Interfejsy synchroniczne I²C
C8051F020 – SMBUS/I²C Master odbiera sekwencje danych Zygmunt Kubiak
21
Interfejsy synchroniczne I²C
C8051F020 – SMBUS/I²C Slave nadaje dane Zygmunt Kubiak
22
Interfejsy synchroniczne I²C
C8051F020 – SMBUS/I²C Slave odbiera dane Zygmunt Kubiak
23
Interfejsy synchroniczne I²C
Przykład czujnik ciśnienia BMP180 Zygmunt Kubiak
24
Interfejsy synchroniczne I²C
Przykład czujnik ciśnienia BMP180 Zygmunt Kubiak
25
Interfejsy synchroniczne I²C
Przykład czujnik ciśnienia BMP180 Współczynniki kalibracyjne zapisane w EEPROM Zygmunt Kubiak
26
Interfejsy synchroniczne I²C
Przykład czujnik ciśnienia BMP180 Zygmunt Kubiak
27
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xAA + ACK - adres rejestru sterującego w BMP180 Starszy bajt rejestru 0xAA – parametr AC1 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0x1D + ACK - MSB 0x08 + NACK - LSB Zygmunt Kubiak
28
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xAC + ACK - adres rejestru sterującego w BMP180 Starszy bajt rejestru 0xAC – parametr AC2 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0xFC + ACK - MSB 0x4F + NACK - LSB Zygmunt Kubiak
29
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xAE + ACK - adres rejestru sterującego w BMP180 Starszy bajt rejestru 0xAE – parametr AC3 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0xCF + ACK - MSB 0x03 + NACK - LSB Zygmunt Kubiak
30
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xB2 + ACK - adres rejestru sterującego w BMP180 Starszy baj rejestru 0xB2 – parametr AC5 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0x61 + ACK - MSB 0xFA + NACK - LSB Zygmunt Kubiak
31
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xB4 + ACK - adres rejestru sterującego w BMP180 Starszy baj rejestru 0xB4 – parametr AC6 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0x3D + ACK - MSB 0xC8 + NACK - LSB Zygmunt Kubiak
32
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xB6 + ACK - adres rejestru sterującego w BMP180 Starszy baj rejestru 0xB6 – parametr B1 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0x19 + ACK - MSB 0x73 + NACK - LSB Zygmunt Kubiak
33
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xB8 + ACK - adres rejestru sterującego w BMP180 Starszy baj rejestru 0xB8 – parametr B2 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0x00 + ACK - MSB 0x1B + NACK - LSB Zygmunt Kubiak
34
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xBA + ACK - adres rejestru sterującego w BMP180 Starszy baj rejestru 0xBA – parametr MB 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0x80 + ACK - MSB 0x00 + NACK - LSB Zygmunt Kubiak
35
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xBC + ACK - adres rejestru sterującego w BMP180 Starszy baj rejestru 0xBC – parametr MC 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0xD1 + ACK - MSB 0xF6 + NACK - LSB Zygmunt Kubiak
36
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 0xEE (0x77 + bit R/W = 0 + ACK) – adres BMP180, zapis 0xBE + ACK - adres rejestru sterującego w BMP180 Starszy baj rejestru 0xBE – parametr MD 0xEF (0x77 + bit R/W = 0 + ACK) – adres BMP180, odczyt 0x0A + ACK - MSB 0xD2 + NACK – LSB Zygmunt Kubiak
37
Interfejsy synchroniczne I²C
Przykład transmisji I²C - konfiguracja BMP180 Przedstawiona powyżej korespondencja między mikrokontrolerem a sensorem BMP180 dotyczy odczytu współczynników kalibracyjnych (AC1, AC2, AC3, AC4, AC5, AC6, B1, MB, MC, MD), które są niezbędne dla obliczenia rzeczywistej wartości temperatury i ciśnienia Cała sekwencja podzielona jest na pakiety zaczynające się od adresu układu BMP180 i zakończone bitem NACK (wybór adresu BMP180, wybór adresu rejestru zawierającego współczynnik kalibracyjny, odczyt współczynnika kalibracyjnego) Każdy pakiet załączonej wyżej sekwencji, odczytuje jeden współczynnik kalibracyjny Zygmunt Kubiak
38
Interfejsy synchroniczne
SPI Zygmunt Kubiak
39
Interfejsy synchroniczne SPI
SPI (ang. Serial Peripheral Interface) Opracowana w firmie Motorola Interfejs SPI umożliwia szybkie synchroniczne przesyłanie danych pomiędzy mikrokontrolerami, a także układami zewnętrznymi Transmisja odbywa się w trybie Master-Slave Zygmunt Kubiak
40
Interfejsy synchroniczne SPI
Sygnały sterujące MISO (Master In Slave Out) – linia wejściowa danych dla układu Master MOSI (Master Out Slave In) - linia wejściowa danych dla układu Slave SS (Slave Select) – linia wyboru trybu pracy układu, odpowiednik sygnału CS (Chip Select) SCK (Serial Data Clock) – linia zegara Uwaga! czasem spotyka się inne oznaczenia sygnałów linii danych – inna interpretacja SDI albo DIN – niezależnie od układu, wejście danych SDO lub DOUT – niezależnie od układu, wyjście danych Zygmunt Kubiak
41
Interfejsy synchroniczne SPI
Kierunki sygnałów dla układów Master i Slave Uwaga! Sygnał CLK generowany jest zawsze przez układ Master Mikrokontrolery mogą być konfigurowane zarówno do pracy w funkcji Master jak i Slave Linia Układ Master Układ Slave MOSI Określa użytkownik Wejście MISO SCK /SS Zygmunt Kubiak
42
Interfejsy synchroniczne SPI
Funkcje wyprowadzenia /SS Uwaga! Sygnał CLK generowany jest zawsze przez układ Master Mikrokontrolery mogą być konfigurowane zarówno do pracy w funkcji Master jak i Slave Tryb Konfiguracja /SS Stan linii /SS Opis Slave Zawsze H Slave nieaktywny wejście L Slave aktywny Wejście Master aktywny Master Master nieaktywny Wyjście Zygmunt Kubiak
43
Interfejsy synchroniczne SPI
Transakcja wymiany danych inicjowana jest zawsze przez układ Master, który również jest źródłem sygnału CLK Linie wyjścia danych muszą być w programie ustawione ręcznie W układzie Slave gdy sygnał /SS=1, wszystkie linie SPI są wejściami Zygmunt Kubiak
44
Interfejsy synchroniczne SPI
Magistrala SPI z jednym układem Master i wieloma układami Slave Zygmunt Kubiak
45
Interfejsy synchroniczne SPI
Aby transmisja pomiędzy mikrokontrolerem, a urządzeniem peryferyjnym przebiegała prawidłowo muszą być spełnione następujące warunki: zachowanie jednakowej długość danej (najczęściej 8 bitów lub wielokrotność tej liczby), taka sama kolejność wysyłania bitów (najczęściej od MSB do LSB, niektóre mikrokontrolery mają możliwość programowej zmiany tej kolejności), zgodna polaryzacja i faza sygnału zegarowego (w SPI dane wpisywane są jednym zboczem a przesuwane drugim) Zygmunt Kubiak
46
Interfejsy synchroniczne SPI
Przebiegi SPI dla mikrokontrolerów ATmega dla parametru określającego fazę zegara CPHA = 0 Zygmunt Kubiak
47
Interfejsy synchroniczne SPI
Przebiegi Blok SPI mikrokontrolera ATmega Zygmunt Kubiak
48
Interfejsy synchroniczne SPI
Przykład kodu dla mikrokontrolerów ATmega Zygmunt Kubiak
49
Interfejsy synchroniczne SPI
Przykład kodu dla mikrokontrolerów ATmega Zygmunt Kubiak
50
Interfejsy synchroniczne SPI
Magistrala Microwire Magistrala synchroniczna podobna do SPI, firmowana przez National Semiconductor Sygnały SI (Serial Input Line) – wejście rejestru przesuwającego SO (Serial Output Line) – wyjście rejestru przesuwającego SK (Serial Clock) - zegar /CS (Chip Select) – linia wyboru układu Zygmunt Kubiak
51
Interfejsy synchroniczne SPI
Magistrala Microwire Schemat bloku Microwire Zygmunt Kubiak
52
Interfejsy synchroniczne SPI
Magistrala Microwire Przykład obsługi pamięci EEPROM NMC93C06 (National Semiconductor) Zygmunt Kubiak
53
Interfejsy synchroniczne SPI
Magistrala Microwire Przykład konfiguracja (National Semiconductor) Zygmunt Kubiak
54
Interfejsy synchroniczne SPI
Magistrala Microwire Przykładowe przebiegi na magistrali Microwire (możliwość konfiguracji aktywnego zbocza i fazy sygnału zegarowego SK) Zygmunt Kubiak
55
Interfejsy synchroniczne SPI
Przykład C8051F020 Zygmunt Kubiak
56
Interfejsy synchroniczne SPI
Przykład C8051F020 Zygmunt Kubiak
57
Interfejsy synchroniczne SPI
Przykład C8051F020 Zygmunt Kubiak
58
Interfejsy synchroniczne SPI
Przykład C8051F020 Zygmunt Kubiak
59
Interfejsy synchroniczne SPI
Przykład – moduł radiowy nRF24L01P Zygmunt Kubiak
60
Interfejsy synchroniczne SPI
Przykład – moduł radiowy nRF24L01P Zygmunt Kubiak
61
Interfejsy synchroniczne SPI
Przykład – moduł radiowy nRF24L01P, Rej. 0x06 Zygmunt Kubiak
62
Interfejsy synchroniczne SPI
Przykład – moduł radiowy nRF24L01P Operacje odczytu i zapisu Zygmunt Kubiak
63
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); MOSI: 0x24, 0x4F MISO: 0x0E, 0x00 MOSI: 0x06, 0xFF MISO: 0x0E, 0x07 Zygmunt Kubiak
64
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); MOSI: 0x26, 0x07 MISO: 0x0E, 0x00 MOSI: 0x06, 0xFF MISO: 0x0E, 0x07 Zygmunt Kubiak
65
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); MOSI: 0x26, 0x27 MISO: 0x0E, 0x00 MOSI: 0x06, 0xFF MISO: 0x0E, 0x27 Zygmunt Kubiak
66
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); MOSI: 0x26, 0x27 MISO: 0x0E, 0x00 MOSI: 0x26, 0x07 Zygmunt Kubiak
67
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); MOSI: 0x06, 0xFF MISO: 0x0E, 0x07 MOSI: 0x00, 0xFF MISO: 0x0E, 0x0C Zygmunt Kubiak
68
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); MOSI: 0x20, 0x0C MISO: 0x0E, 0x00 MOSI: 0x3C, 0x00 Zygmunt Kubiak
69
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); MOSI: 0x27, 0x70 MISO: 0x0E, 0x00 MOSI: 0x22, 0x4C Zygmunt Kubiak
70
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); MOSI: 0xE2 MISO: 0x0E MOSI: 0xE1 Zygmunt Kubiak
71
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); Sekwencja generowana przy wywołaniu funkcji radio.begin() dotyczy konfiguracji układu nRF24L01P MOSI: 0x24, 0x4F; 0x06, 0xFF; 0x26, 0x07; 0x06, 0xFF; x26, 0x27; 0x06, 0xFF; 0x26, 0x27; 0x26, 0x07; 0x06, 0xFF; x00, 0xFF; 0x20, 0x0C; 0x3C, 0x00; 0x27, 0x70; 0x22, 0x4C; xE2; 0xE1 Cała sekwencja z reguły podzielona jest na grupy 2-bajtowe Pierwszy bajt jest zawsze komendą, drugi to dana Zygmunt Kubiak
72
Interfejsy synchroniczne SPI
Przykład – nRF24L01P, radio.begin(); Sekwencja generowana przy wywołaniu funkcji radio.begin() dotyczy konfiguracji układu nRF24L01P MOSI: 0x24, 0x4F; 0x06, 0xFF; 0x26, 0x07; 0x06, 0xFF; x26, 0x27; 0x06, 0xFF; 0x26, 0x27; 0x26, 0x07; 0x06, 0xFF; x00, 0xFF; 0x20, 0x0C; 0x3C, 0x00; 0x27, 0x70; 0x22, 0x4C; xE2; 0xE1 Np. 0x24 (001A AAAA) – oznacza W_REGISTER, A – adr. Rejestru Adr. Rej. – SETUP_RETR (Setup of Autom.Retransmission) Dana 0x4F ( ) – bity 7:4 ARD (Auto Retransmit Delay) bity 3:0 ARC (Auto Retransmit Count) Opóźnienie automatycznej retransmisji 1250μs oraz do 15 retransmisji Zygmunt Kubiak
73
Dziękuję Zygmunt Kubiak
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.