I2C (TWI) – sériová komunikace po dvou vodičích s adresací

Jako další uvádím sběrnici I2C , někdy nazývanou také jako TWI (two-wire), která je běžně používaná pro připojení až 128mi zařízení po dvou vodičích (obr. 1). Sběrnice je obousměrná, ale v jeden okamžik může vysílat pouze jedno zařízení (poloviční duplex). Oba vodiče musí být připojeny přes rezistor na napájecí napětí (tzv. pull-up rezistory), tím se předejde poškození vysílacích a přijímacích obvodů při kolizi a poškodí se pouze úrovně signálů.


twi-blok

Přenos dat

Na linku je připojen jeden master (řídicí) a několik slave (podřízených) obvodů. Pro poslání datového rámce některému slave zařízení, master vyšle v prvních 7mi bitech adresu slave zařízení, v osmém bitu log. 1 a čeká na příjem potvrzovacího bitu ACK. Poté master vyšle data po lince SDA. V případě, že je potřeba získat data ze slave zařízení, pak master opět pošle adresu, ale v osmém bitu pošle log. 0, aby slave poznal, že má volno a může poslat data. Synchronizace přenosu dat probíhá impulsy na lince SCL o frekvenci 10 kHz až 400 kHz. Průběh dat na linkách SDA a SCL je zřejmý z obrázku 2.
twi-signal

Některé vlastnosti I2C u mikrokontroléru ATmega32

  • Jednoduché, výkonné a přizpůsobitelné rozhraní.
  • Podpora práce v režimu master nebo slave.
  • Mikrokontrolér může pracovat jako vysílač i přijímač.
  • 7bitový adresovací prostor dovolující rozlišit až 128 adres podřízených obvodů.
  • Přenosová rychlost až 400 kHz.
  • TWI obvodem.Možnost probuzení mikrokontroléru z režimu spánku v případě adresace vnějším

Nastavení a popis registrů I2C u mikrokontroléru ATmega32

  • TWBR: Registr pro nastavení přenosové rychlosti podle vzorce (1.1).
  • TWCR: Nastavuje a inicializuje přenos (tabulka 1).
  • TWSR: Uchovává informace o stavu přenosu a nastavuje předděličku rychlosti (tabulka 2).
  • TWDR: Datový registr.
  • TWAR: Adresa slave zařízení.

Vzorec pro výpočet hodnoty registru TWBR

fCLK = fOSC/(16+2*TWBR *4TWPS)     (vzorec 1.1)

kde fCLK je frekvence synchronizačních impulsů na lince CLK, fOSC je frekvence krystalu a TWPS je hodnota nastavení předděličky.

Tabulka 1: Popis jednotlivých bitů registru TWCR

BIT TWCR
7 TWINT příznak přerušení
6 TWEA povoluje potvrzování ACK
5 TWSTA generuje START stav
4 TWSTO generuje STOP stav
3 TWWC detekuje kolizi zápisu
2 TWEN povuleje I2C
1 nepoužito
0 TWIE povoluje přerušení sběrnice

Tabulka 2: Nastavení předděličky u I2C

TWPS1 TWPS0 hodnota předděličky
0 0 1
0 1 4
1 0 16
1 1 64

 

 

Připravuje se:

  1. Knihovna I2C ke stažení pro ATMEL AVR
  2. Knihovna I2C ke stažení pro STM32F4 Discovery

 

{jcomments on}

Komentovat

Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena *

*

*