avr_twiobsluga.pdf

(717 KB) Pobierz
Microsoft Word - i2c osbluga.doc
Interfejs I 2 C Î Cezary Klimasz
sss
1
103538839.005.png 103538839.006.png
Interfejs I 2 C Î Cezary Klimasz
Spis tre Ļ ci
1. Przedstawienie standardu I 2 C ........................................................... str. 3
2. Wykorzystanie TWI ........................................................................... str. 4
- opis rejestrów TWI ........................................................................ str. 8
- korzystanie z two-wire serial interface ........................................ str. 10
3. Pami ħę EEPROM 24C16 ................................................................... str. 21
4. Obsługa pami ħ ci EEPROM w j ħ zyku C ........................................... str. 23
- program pierwszy ......................................................................... str. 23
- program drugi ............................................................................... str. 26
5. Podsumowanie .................................................................................... str. 32
6. Bibliografia .......................................................................................... str. 32
2
 
Interfejs I 2 C Î Cezary Klimasz
WPROWADZENIE
IčC Î szeregowa, dwukierunkowa magistrala sþuŇĢca do przesyþania danych w urzĢdzeniach
elektronicznych. Zostaþa opracowana przez firmħ Philips na poczĢtku lat 80. Znana rwnieŇ
pod akronimem IIC, ktrego angielskie rozwiniħcie Inter-Intergrated Circuit oznacza
"poĻredniczĢcy pomiħdzy ukþadami scalonymi". Standard IčC okreĻla dwie najniŇsze warstwy
modelu: warstwħ fizycznĢ i warstwħ þĢcza danych.
Jako, Ňe firma Philips jest wþaĻcicielem prawnym standardu I 2 C inne firmy uŇywajĢ rŇnych
nazw w odniesieniu do tego standardu. W wypadku mikrokontrolerw AVR, Atmel uŇywa
nazwy TWI (two-wire interface).
OPIS STANDARDU
Standard zostaþ opracowany na poczĢtku lat 80. (okreĻlany obecnie jako tryb standardowy
pracy) i cechowaþy go:
o
prħdkoĻę transmisji 100 kbps,
o
7-bitowa przestrzeı adresowa.
W kolejnych latach standard ten rozszerzano poprzez zwiħkszanie moŇliwych prħdkoĻci
transmisji, zmianħ zakresu tolerancji napiħcia (np. High Speed Mode Î 3,4Mbps, napiħcie
tolerancji w stanie wysokim: 2,3 Î 5,5 V).
IčC do transmisji wykorzystuje dwie dwukierunkowe linie: SDA (Serial Data Line) i SCL
(Serial Clock Line). Obydwie linie sĢ na staþe podciĢgniħte do Ņrdþa zasilania poprzez
rezystory podciĢgajĢce 1 . IčC uŇywa logiki dodatniej. Wszystkie nadajniki sĢ typu otwarty
kolektor lub otwarty dren, a wiħc na liniach wystħpuje tzw. iloczyn na drucie ("1" jest
recesywna, a "0" dominujĢce). Pozwala to na wykrywanie kolizji. KaŇde urzĢdzenie nadajĢc
"1" jednoczeĻnie sprawdza, czy na magistrali rzeczywiĻcie pojawiþ siħ stan wysoki. JeŇeli tak
nie jest, oznacza to, iŇ inne urzĢdzenie nadaje w tym samym czasie i urzĢdzenie zaprzestaje
nadawania.
Podstawowa wersja IčC zakþada istnienie tylko jednego urzĢdzenia, ktre moŇe inicjowaę
transmisjħ (master), ale dziħki istnieniu mechanizmu detekcji kolizji, moŇliwa jest praca w
trybie multi-master. PoniewaŇ dane nadawane sĢ w kolejnoĻci od najstarszego bitu do
najmþodszego, w przypadku jednoczesnego nadawania, urzĢdzenie nadajĢce adres o wyŇszym
numerze wycofa siħ pierwsze, co wynika z binarnego sposobu zapisywania liczb. Wystħpuje tu
zatem arbitraŇ ze staþym przydziaþem priorytetw, okreĻlonym przez adres urzĢdzenia typu
slave. UrzĢdzenia o niŇszych adresach majĢ wyŇszy priorytet od urzĢdzeı o adresach
wyŇszych.
Zmiana na linii danych podczas transmisji moŇe nastħpowaę jedynie, gdy linia zegara
znajduje siħ w stanie niskim. Nie dotyczy to specjalnych sytuacji: bitu startu i bitu stopu. Bit
startu ma miejsce, gdy linia danych zmienia swj stan z "1" na "0", podczas wysokiego stanu
linii zegara, co ma miejsce w momencie rozpoczynania kaŇdej transmisji danych. Po
zakoıczeniu transmisji generowany jest bit stopu, czyli przejĻcie linii danych w stan wysoki
przy wysokim stanie linii zegara. Standard zakþada magistralowe poþĢczenie urzĢdzeı.
DþugoĻę linii ograniczona jest jedynie jej maksymalnĢ pojemnoĻciĢ, ktra wynosi 400 pF.
1 tzw. rezystor pullup
3
103538839.007.png
Interfejs I 2 C Î Cezary Klimasz
o
INTERFEJS TWI 2
Gþwnymi cechami interfejsu TWI w mikrokontrolerach AVR jest:
o
prostota i elastycznoĻę interfejsu komunikacyjnego Î potrzebne tylko dwie linie,
o
moŇliwe operacje master/slave,
o
dualnoĻę ukþadw (zarwno nadajnik jak i odbiornik),
o
7-bitowy system adresowania pozwalajĢcy na zapisanie 128 rŇnych adresw,
o
wbudowany arbitraŇ,
o
prħdkoĻę transmisji z czħstotliwoĻciĢ 400kHz,
redukcja szumw.
DEFINICJA MAGISTRALI
Two-wire Serial Interface (TWI) jest idealnym sposobem transmisji pomiħdzy typowymi
aplikacjami mikrokontrolerowymi 3 . Protokþ TWI pozwala na podþĢczenie nawet 128 rŇnych
ukþadw, uŇywajĢc do tego jedynie dwch linii danych. Jednej dla sygnaþu zegarowego SCL,
drugiej linii danych SDA. Jedyne wymagania ze strony sprzħtowej to podciĢgniħcie tych linii
przez rezystory do zasilania. Wszystkie ukþady podþĢczone do magistrali majĢ indywidualne
adresy, mechanizm i system obsþugi magistrali umieszczony jest w protokole TWI. PoniŇej
przedstawiono schemat logiczny magistrali TWI.
2 Interfejs TWI jest odpowiednikiem interfejsu I 2 C (lub IIC). Odmienne nazwy wynikajĢ z praw autorskich firmy Philips do
nazwy I 2 C. Atmel uŇywa swojego nazewnictwa Î Two-wire serial interface (TWI).
3 okreĻlenie áidealnymÑ zostaþo zaczerpniħte z dokumentacji ATmela
4
o
103538839.001.png 103538839.002.png
Interfejs I 2 C Î Cezary Klimasz
TRANSMISJA DANYCH
WYGLġD RAMKI
KaŇdy bit danych wysyþany na magistralħ TWI jest zsynchronizowany z impulsem na linii
zegarowej. Poziom na linii danych musi byę stabilny podczas kiedy na linii danych jest stan
wysoki. Jedynym wyjĢtek stanowiĢ warunki generowania startu oraz zatrzymywania
transmisji.
PoniŇej przedstawiono rozwiĢzanie prawidþowe.
WARUNKI STARU I STOPU TRANSMISJI
Ukþad Master inicjalizuje i koıczy przesyþ danych. Transmisja jest inicjowana w momencie
kiedy Master wyda ŇĢdanie startu. Transmisja jest koıczona jeĻli master wyĻle odpowiedni
rozkaz na magistralħ. Pomiħdzy ŇĢdaniami startu i stopu, magistrala jest uwaŇana za zajħtĢ i
Ňaden inny master nie powinien prbowaę korzystaę z magistrali. Specjalny przypadek
wystħpuje gdy pojawiþo siħ nowe ŇĢdanie startu w trakcie trwania poprzednich ŇĢdaı. Taki
przypadek okreĻlany jest jako powtrzone ŇĢdanie startu i jest uŇywane w sytuacji kiedy
Master chciaþby rozpoczĢę nowĢ transmisjħ nie czekajĢc na zwolnienie magistrali. Po
powtrzonym starcie, magistrala uwaŇana jest za zajħtĢ dopki nie nastĢpi stop. START i
STOP sĢ sygnalizowane przez zmianħ poziomw na linii danych SDA kiedy linia SCL jest w
stanie wysokim. PoniŇszy diagram przedstawia omwione generowanie startu i stopu.
FORMAT ADRESU
Wszystkie adresy przesyþane magistralĢ TWI sĢ 9 bitowe. ZawierajĢ 7 bitowy adres, nastħpnie
jeden kontrolny bit READ/WRITE i jeden bit potwierdzajĢcy (tzw. acknowledge bit). JeĻli
ustawiony jest bit READ/WRITE (RW=1) operacja odczytywania jest wykonywana, w
przeciwnym przypadku operacja zapisywania powinna byę wykonana. Kiedy ukþad Slave
rozpozna, Ňe przesyþany adres jest jego adresem, powinien potwierdzię odbir poprzez
ustawienie linii SDA na stan niski w dziewiĢtym cyklu zegara (ACK 4 ). JeĻli adres SlaveÓa jest
zajħty lub z jakiĻ powodw nie moŇe odpowiedzieę na wezwanie Mastera, linia SDA powinna
byę pozostawiona w stanie wysokim w cyklu zegara ACK. Master moŇe wtedy wysþaę ŇĢdanie
STOP transmisji, lub powtrzyę START, aby rozpoczĢę nowĢ transmisjħ. Adres SlaveÓa oraz bit
READ/WRITE sĢ nazywane SLA+R lub SLA+W w odpowiednich przypadkach (w zaleŇnoĻci czy
zapis, czy odczyt).
Najstarszy bit (MSB) adresu jest wysyþany jako pierwszy. Adres SlaveÓa moŇe zostaę dowolnie
wybrany, ale trzeba pamiħtaę, Ňe adres 0000 000 jest zarezerwowany dla wywoþania
4 ang. ACKnowledge bit
5
103538839.003.png 103538839.004.png
Zgłoś jeśli naruszono regulamin