Systemy wbudowane - wykład 8 Przemek Błaśkiewicz 17 maja 2017 1 / 82 Dla zabicia czasu Bluetooth Terminal HC-05, urządzenie...:8f:66, kod 1234 2 / 82 I 2 C aka IIC aka TWI Inter-Integrated Circuit 3 / 82 I 2 C aka IIC aka TWI Inter-Integrated Circuit używa dwóch linii przesyłowych i wykorzystuje architekturę master/slave 4 / 82
I 2 C aka IIC aka TWI Inter-Integrated Circuit używa dwóch linii przesyłowych i wykorzystuje architekturę master/slave jednostki mają adres (7 lub 10 bitów) 5 / 82 I 2 C aka IIC aka TWI Inter-Integrated Circuit używa dwóch linii przesyłowych i wykorzystuje architekturę master/slave jednostki mają adres (7 lub 10 bitów) typowe transfery 100 kbit/s (standard), 10 kbit/s (low speed), ale można używać dowolnych częstotliwości (do 3.4Mbps w ostatniej specyfikacji) 6 / 82 I 2 C aka IIC aka TWI Inter-Integrated Circuit używa dwóch linii przesyłowych i wykorzystuje architekturę master/slave jednostki mają adres (7 lub 10 bitów) typowe transfery 100 kbit/s (standard), 10 kbit/s (low speed), ale można używać dowolnych częstotliwości (do 3.4Mbps w ostatniej specyfikacji) liczba urządzeń na magistrali ograniczona adresacją i pojemnością (elektryczną) linii 7 / 82 I 2 C aka IIC aka TWI Inter-Integrated Circuit używa dwóch linii przesyłowych i wykorzystuje architekturę master/slave jednostki mają adres (7 lub 10 bitów) typowe transfery 100 kbit/s (standard), 10 kbit/s (low speed), ale można używać dowolnych częstotliwości (do 3.4Mbps w ostatniej specyfikacji) liczba urządzeń na magistrali ograniczona adresacją i pojemnością (elektryczną) linii 8 / 82
I2C - schemat komunikacji 1 Master wysyła bit START oraz 7 bitów adresu slave 9 / 82 I2C - schemat komunikacji 1 Master wysyła bit START oraz 7 bitów adresu slave 2 Master wysyła bit 0 lub 1 (chęć pisania lub czytania slave) 10 / 82 I2C - schemat komunikacji 1 Master wysyła bit START oraz 7 bitów adresu slave 2 Master wysyła bit 0 lub 1 (chęć pisania lub czytania slave) 3 Slave odpowiada (jeśli jest) bitem ACK 11 / 82 I2C - schemat komunikacji 1 Master wysyła bit START oraz 7 bitów adresu slave 2 Master wysyła bit 0 lub 1 (chęć pisania lub czytania slave) 3 Slave odpowiada (jeśli jest) bitem ACK 4 Dane są przesyłane (MSB najpierw) 12 / 82
I2C timing 13 / 82 I2C timing bit START : SCL Hi oraz SDA 0 1; 14 / 82 I2C timing bit START : SCL Hi oraz SDA 0 1; bit STOP : SCL Hi oraz SDA 1 0 15 / 82 I2C timing bit START : SCL Hi oraz SDA 0 1; bit STOP : SCL Hi oraz SDA 1 0 (przy transmisji danych) SDA jest ustalone przy SCL Hi 16 / 82
I2C timing bit START : SCL Hi oraz SDA 0 1; bit STOP : SCL Hi oraz SDA 1 0 (przy transmisji danych) SDA jest ustalone przy SCL Hi powtórny START: bit START powtórzony po danych, bez STOP 17 / 82 I2C timing bit START : SCL Hi oraz SDA 0 1; bit STOP : SCL Hi oraz SDA 1 0 (przy transmisji danych) SDA jest ustalone przy SCL Hi powtórny START: bit START powtórzony po danych, bez STOP bit ACK : odbiorca wysyła bit 0 18 / 82 I2C timing bit START : SCL Hi oraz SDA 0 1; bit STOP : SCL Hi oraz SDA 1 0 (przy transmisji danych) SDA jest ustalone przy SCL Hi powtórny START: bit START powtórzony po danych, bez STOP bit ACK : odbiorca wysyła bit 0 bit NACK : odbiorca wysyła bit 1 (normalny stan na linii!) 19 / 82 I2C timing bit START : SCL Hi oraz SDA 0 1; bit STOP : SCL Hi oraz SDA 1 0 (przy transmisji danych) SDA jest ustalone przy SCL Hi powtórny START: bit START powtórzony po danych, bez STOP bit ACK : odbiorca wysyła bit 0 bit NACK : odbiorca wysyła bit 1 (normalny stan na linii!) gdy odbiorcą jest master: już nie chcę więcej czytać od slave 20 / 82
I2C timing bit START : SCL Hi oraz SDA 0 1; bit STOP : SCL Hi oraz SDA 1 0 (przy transmisji danych) SDA jest ustalone przy SCL Hi powtórny START: bit START powtórzony po danych, bez STOP bit ACK : odbiorca wysyła bit 0 bit NACK : odbiorca wysyła bit 1 (normalny stan na linii!) gdy odbiorcą jest master: już nie chcę więcej czytać od slave gdy odbiorcą jest slave: nie mogę czytać, nie ma mnie, nie rozumiem; 21 / 82 I2C - fizyczność na liniach SCL i SDA zastosowano rezystory pull-up 22 / 82 I2C - fizyczność na liniach SCL i SDA zastosowano rezystory pull-up V dd to typowo 3.3 lub 5V 23 / 82 I2C - fizyczność na liniach SCL i SDA zastosowano rezystory pull-up V dd to typowo 3.3 lub 5V linia, na której nikt nie nadaje (pływająca) ma V dd 24 / 82
I2C - fizyczność na liniach SCL i SDA zastosowano rezystory pull-up V dd to typowo 3.3 lub 5V linia, na której nikt nie nadaje (pływająca) ma V dd dla SCL - clock stretching, dla SDA - arbitraż 25 / 82 I2C - fizyczność na liniach SCL i SDA zastosowano rezystory pull-up V dd to typowo 3.3 lub 5V linia, na której nikt nie nadaje (pływająca) ma V dd dla SCL - clock stretching, dla SDA - arbitraż slave może przedłużyć SCL na Lo 26 / 82 I2C - fizyczność na liniach SCL i SDA zastosowano rezystory pull-up V dd to typowo 3.3 lub 5V linia, na której nikt nie nadaje (pływająca) ma V dd dla SCL - clock stretching, dla SDA - arbitraż slave może przedłużyć SCL na Lo nadające urządzenia monitorują czy SDA jest takie, jak się spodziewają 27 / 82 CAN controller area network 28 / 82
CAN controller area network 29 / 82 CAN - specyfikacja transmisja typu broadcast (semi dupleks) - multi-master 30 / 82 CAN - specyfikacja transmisja typu broadcast (semi dupleks) - multi-master transmisja asynchroniczna, szeregowa, oparta na ramkach 31 / 82 CAN - specyfikacja transmisja typu broadcast (semi dupleks) - multi-master transmisja asynchroniczna, szeregowa, oparta na ramkach CSMA/CA - carrier sense multiple acces / collision avoidance 32 / 82
CAN - specyfikacja transmisja typu broadcast (semi dupleks) - multi-master transmisja asynchroniczna, szeregowa, oparta na ramkach CSMA/CA - carrier sense multiple acces / collision avoidance przepustowość do 1Mbps na odległość do 40m (ok. 50% zawartości ramki to dane) 33 / 82 CAN - specyfikacja transmisja typu broadcast (semi dupleks) - multi-master transmisja asynchroniczna, szeregowa, oparta na ramkach CSMA/CA - carrier sense multiple acces / collision avoidance przepustowość do 1Mbps na odległość do 40m (ok. 50% zawartości ramki to dane) standard CAN definiuje warstwę fizyczną i łącza danych 34 / 82 CAN - specyfikacja transmisja typu broadcast (semi dupleks) - multi-master transmisja asynchroniczna, szeregowa, oparta na ramkach CSMA/CA - carrier sense multiple acces / collision avoidance przepustowość do 1Mbps na odległość do 40m (ok. 50% zawartości ramki to dane) standard CAN definiuje warstwę fizyczną i łącza danych połączenie logiczne (identyfikatory + dane ) 35 / 82 CAN - specyfikacja transmisja typu broadcast (semi dupleks) - multi-master transmisja asynchroniczna, szeregowa, oparta na ramkach CSMA/CA - carrier sense multiple acces / collision avoidance przepustowość do 1Mbps na odległość do 40m (ok. 50% zawartości ramki to dane) standard CAN definiuje warstwę fizyczną i łącza danych połączenie logiczne (identyfikatory + dane ) kontrola dostępu do medium (MAC) 36 / 82
CAN - specyfikacja transmisja typu broadcast (semi dupleks) - multi-master transmisja asynchroniczna, szeregowa, oparta na ramkach CSMA/CA - carrier sense multiple acces / collision avoidance przepustowość do 1Mbps na odległość do 40m (ok. 50% zawartości ramki to dane) standard CAN definiuje warstwę fizyczną i łącza danych połączenie logiczne (identyfikatory + dane ) kontrola dostępu do medium (MAC) low/high speed CAN 37 / 82 CAN fizyczność i łącze danych Warstwa fizyczna Definiuje poziomy sygnałów (napięcia) oraz jaki jest stan dominujący. Określa sposób kodowania poszczególnych bitów oraz określa synchronizację magistrali. 38 / 82 CAN fizyczność i łącze danych Warstwa fizyczna Definiuje poziomy sygnałów (napięcia) oraz jaki jest stan dominujący. Określa sposób kodowania poszczególnych bitów oraz określa synchronizację magistrali. Warstwa łącza danych Definiuje strukturę ramki, sposoby sygnalizacji błędów i mechanizm MAC (dostępu do medium). 39 / 82 CAN - fizycznie wymagany jest MAC na poziomie bitowym 40 / 82
CAN - fizycznie wymagany jest MAC na poziomie bitowym bity dominujące i recesywne 41 / 82 CAN - fizycznie wymagany jest MAC na poziomie bitowym bity dominujące i recesywne mechaniczne aspekty (wtyki, medium) nie określone w standardzie 42 / 82 CAN - fizycznie często: wymagany jest MAC na poziomie bitowym bity dominujące i recesywne mechaniczne aspekty (wtyki, medium) nie określone w standardzie 43 / 82 CAN - fizycznie często: wymagany jest MAC na poziomie bitowym bity dominujące i recesywne mechaniczne aspekty (wtyki, medium) nie określone w standardzie 9-cio pinowy wtyk D-sub: CAN-Lo, GND, CAN-Hi, CAN-V+ 44 / 82
CAN - fizycznie często: wymagany jest MAC na poziomie bitowym bity dominujące i recesywne mechaniczne aspekty (wtyki, medium) nie określone w standardzie 9-cio pinowy wtyk D-sub: CAN-Lo, GND, CAN-Hi, CAN-V+ wspólna szyna zasilająca +5V (3.3V opcjonalnie) oraz GND 45 / 82 CAN - magistrala 46 / 82 CAN - magistrala Sygnalizacja różnicowa Sygnał "bez niczego"jest utrzymywany w okolicach 2.5V. CAN-Hi jest podciągany o 1V w górę, a CAN-Lo o 1V w dół, co daje 2V różnicy między parą linii sygnałowych. 47 / 82 CAN - magistrala Steve Corrigan: Introduction to the Controller Area Network (CAN), SLOA101A, www.ti.com 48 / 82
CAN - arbitraż magistrali 49 / 82 CAN - arbitraż magistrali 50 / 82 CAN - mechanizmy wykrywania błędów Poziom wiadomości: 51 / 82 CAN - mechanizmy wykrywania błędów Poziom wiadomości: CRC (15 bitów + 1 bit odstępu) 52 / 82
CAN - mechanizmy wykrywania błędów Poziom wiadomości: CRC (15 bitów + 1 bit odstępu) ACK (1 bit potwierdzenia + 1 bit odstępu) 53 / 82 CAN - mechanizmy wykrywania błędów Poziom wiadomości: CRC (15 bitów + 1 bit odstępu) ACK (1 bit potwierdzenia + 1 bit odstępu) bity recesywne: CRC-del ACK-del, SOF, EOF 54 / 82 CAN - mechanizmy wykrywania błędów Poziom wiadomości: Poziom bitów: CRC (15 bitów + 1 bit odstępu) ACK (1 bit potwierdzenia + 1 bit odstępu) bity recesywne: CRC-del ACK-del, SOF, EOF 55 / 82 CAN - mechanizmy wykrywania błędów Poziom wiadomości: Poziom bitów: CRC (15 bitów + 1 bit odstępu) ACK (1 bit potwierdzenia + 1 bit odstępu) bity recesywne: CRC-del ACK-del, SOF, EOF monitorowanie magistrali danych (! ACK, adres) 56 / 82
CAN - mechanizmy wykrywania błędów Poziom wiadomości: Poziom bitów: CRC (15 bitów + 1 bit odstępu) ACK (1 bit potwierdzenia + 1 bit odstępu) bity recesywne: CRC-del ACK-del, SOF, EOF monitorowanie magistrali danych (! ACK, adres) bit stuffing 57 / 82 CAN - łącze danych Typy ramek: danych faktycznie przesyła dane 58 / 82 CAN - łącze danych Typy ramek: danych faktycznie przesyła dane zdalnego wywołania żądanie przesłania danych 59 / 82 CAN - łącze danych Typy ramek: danych faktycznie przesyła dane zdalnego wywołania żądanie przesłania danych błędów w przypadku wystąpienia błędu 60 / 82
CAN - łącze danych Typy ramek: danych faktycznie przesyła dane zdalnego wywołania żądanie przesłania danych błędów w przypadku wystąpienia błędu przepełnienia do uzyskania opóźnienia między ramką danych lub zdalnego wywołania 61 / 82 62 / 82 Format standard RTR remote transmission request 0 dla ramek danych, 1 dla zdalnego wywołania IDE id extension 0 dla ramek formatu podstawowego, 1 dla rozszerzonego DLC data length długość danych (0-8 bajtów) CRC-del recesywny bit (2) ACK-slot odbiorca ma szansę wysłać 0 (dominujący), bo nadawca wysyła 1 (recesywny) ACK-del recesywny bit (1) EOF end of frame - recesywny bit (1) 63 / 82 Format extended SRR substitute remote request recesywny bit (1) IDE identifier extension bit recesywny bit (1) 64 / 82
Ramka zdalna RTR = 1 przegrywa arbitraż kiedy jednocześnie jest ramka danych z tym samym identyfikatorem 65 / 82 Ramka błędu Składa się z 6-12 bitów recesywnych i/lub dominujących (ERROR FLAG) oraz 8 recesywnych (ERROR DELIMITER). Bity dominujące (dla ERROR FLAG) wysyła stacja będąca aktywną (tj. dla której nie określono błędnego działania). Bity recesywne wysyła stacja w stanie passive error. 66 / 82 Error confinement 67 / 82 Error confinement Każde urządzenie ma liczniki TxE, RxE (błędy przy nadawaniu, odbiorze). 68 / 82
Error confinement Każde urządzenie ma liczniki TxE, RxE (błędy przy nadawaniu, odbiorze). 1 błąd przy nadawaniu TxE += 8 (TxE- - jeśli OK) 69 / 82 Error confinement Każde urządzenie ma liczniki TxE, RxE (błędy przy nadawaniu, odbiorze). 1 błąd przy nadawaniu TxE += 8 (TxE- - jeśli OK) 2 błąd przy odbiorze RxE += 1 (RxE- - jeśli OK) 70 / 82 Error confinement Każde urządzenie ma liczniki TxE, RxE (błędy przy nadawaniu, odbiorze). 1 błąd przy nadawaniu TxE += 8 (TxE- - jeśli OK) 2 błąd przy odbiorze RxE += 1 (RxE- - jeśli OK) 3 TxE > 127 lub RxE > 127 passive error state 71 / 82 Error confinement Każde urządzenie ma liczniki TxE, RxE (błędy przy nadawaniu, odbiorze). 1 błąd przy nadawaniu TxE += 8 (TxE- - jeśli OK) 2 błąd przy odbiorze RxE += 1 (RxE- - jeśli OK) 3 TxE > 127 lub RxE > 127 passive error state 4 TxE > 255 lub RxE > 255 bus-off state 72 / 82
Error confinement Każde urządzenie ma liczniki TxE, RxE (błędy przy nadawaniu, odbiorze). 1 błąd przy nadawaniu TxE += 8 (TxE- - jeśli OK) 2 błąd przy odbiorze RxE += 1 (RxE- - jeśli OK) 3 TxE > 127 lub RxE > 127 passive error state 4 TxE > 255 lub RxE > 255 bus-off state 5 RESET oraz poprawnie przesłano 128 x 11 bitów active error state 73 / 82 Bit stuffing Po każdych 5 takich samych bitach automatycznie wtawiany jest bit przeciwny: 74 / 82 Bit stuffing Po każdych 5 takich samych bitach automatycznie wtawiany jest bit przeciwny: by utrzymać synchronizację między węzłami 75 / 82 Bit stuffing Po każdych 5 takich samych bitach automatycznie wtawiany jest bit przeciwny: by utrzymać synchronizację między węzłami nie dotyczy pół CRC, ACK 76 / 82
Bit stuffing Po każdych 5 takich samych bitach automatycznie wtawiany jest bit przeciwny: by utrzymać synchronizację między węzłami nie dotyczy pół CRC, ACK 6 taki sam bit błąd aktywnej stacji 77 / 82 Demonstracja HC-05 (HC-06) moduł przekaźnika 78 / 82 Demonstracja schemat 79 / 82 Do zapamiętania I2C: linie, sygnały, arbitraż, clock-stretching 80 / 82
Do zapamiętania I2C: linie, sygnały, arbitraż, clock-stretching CAN: ramki, arbitraż, bit-stuffing, przestrzeń adresowa 81 / 82 Do zapamiętania I2C: linie, sygnały, arbitraż, clock-stretching CAN: ramki, arbitraż, bit-stuffing, przestrzeń adresowa i inne... 82 / 82