|
I2C
MULTIPLEKS SA MIKROKONTROLEROM |
Šema kola koje objašnjava
primenu I2C mutipleksa prikazana je na donjoj slici.
U datom primeru vrednosti elemenata su sledeće: R1 – 10k, R2
– 330, Q-8MHz i Cx – 22pF.
Primenom kola PCA9548A koje je 8
kanalno I2C multipleks kolo omogućeno je da se na istoj adresi 0 nalaze serijski EEPROM-i 24C64.
Na ovaj način je moguće uključiti 8 I2C kola sa istom
adresom što se ponekad koristi u praksi. Unutrašnja struktura PCA9548 kola prikazana je na slici
dole.
Iz prikazane slike vidi se da ovo kolo ima tri adresna ulaza A0, A1 i A2 što znači da ih u jednoj konfiguraciji može biti
8. U našem primeru kolo ima adres 100
binaro tj. 4 decimalno. I2C
ulazni signal koji se multipleksira dolazi na SCL i SDA pinove, dok se
izlazni signal može pojaviti na nekom od 8 izlaza SD0,SC0 ... SD7, SC7. nReset pin standardno se nalazi na
visokom nivou a dovođenjem niskog nivoa kolo će biti resetovano. Kolo
se može napajati u širokom opsegu pd 1.8 od 5 Volti. Struktura I2C
adrese kola data je na slici dole.
Iz prikazane slike vidi se da je fabrički deo adrese 1110 tj. E heksa, dok je adresa kola u našem primeru 0100 binarno, pa će
I2C adresa za pristup kolu prilikom upisa biti $E4 ili prilikom čitanja $E5.
Način I2C komunikaicje sa PCA9548A kolom
prikazan je na slici dole.
Iz prikazane slike vidi se da se I2C komunikacija sa PCA9548A kolom svodi na slanje dva bajta i to: prvog koji
predstavlja slave adresu kola i bajta kontrolnog registra. Struktura kontrolnog
registra prikazana je na slici dole.
Kontrolni registar sadrži 8 bita. Bitovi koji su postavljeni na 1
automatski će selektovati date kanale tj. ulazni I2C signal SCL i SDA pojaviti će se na odabranim kanalima.
Prilikom upisa podataka u serijske EEPROM-e treba selektovati kanal prvog
pa drugog kola pre upisa podataka u serijski EEPROM što je dato u primeru
koji sledi.
'Primer
programa sa I2C multipleksiranjem symbol SCL =
PORTC.3 ' Pin SCL signala symbol SDA =
PORTC.4 ' Pin SDA signala Adr var
word ' Adresa u koju se
upisuje u serijski EEPROM Kanal Var
byte ' Kontrolni registar
PCA Podatak Var
byte ' Podatak za upis u serijski EEPROM . . . Adr = 0 ' Adresa 0 za upis u
serijski EEPROM Podatak =
205 ' Podatak za
upis Kanal = 1 ' Odaberi prvi kanal I2CWRITE SDA,
SCL, $E4, [Kanal] ' Selektuj prvi kanal Pause 10 ' Sacekaj 10uS I2CWRITE SDA,
SCL, $A0, Adr,[Podatak] 'Upisi u prvi serijski EEPROM Pause 10 ' Sacekaj 10uS Kanal = 2 ' Odaberi drugi kanal I2CWRITE SDA,
SCL, $E4, [Kanal] ' Selektuj drugi kanal Pause 10 ' Sacekaj 10uS I2CWRITE SDA,
SCL, $A0, Adr,[Podatak] 'Upisi u drugi serijski EEPROM Pause 10 ' Sacekaj 10uS . . . End ' Kraj programa |
http://vojo.milanovic.org
© Copyright, 2007 Milanović Vojo
All right reserved