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